Разработка начинается с проработки деталей того, что Вы хотите сделать. Каков
будет интерфейс Вашего модуля - панелью или отдельной страницей? Нужна ли
собственная панель администрации? Требуются ли дополнительные таблицы в базе
данных?
Имеет значение название папки, которая будет содержать ваш модуль.Если Ваш
модуль будет представлен панелью, тогда ваше имя папки должно заканчиваться
суффиксом '_panel' (без кавычек). Вам не нужно делать это, если ваш модуль не
использует панель.
Один важный файл, который должен присутствовать в любом модуле - установочный
файл infusion.php. Этот файл автоматически обнаруживается панелью администрации
и благодаря ему модуль отображается в разделе "Плагины" панели администрации
PHP-Fusion. Вы найдете заготовку для infusion.php файла в этом комплекте
разработчика.
Существует множество свободно доступных модулей на наших форумах, на
сайте-архиве модулей phpfusion-mods.com или на центре аттестации
beta.phpfusion-mods.com.
СОДЕРЖАНИЕ КОМПЛЕКТА РАЗРАБОТЧИКА
new_infusion.php стандартный шаблон страницы
new_infusion_panel.php стандартный шаблон боковой или центральной панели
new_infusion_admin.php шаблон панели администрирования
infusion.php установочный информационный файл
infusion_db.php файл описания таблиц базы данных
РАЗЛИЧИЯ МЕЖДУ V6 И V7
PHP-Fusion подверглось большим изменениям, поэтому модули v6 непосредственно
несовместимы с v7, необходимы некоторые изменения. Вот наиболее важные
требования:
1. Изменения в infusion.php
Модули V7 могут иметь множество панелей администрации и навигации. Каждая панель
администрации и навигации определены через массив. Для панелей администрации мы
используем $inf_adminpanel[] по такому образцу:
$inf_adminpanel[1] = array(
"title" => $locale['xxx_admin1'],
"image" => "image.gif",
"panel" => "filename.php",
"rights" => "XXX"
);
в массиве 4 переменных:
title - имя связи показанной на панели администрации вливаний.
image - образ displayd на панели администрации вливаний.
panel - имя панельного файла администрации.
rights - v7 модули должны иметь величину прав уникального доступа, до 4 символов
(верхний регистр).
Ссылки на страницы сайта определяются через $inf_sitelink[], подобно этому:
$inf_sitelink[1] = array(
"title" => $locale['xxx_link1'],
"url" => "filename.php",
"visibility" => "0" );
title – имя, которое будет отображено в меню навигации.
url - имя панельного файла модуля.
visibility - определяет видимость (0, 101, 102 или 103
Код Заголовка и футера V7 имеет новый шаблон, который отличается в некоторых
строках
колонтитул V6 состоит из следующего кода:
Обычная страница:
require_once "../../maincore.php";
require_once BASEDIR."subheader.php";
require_once BASEDIR."side_left.php";
Страница администратора:
require_once "../../maincore.php";
require_once BASEDIR."subheader.php";
require_once ADMIN."navigation.php";
Для v7 эти строки следующие:
Обычная страница:
require_once "../../maincore.php";
require_once THEMES."templates/header.php";
Страница администратора:
require_once "../../maincore.php";
require_once THEMES."templates/admin_header.php";
Строки Нижнего колонтитула также изменены:
нижние колонтитулы V6 состоят из следующего кода:
Обычная страница:
require_once BASEDIR."side_right.php";
require_once BASEDIR."footer.php";
Страница администратора:
echo "</td>\n";
require_once BASEDIR."footer.php"; Для v7 эти строки такие:
Обычная страница:
require_once THEMES."templates/footer.php";
Страница администратора:
require_once THEMES."templates/admin_footer.php";
3. Изменения в проверке IN_FUSION
Проверка на IN_FUSION нужна для того, чтобы страницы не могли выполняться вне
PHP-Fusion, что очень важно для безопасности. В v6 использовался редирект, но
это может быть лишней нагрузкой сервера. Поэтому в v7 редирект заменён на
команду die();.
Было:
if (!defined("IN_FUSION")) { header("Location: ../../index.php"); exit; }
Стало:
if (!defined("IN_FUSION")) { die("Access Denied"); }
4. Функции, исключенные из v7
Несколько функций в v7 упраздняются:
fallback() теперь объединен с redirect();
tablebreak() уже не нужна, делается автоматически .
5. Использование суперглобальных переменных
Основным изменением и значительным улучшением безопасности v7 является работа с
отключенными register globals. Это означает, что Вы должны использовать
суперглобальные $_GET, $_POST, $_COOKIE и т.п.. На основной практике, которую Вы
должны использовать эти таким образом:
$_GET использован для переменных, полученных из адресной строки или uri.
$_POST использован для скрытых переменных, полученных из входных форм.Есть
возможность использовать другие суперглобальные. Вы можете ознакомиться с ними
подробнее, просмотрев руководство PHP (http://php.net). Dont Забывает проверять,
что Вы очищаете ВЕСЬ ввод пользователя, неудача делать так могло бы закончиться
инцидентами подделки, которая может вызвать убыток данных или содержимого.
6. Мультисайт
Новая характеристика в v7 - мультисайт. Мультисайт позволяет несколько
PHP-Fusion – сайтов запускать полностью или частично на одной базе данных.
Основная база данных таблиц определена в includes/multisite.php. Каждый модуль
имеет это - собственная база данных табличного имени определения файла была
названа infusion_db.php. Вам понадобится определять ваши табличные имена в этом
файле (пример включался. Примеры доступа таблицы пользователей в v6
$result = dbquery("SELECT * FROM ".$db_prefix."users");
$rows = dbcount("(*)", "users"); Это - как это быть сделанным в v7
$result = dbquery("SELECT * FROM ".DB_USERS);
$rows = dbcount("(*)", DB_USERS);
|