Плагины
Воскресенье, 1 июня 2008 г.
Просмотров: 131
Подписаться на комментарии по RSS
Для того, чтобы расширить функциональность системы, используются плагины. Что такое плагины, я думаю, объяснять не нужно. Установка плагина сводится к нескольким простым действиям:
- Скопировать файлы в каталог плагинов
- В админ-панели активировать его
Некоторые плагины требуется явно прописывать в шаблоне, поэтому есть смысл почитать описание его разработчика.
Технически плагины представляют собой обычные php-файлы, которые подключаются в момент инициализации системы. По этой причине плагином можно сделать практически любой сторонний php-скрипт. Всё, что требуется для его модернизации - это указать правильное именование функций (см. правила).
Учитывая свой опыт создания плагинов для WordPress (где существует изрядный бардак), я решил разработать несколько несложных правил, которых должны придерживаться все разработчики плагинов. А для того, чтобы облегчить сей труд, в комплекте с дистрибутивом будет поставляться несколько заготовок для новых плагинов.
Правило 1. Расположение плагинов
Все плагины располагаются в каталоге maxsite/plugins/ в своем каталоге. Главный файл плагина должен иметь имя index.php. Для того, чтобы плагин мог быть активирован, необходимо разместить рядом файл info.php. Данный файл служит для описания плагина и имеет следующее содержимое:
- <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
- $info = array(
- 'name' => 'Название плагина',
- 'description' => 'Описание плагина',
- 'version' => '1.0 - версия',
- 'author' => 'Максим - автор',
- 'plugin_url' => 'http://maxsite.org/ - ссылка на страницу плагина',
- 'author_url' => 'http://maxsite.org/ - ссылка на автора',
- 'group' => 'template - группа'
- );
- ?>
Правило 2. Именование функций плагина.
Функции плагина должны начинаться с имени (каталога) плагина. Например плагин Календаря находится в каталоге «calendar», следовательно функции должны начинаться с «calendar_». То есть за имя плагина берется имя каталога. Это правило позволяет значительно упростить интеграцию плагина в систему, поскольку для плагинов (и виджетов) предусмотрены некоторые предопределенные действия, то их очень просто выполнить просто используя имя каталога.
Правило 3. Каждый плагин может иметь функцию автозагрузки (_autoload)
Например:
- function calendar_autoload($args = array())
- {
- // какое-то действие
- }
В данном примере плагин «calendar» (каталог «calendar»). При инициализации плагина, система автоматически проверит существование функции «плагин_autoload» и выполнит её. Таким образом в этой автозагрузке можно разместить нужные действия, например хуки (hook, ловушки).
Правило 4. Каждый плагин может иметь функцию активации, деактивации и удаления (_ativate, _deativate, _uninstall)
Плагин может иметь функции:
- плагин_ativate - которая срабатывает при включении плагина;
- плагин_deativate - которая срабатывает при отключении плагина;
- плагин_uninstall - которая страбатывает при удалении (всех настроек) плагина.
Разница между деактивацией и удалением в том, что деактивация просто делает плагин неактивным, то есть он не подключается вовсе. Удаление (_uninstall) следует использовать в тех случаях, когда плагин больше не планируется использовать. В этом случае разработчик должен предусмотреть удаление «мусора», например собственных опций плагина из базы данных.
Правило 5. Каждый плагин может быть виджетным
Виджеты - это какой-то блок, который выводится в сайдбаре. Описание виджетов см. в соответствующем разделе. Следует отметить, что любой плагин можно сделать виджетным. Виджеты удобны тем, что обладают единым интерфейсом, поэтому для их создания и использования не требуется дополнительное программирование.
Для управления виджетами система использует несколько предопределенных именований функций плагина.
- плагин_widget_form - для вывода формы настройки виджета
- плагин_widget_update - обновление настроек виджета

Комментариев: 8
А плагины как активируются? Есть таблица типа:
TABLE plugins
(
plugin_id
plugin_status
)
где plugin_status = on/off (включен/выключен). Так?
Нет, конечно.
Все несколько проще. Есть опция active_plugins, которая представляет собой обычный массив. В нем и хранятся включенные плагины.
То есть таблица?
TABLE active_plugins
(
plugin_id
)
Ну где то же должны хранится значения :D
Значения чего? Имена активных плагинов хранятся в опциях. Ничего лишнего.
А когда выйдет MaxSite CMS? (Кстати нашел генератор названий, может назовете CMS подругому: _http://www.lightsphere.com/dev/web20.html)
Уже.
Немножко не по теме, но все же. Почему то этот движок мне интересен
; пара вопросов. Какова направленность системы - блоги или сайты или же на ней можно с легкостью сделать и то и другое? (с wordprees-om такое не проходит - пытаюсь на нем сделать небольшой корпоративный сайт, дак постоянно с бубном пляшу, Drupal и Joomala на данном этапе отмел сразу - для меня показались слишком сложными, поскольку о PHP имею только общие неглубокие представления) Если ответ на первый вопрос "и для того и для другого", тогда второй вопрос: сколько будет стоить CMS, когда "уйдет на золото" окончательно? или можем пообщаться приватно на эту тему.
1. И блоги, и сайты. И все что угодно. В системе нет четкой привязки к какой-то одной схеме данных, хотя по-умолчанию я сделал вывод как в блогах.
2. Системе не для «кухарок» - с этим к WordPress'у.
Чтобы что-то изменить, потребуются какие-то знания PHP и знания основ движка. Правда, в отличие от WordPress, в моей системе не нужно переделывать сам движок - вполне достаточно сделать свой шаблон.
3. Насчет «стоить» вопрос не понял. Разработка открытая. Главное сохранять копирайты.