MaxSite CMS

Официальный сайт

Плагины

Рубрика: MaxSite CMS -> Плагины
Воскресенье, 1 июня 2008 г.
Просмотров: 131
Подписаться на комментарии по RSS

Для того, чтобы расширить функциональность системы, используются плагины. Что такое плагины, я думаю, объяснять не нужно. Установка плагина сводится к нескольким простым действиям:

  • Скопировать файлы в каталог плагинов
  • В админ-панели активировать его

Некоторые плагины требуется явно прописывать в шаблоне, поэтому есть смысл почитать описание его разработчика.

Технически плагины представляют собой обычные php-файлы, которые подключаются в момент инициализации системы. По этой причине плагином можно сделать практически любой сторонний php-скрипт. Всё, что требуется для его модернизации - это указать правильное именование функций (см. правила).

Учитывая свой опыт создания плагинов для WordPress (где существует изрядный бардак), я решил разработать несколько несложных правил, которых должны придерживаться все разработчики плагинов. А для того, чтобы облегчить сей труд, в комплекте с дистрибутивом будет поставляться несколько заготовок для новых плагинов.

Правило 1. Расположение плагинов

Все плагины располагаются в каталоге maxsite/plugins/ в своем каталоге. Главный файл плагина должен иметь имя index.php. Для того, чтобы плагин мог быть активирован, необходимо разместить рядом файл info.php. Данный файл служит для описания плагина и имеет следующее содержимое:

  1.  <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
  2.  $info = array(
  3.      'name' => 'Название плагина',
  4.      'description' => 'Описание плагина',
  5.      'version' => '1.0 - версия',
  6.      'author' => 'Максим - автор',
  7.      'plugin_url' => 'http://maxsite.org/ - ссылка на страницу плагина',
  8.      'author_url' => 'http://maxsite.org/ - ссылка на автора',
  9.      'group' => 'template - группа'
  10.  );
  11.  ?>

Правило 2. Именование функций плагина.

Функции плагина должны начинаться с имени (каталога) плагина. Например плагин Календаря находится в каталоге «calendar», следовательно функции должны начинаться с «calendar_». То есть за имя плагина берется имя каталога. Это правило позволяет значительно упростить интеграцию плагина в систему, поскольку для плагинов (и виджетов) предусмотрены некоторые предопределенные действия, то их очень просто выполнить просто используя имя каталога.

Правило 3. Каждый плагин может иметь функцию автозагрузки (_autoload)

Например:

  1.  function calendar_autoload($args = array())
  2.  {      
  3.      // какое-то действие
  4.  }

В данном примере плагин «calendar» (каталог «calendar»). При инициализации плагина, система автоматически проверит существование функции «плагин_autoload» и выполнит её. Таким образом в этой автозагрузке можно разместить нужные действия, например хуки (hook, ловушки).

Правило 4. Каждый плагин может иметь функцию активации, деактивации и удаления (_ativate, _deativate, _uninstall)

Плагин может иметь функции:

  • плагин_ativate - которая срабатывает при включении плагина;
  • плагин_deativate - которая срабатывает при отключении плагина;
  • плагин_uninstall - которая страбатывает при удалении (всех настроек) плагина.

Разница между деактивацией и удалением в том, что деактивация просто делает плагин неактивным, то есть он не подключается вовсе. Удаление (_uninstall) следует использовать в тех случаях, когда плагин больше не планируется использовать. В этом случае разработчик должен предусмотреть удаление «мусора», например собственных опций плагина из базы данных.

Правило 5. Каждый плагин может быть виджетным

Виджеты - это какой-то блок, который выводится в сайдбаре. Описание виджетов см. в соответствующем разделе. Следует отметить, что любой плагин можно сделать виджетным. Виджеты удобны тем, что обладают единым интерфейсом, поэтому для их создания и использования не требуется дополнительное программирование.

Для управления виджетами система использует несколько предопределенных именований функций плагина.

  • плагин_widget_form - для вывода формы настройки виджета
  • плагин_widget_update - обновление настроек виджета

Комментариев: 8

  1. 2008-06-01 в 13:29:28 | Роман (анонимно)

    А плагины как активируются? Есть таблица типа:

    TABLE plugins

    (

    plugin_id

    plugin_status

    )

    где plugin_status = on/off (включен/выключен). Так?

  2. 2008-06-01 в 13:35:11 | Максим

    Нет, конечно. smile

    Все несколько проще. Есть опция active_plugins, которая представляет собой обычный массив. В нем и хранятся включенные плагины.

  3. 2008-06-01 в 13:39:15 | Роман (анонимно)

    То есть таблица?

    TABLE active_plugins

    (

    plugin_id

    )

    Ну где то же должны хранится значения :D

  4. 2008-06-01 в 14:03:08 | Максим

    Значения чего? Имена активных плагинов хранятся в опциях. Ничего лишнего.

  5. 2008-06-01 в 15:30:12 | Роман (анонимно)

    А когда выйдет MaxSite CMS? (Кстати нашел генератор названий, может назовете CMS подругому: _http://www.lightsphere.com/dev/web20.html)

  6. 2008-06-01 в 15:42:58 | Максим

    Уже. smile

  7. 2008-06-01 в 18:54:32 | Юрий (анонимно)

    Немножко не по теме, но все же. Почему то этот движок мне интересен wink; пара вопросов. Какова направленность системы - блоги или сайты или же на ней можно с легкостью сделать и то и другое? (с wordprees-om такое не проходит - пытаюсь на нем сделать небольшой корпоративный сайт, дак постоянно с бубном пляшу, Drupal и Joomala на данном этапе отмел сразу - для меня показались слишком сложными, поскольку о PHP имею только общие неглубокие представления) Если ответ на первый вопрос "и для того и для другого", тогда второй вопрос: сколько будет стоить CMS, когда "уйдет на золото" окончательно? или можем пообщаться приватно на эту тему.

  8. 2008-06-01 в 21:19:07 | Максим

    1. И блоги, и сайты. И все что угодно. В системе нет четкой привязки к какой-то одной схеме данных, хотя по-умолчанию я сделал вывод как в блогах.

    2. Системе не для «кухарок» - с этим к WordPress'у. wink Чтобы что-то изменить, потребуются какие-то знания PHP и знания основ движка. Правда, в отличие от WordPress, в моей системе не нужно переделывать сам движок - вполне достаточно сделать свой шаблон.

    3. Насчет «стоить» вопрос не понял. Разработка открытая. Главное сохранять копирайты.

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



(обязательно)