Делаем плагины для Fapos CMS
Хоть в документации и освещена эта тема, тут я постараюсь раскрыть ее более подробно и с примерами. Так сказать - разжевать. Надеюсь это повлечет волну плагинов для, всеми нами любимого, движка).
И так, как делать плагины для Fapos CMS?
Есть несколько пунктов, которые просто обязательны. Это как бы система, которая призвана внести некий порядок. Хотя сама архитектура плагина может быть несоизмеримо объемной и ограничена, в конечном счете, только вашей фантазией.
1. Все плагины должны находиться в папке /sys/plugins/. Иначе система их просто не увидит.
2. Плагин Fapos CMS, должен содержать, как минимум, два файла: index.php и config.dat.
3. Должны быть соблюдены соглашения имен методов, классов и настроек. Только обязательных. Их всего несколько штук. Далее начинается полет фантазии.
И так начинаем.
Первым делом, нам надо определиться, под какой хук мы будем писать плагин(список и детальное описание хуков скоро будет в документации и я напишу отдельный пост на эту тему). Для примера, возьмем хук before_view. Этот хук(hook) позволяет манипулировать полностью сформированной страницей, прямо перед ее выводом.
Теперь придумываем название нашего будущего плагина. Я не смог придумать ничего оригинальнее
fufuplugin(уж простите).
Все эти данные говорят нам о том, что каталог для нашего плагина будет называться
before_view_fufuplugin. Создаем этот каталог и в нем два файла.
index.php и
config.dat. PHP файл - это файл с логикой плагина. Там будет наш php код.
config.dat - это конфигурационный файл. С ним частенько возникают вопросы, по этому я остановлюсь на нем подробно.
Конфиг должен содержать, как минимум, следующие параметры:
className - это название класса, который будет находится в файле index.php. Позже вы увидите это.
title - название(любое)
description - описание(любое)
active - ставим 1. Это будет означать, что плагин работает.
Все эти настройки должны храниться в виде сериализованного массива. Я покажу простой скрипт для создания такого конфига.
1
2
3
4
5
6
7
| <?php = array(
'className' => 'Fufuplugin',
'title' => 'fufu',
'description' => 'simple plugin',
'active' => 1,
);
file_put_contents('config.dat', serialize());?> |
После запуска скрипта, в каталоге с ним появится наш конфиг.
Хочу, так же, добавить, что конфиг может содержать любые дополнительные настройки, в том числе, и те, которые потом мы сможем изменять через админку. Ну или как угодно.
А теперь я покажу, как должен будет выглядеть самый простой класс для этого плагина. Файл index.php
1
2
3
4
5
6
| <?php class Fufuplugin {
public function common() {
}
}?> |
Метод common обязательный. Управление с хука передается именно ему, а дальше вы вольны делать, что угодно.
Параметр $params - это данные с хука. В данном случае, это вся страница. Обратите внимание, я назвал класс именно так, как прописал в конфиге - это важно. Иначе плагин не будет работать.
Теперь имея такой плагин, мы можем совершать любые действия. Например использовать другие методы из нашего класса или инклудить другие файлы и использовать те функции, что в них находятся. Никаких ограничений.
Ну а теперь, самое интересное - как управлять всем этим из админки. Сейчас я расскажу, как собрать плагин, который добавит в админку новые страницы для настроек. Для этого нам понадобится создать в каталоге нашего плагина еще один файл -
settings.php. Что бы все работало, как надо, есть лишь одно условие - этот файл должен определять переменную $output.
Например(settings.php):
1
| <?php = 'Plugin settings';?> |
Если вашь файл
settings.php будет содержать такую строку, перейдя на страницу настройки своего плагина, вы увидите текст Plugin settings.
Но есть вещи по интереснее. Например мы желаем, что бы у нас была не одна страница а несколько и мы могли перемещаться между ними для детальной настройки нашего плагина
Fapos CMS. На этот случай, нам надо предусмотреть логику нашего кода в файле
settings.php и знать как формировать ссылки на наши страницы. Дело в том, что для перехода к настройкам плагина мы должны перейти по адресу
host.com/admin/plugins.php?ac=edit&dir=каталог плагина. То есть в нашем случае, это будет
host.com/admin/plugins.php?ac=edit&dir=before_view_fufuplugin. Теперь о логике самого файла
settings.php.
Как видите, мы должны передать два обязательных параметра, но никто не запрещает добавлять свои. Например мы можем сделать, что-то типа:
1
2
3
4
| <?php if (!empty($_GET['page']) && $_GET['page'] == 2)
= '<a href="/admin/plugins.php?ac=edit&dir=before_view_fufuplugin&page=1">To page 1</a>';
else
= '<a href="/admin/plugins.php?ac=edit&dir=before_view_fufuplugin&page=2">To page 2</a>';?> |
Думаю тут все понятно. Мы просто передаем дополнительный параметр page и на основе этого параметра создаем логику.
Вот и все, что надо для простейшего плагина. Но помните, в каталоге с плагином у вас может находиться любое количество других папок и файлов. По сути, вы можете создавать плагины с функционалом целого модуля.
Желаю вам легкого осознания всего вышеизложенного и жду ваши плагины в разделе форума "готовое". Плагины с хорошими отзывами будут переноситься в фаловый архив Fapos CMS.