Код панелей PHP-Fusion 7 (подробный мануал) |
Обновлённый PHP-Fusion Bogatyr / Free CMS PHP-Fusion 7 Bogatyr / Код панелей PHP-Fusion 7 (подробный мануал)
Russian
Добавление прав доступа в код панели
В большинстве случаев удобнее задать права доступа на панель при добавлении панели в админке.
Однако чтобы по ошибке не забыть это сделать для административных панелей, надо именно прописать в саму панель права доступа.
Зарегистрированный пользователь
|
if (iMEMBER) {
...
}
|
Админ
|
if (iADMIN) {
...
}
|
СуперАдмин
|
if (iSUPERADMIN) {
...
}
|
СуперАдмин
|
if (iSUPERADMIN) {
...
}
|
Незарегистрированный пользователь
|
if (iGUEST) {
...
}
|
Где заданы дифайны прав
maincore_users_cookies.php
|
// User level, Admin Rights & User Group definitions
define("iGUEST", $userdata['user_level'] == 0 ? 1 : 0);
define("iMEMBER", $userdata['user_level'] >= 101 ? 1 : 0);
define("iADMIN", $userdata['user_level'] >= 102 ? 1 : 0);
define("iSUPERADMIN", $userdata['user_level'] == 103 ? 1 : 0);
define("iUSER", $userdata['user_level']);
define("iUSER_RIGHTS", $userdata['user_rights']);
define("iUSER_GROUPS", substr($userdata['user_groups'], 1));
|
В файле maincore_user_rights_func.php смотрите функции для работы с правами пользователя.
Пример задания прав доступа по пользовательским группам в коде:
submit_now.php
|
$free_groups = array(9999,9998);//free groups (1,5,7,29)
/*
RUS: Для определённых групп пользовталей разрешает сабмит без утверждения статей, новостей, ссылок и фотографий.
ENG: No approve for submit - you can select several groups of users, who not needed approve in submit.php (works with articles,news.links, and photos nice)
-- here you can choose the groops without confirmation.
101 = all users (not recommend); admins always have instant submit.
*/
//check
foreach ($free_groups as $group) {
if(checkgroup($group)){define('esFREEMEMBER',true);break;}
}
|
Если задан esFREEMEMBER - значит пользователю выводится соответствующий контент.
* * *
Добавление ссылок на CSS и JS файлы в <head> страницы
Для многих панелей и контентных страниц требуется добавление CSS и JS файлов в <head> страницы.
Например, CSS из папки плагина:
infusions/comments_management/comments_management.php
|
add_to_head("<link rel='stylesheet' href='comments.css' type='text/css' media='screen' />n");
|
Например, CSS из папки темы:
infusions/h_iflogo_userinfo_panel/h_iflogo_userinfo_panel.php
|
add_to_head("n<link rel='stylesheet' href='".THEME."h_iflogo_userinfo_panel.css' type='text/css' media='screen' />n");
|
Функции add_to_head() и add_to_footer() находятся в файле "includes/output_handling_include.php". И этот файл инклюдится в maincore.php.
Нужные для этих целей дифайны папок заданы тут
maincore_defines.php
|
define("INCLUDES", BASEDIR."includes/");
define("LOCALE", BASEDIR."locale/");
define("INFUSIONS", BASEDIR."infusions/");
define("THEMES", BASEDIR."themes/");
|
* * *
Внедрение в панели локалей
локали плагинов и панелей рекомендуется добавлять в папки /locale/ соответствующих плагинов и панелей.
/infusions/latest_images_panel/latest_images_panel.php
|
// Check if locale file is available matching the current site locale setting.
if (file_exists(INFUSIONS."latest_images_panel/locale/".$settings['locale'].".php")) {
// Load the locale file matching the current site locale setting.
include INFUSIONS."latest_images_panel/locale/".$settings['locale'].".php";
} else {
// Load the infusion's default locale file.
include INFUSIONS."latest_images_panel/locale/English.php";
}
|
* * *
Внедрение в панели функций, переменных и дифайнов плагинов
Панель плагина может отображаться как на страницах плагина (или контентного модуля), так и на любых других страницах.
Чтобы все функции, переменные и дифайны для панели были заданы, необходимо их вынести в отдельный инклюд плагина, который будет использоваться для всех панелей этого плагина и всех контентных страниц.
Например для панели "infusions/pagex-links_panel/pagex-links_panel.php" из 2 строчек
require_once INFUSIONS.'pagex_panel/func_pagex.php';
pagex_t_menu( $bloktype='t' );
|
нужна строка
require_once INFUSIONS.'pagex_panel/func_pagex.php';
|
так как в файле "infusions/pagex_panel/func_pagex.php" задаётся функция pagex_t_menu().
* * *
Как сделать чтобы панель отображалась только на определённой php-странице
if ($_SERVER['SCRIPT_URL']==BASEDIR."forum/viewforum.php") {
opentable("My panel");
echo "<p>Text</p>";
closetable();
}
|
* * *
Как сделать чтобы панели плагина отображались только на страницах плагина или контентного модуля
можно добавить такие строки в контентные страницы
define("PLUGIN_NAME", ".........."); // строка в начале файла
define("PAGE_NAME", ".........._.........."); // строка в начале файла или там, где начинается отображение страницы или категории в файлах типа articles.php, downloads.php
|
вместо ".........." свои названия
обязательно до строки
require_once THEMES."templates/header.php";
|
Например так:
forum
forum/index.php
|
define("PLUGIN_NAME", "forum");
define("PAGE_NAME", "forum_index");
|
forum/viewforum.php
|
define("PLUGIN_NAME", "forum");
define("PAGE_NAME", "forum_viewforum");
|
forum/viewthread.php
|
define("PLUGIN_NAME", "forum");
define("PAGE_NAME", "forum_viewthread");
|
news
news.php
|
define("PLUGIN_NAME", "news");
define("PAGE_NAME", "news_id");
|
news_cats.php
|
define("PLUGIN_NAME", "news");
define("PAGE_NAME", "news_cat");
|
articles
articles.php (где страница)
|
define("PLUGIN_NAME", "articles");
define("PAGE_NAME", "article_id");
|
articles.php (где категория)
|
define("PLUGIN_NAME", "articles");
define("PAGE_NAME", "article_cat");
|
downloads
downloads.php (где страница)
|
define("PLUGIN_NAME", "downloads");
define("PAGE_NAME", "download_id");
|
downloads.php (где категория)
|
define("PLUGIN_NAME", "downloads");
define("PAGE_NAME", "download_cat");
|
Добавляем в код панели if (...) {...} для группы php-страниц
if (defined("PLUGIN_NAME") and PLUGIN_NAME=="forum") {
opentable("My panel");
echo "<p>Text</p>";
closetable();
}
|
или конкретной php-страницы
if (defined("PAGE_NAME") and PAGE_NAME=="forum_viewforum") {
opentable("My panel");
echo "<p>Text</p>";
closetable();
}
|
но этот вариант неудобный для большинства панелей, потому что он не скрывает те панели, которые не нужны. |
Код панелей PHP-Fusion 7 (подробный мануал) |
Обновлённый PHP-Fusion Bogatyr / Free CMS PHP-Fusion 7 Bogatyr / Код панелей PHP-Fusion 7 (подробный мануал)
English
Добавление прав доступа в код панели
В большинстве случаев удобнее задать права доступа на панель при добавлении панели в админке.
Однако чтобы по ошибке не забыть это сделать для административных панелей, надо именно прописать в саму панель права доступа.
Зарегистрированный пользователь
|
if (iMEMBER) {
...
}
|
Админ
|
if (iADMIN) {
...
}
|
СуперАдмин
|
if (iSUPERADMIN) {
...
}
|
СуперАдмин
|
if (iSUPERADMIN) {
...
}
|
Незарегистрированный пользователь
|
if (iGUEST) {
...
}
|
Где заданы дифайны прав
maincore_users_cookies.php
|
// User level, Admin Rights & User Group definitions
define("iGUEST", $userdata['user_level'] == 0 ? 1 : 0);
define("iMEMBER", $userdata['user_level'] >= 101 ? 1 : 0);
define("iADMIN", $userdata['user_level'] >= 102 ? 1 : 0);
define("iSUPERADMIN", $userdata['user_level'] == 103 ? 1 : 0);
define("iUSER", $userdata['user_level']);
define("iUSER_RIGHTS", $userdata['user_rights']);
define("iUSER_GROUPS", substr($userdata['user_groups'], 1));
|
В файле maincore_user_rights_func.php смотрите функции для работы с правами пользователя.
Пример задания прав доступа по пользовательским группам в коде:
submit_now.php
|
$free_groups = array(9999,9998);//free groups (1,5,7,29)
/*
RUS: Для определённых групп пользовталей разрешает сабмит без утверждения статей, новостей, ссылок и фотографий.
ENG: No approve for submit - you can select several groups of users, who not needed approve in submit.php (works with articles,news.links, and photos nice)
-- here you can choose the groops without confirmation.
101 = all users (not recommend); admins always have instant submit.
*/
//check
foreach ($free_groups as $group) {
if(checkgroup($group)){define('esFREEMEMBER',true);break;}
}
|
Если задан esFREEMEMBER - значит пользователю выводится соответствующий контент.
* * *
Добавление ссылок на CSS и JS файлы в <head> страницы
Для многих панелей и контентных страниц требуется добавление CSS и JS файлов в <head> страницы.
Например, CSS из папки плагина:
infusions/comments_management/comments_management.php
|
add_to_head("<link rel='stylesheet' href='comments.css' type='text/css' media='screen' />n");
|
Например, CSS из папки темы:
infusions/h_iflogo_userinfo_panel/h_iflogo_userinfo_panel.php
|
add_to_head("n<link rel='stylesheet' href='".THEME."h_iflogo_userinfo_panel.css' type='text/css' media='screen' />n");
|
Функции add_to_head() и add_to_footer() находятся в файле "includes/output_handling_include.php". И этот файл инклюдится в maincore.php.
Нужные для этих целей дифайны папок заданы тут
maincore_defines.php
|
define("INCLUDES", BASEDIR."includes/");
define("LOCALE", BASEDIR."locale/");
define("INFUSIONS", BASEDIR."infusions/");
define("THEMES", BASEDIR."themes/");
|
* * *
Внедрение в панели локалей
локали плагинов и панелей рекомендуется добавлять в папки /locale/ соответствующих плагинов и панелей.
/infusions/latest_images_panel/latest_images_panel.php
|
// Check if locale file is available matching the current site locale setting.
if (file_exists(INFUSIONS."latest_images_panel/locale/".$settings['locale'].".php")) {
// Load the locale file matching the current site locale setting.
include INFUSIONS."latest_images_panel/locale/".$settings['locale'].".php";
} else {
// Load the infusion's default locale file.
include INFUSIONS."latest_images_panel/locale/English.php";
}
|
* * *
Внедрение в панели функций, переменных и дифайнов плагинов
Панель плагина может отображаться как на страницах плагина (или контентного модуля), так и на любых других страницах.
Чтобы все функции, переменные и дифайны для панели были заданы, необходимо их вынести в отдельный инклюд плагина, который будет использоваться для всех панелей этого плагина и всех контентных страниц.
Например для панели "infusions/pagex-links_panel/pagex-links_panel.php" из 2 строчек
require_once INFUSIONS.'pagex_panel/func_pagex.php';
pagex_t_menu( $bloktype='t' );
|
нужна строка
require_once INFUSIONS.'pagex_panel/func_pagex.php';
|
так как в файле "infusions/pagex_panel/func_pagex.php" задаётся функция pagex_t_menu().
* * *
Как сделать чтобы панель отображалась только на определённой php-странице
if ($_SERVER['SCRIPT_URL']==BASEDIR."forum/viewforum.php") {
opentable("My panel");
echo "<p>Text</p>";
closetable();
}
|
* * *
Как сделать чтобы панели плагина отображались только на страницах плагина или контентного модуля
можно добавить такие строки в контентные страницы
define("PLUGIN_NAME", ".........."); // строка в начале файла
define("PAGE_NAME", ".........._.........."); // строка в начале файла или там, где начинается отображение страницы или категории в файлах типа articles.php, downloads.php
|
вместо ".........." свои названия
обязательно до строки
require_once THEMES."templates/header.php";
|
Например так:
forum
forum/index.php
|
define("PLUGIN_NAME", "forum");
define("PAGE_NAME", "forum_index");
|
forum/viewforum.php
|
define("PLUGIN_NAME", "forum");
define("PAGE_NAME", "forum_viewforum");
|
forum/viewthread.php
|
define("PLUGIN_NAME", "forum");
define("PAGE_NAME", "forum_viewthread");
|
news
news.php
|
define("PLUGIN_NAME", "news");
define("PAGE_NAME", "news_id");
|
news_cats.php
|
define("PLUGIN_NAME", "news");
define("PAGE_NAME", "news_cat");
|
articles
articles.php (где страница)
|
define("PLUGIN_NAME", "articles");
define("PAGE_NAME", "article_id");
|
articles.php (где категория)
|
define("PLUGIN_NAME", "articles");
define("PAGE_NAME", "article_cat");
|
downloads
downloads.php (где страница)
|
define("PLUGIN_NAME", "downloads");
define("PAGE_NAME", "download_id");
|
downloads.php (где категория)
|
define("PLUGIN_NAME", "downloads");
define("PAGE_NAME", "download_cat");
|
Добавляем в код панели if (...) {...} для группы php-страниц
if (defined("PLUGIN_NAME") and PLUGIN_NAME=="forum") {
opentable("My panel");
echo "<p>Text</p>";
closetable();
}
|
или конкретной php-страницы
if (defined("PAGE_NAME") and PAGE_NAME=="forum_viewforum") {
opentable("My panel");
echo "<p>Text</p>";
closetable();
}
|
но этот вариант неудобный для большинства панелей, потому что он не скрывает те панели, которые не нужны. |
|