Плагины

Воскресенье, 1 июня 2008 г.
Рубрика: MaxSite CMS -> Плагины
Просмотров: 9422
Подписаться на комментарии по 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 - обновление настроек виджета
twitter.com facebook.com mail.ru friendfeed.com livejournal.ru memori.ru google.com yandex.ru

Еще записи по теме

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

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

    TABLE plugins

    (

    plugin_id

    plugin_status

    )

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

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

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

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

    TABLE active_plugins

    (

    plugin_id

    )

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

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

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

  6. Уже. smile

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

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

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

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

  9. А можно огласить весь список плагинов с описаниями на сайте? Просто понимаю, что в сборке уже присутствуют плагины, но хотелось бы узнать какие, не скачивая и не устанавливая. Так сказать оценить возможности системы читая описания функционала плагинов. Тратить время на тестовую установку чтобы просто узнать возможности, это роскошь в наше время.

    Если полный список где-то уже есть, то тогда извиняюсь, тогда надо как-то навигацию более ориентированную на интересующихся вопросом...

  10. Долго искал, все равно не нашел. А как ADSENSE вставлять скажет кто-нибудь?????
  11. Используйте текстовый виджет (text_block) или ушко. В него можно вставлять любой текст.

  12. OlegT, в сборке есть все плагины. Хранятся здесь: \maxsite\application\maxsite\plugins

  13. Олег, в сборке не все плагины. Штуки три визивиг-редактора можно найти по ссылкам с форума блоге Ю.Б., ещё один-два плагина аналогично.

    К тому же человек хочет не скачивая сборку прочесть где-то на сайте этот список и краткое описание.

  14. Спасибо огромное за помощь, с text_block разобрался - работает. Но вот с ушками - проблема. Где бы посмотреть инфу для чайниковских чайников?

  15. Активируете плагин "ushki". Появится в разеделе Плагины раздел "Ушки".

    Далее, заходите в него и создаете ухо smile

    например: uxo1. Вносите в него свой текст или php-код и сохраняете.

    Потом, переходите в "Сайдбары и виджеты" и в блоке "Доступные виджеты" нажимаете на против раздела "Ушки » " на любой из сайдбаров.

    Например "Первый сайдбар".

    У вас появится в поле надпись ushki_widget. Важно, если у вас в одном сайдбаре будет несколько ух (виджетов), их нужно нумеровать вот так:

    ushki_widget 1

    ushki_widget 2

    ...

    ushki_widget n

    После того, как вы назначили виджет ushki в нужный сайдбар, переходите во вкладку "Настройка виджетов". Она находится вверху страницы. Я ее не сразу заметил smile

    В Первом сайдбаре нажимаете на "Ушки", указываете Заголовок (не обязательно) и название вашего уха. В данном случае, это uxo1. Содержимое вашего уха должно отобразится на сайте. smile

  16. Думаю, совсем не помешал бы механизм подключения wp-плагинов к этому движку.

  17. Griz, этого не будет.

    В крайнем случае, заказывайте (делайте сами) передеделку WP-плагинов к MaxSite.

  18. Максим, вы пишите что сделали по умолчанию вывод как в блогах. Можно ли изменив шаблон вывод сделать как на сайтах с многоуровневым вложением, далеко не весь материал можно подать в новостных лентах. Как быть с корпоративными сайтами? Мне кажется многие сталкиваются с этой задачей, и не разобравшись отметают MaxCMS, считая его заточенным под блоги. И еще, когда Вы вели WP , мне очень понравилось как вы описали создание шаблона "своими руками", просто супер. Нельзя ли так же разжевать с MaxCMS, мне бы хотелось сделать шаблон не виджетный, вручную прописать все что мне надо в коде жаблона, если это конечно возможно?

  19. Можно ли изменив шаблон вывод сделать как на сайтах с многоуровневым вложением, далеко не весь материал можно подать в новостных лентах. Как быть с корпоративными сайтами?

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

    Нельзя ли так же разжевать с MaxCMS, мне бы хотелось сделать шаблон не виджетный, вручную прописать все что мне надо в коде шаблона, если это конечно возможно?

    Возможно, но неэффективно. Зачем прописывать вручную функции, если это же самое делается через админку? В настройках сайдбаров как раз и указываются функции виджетов. Вы можете их вызвать в любом месте шаблона.

  20. 2012-02-04 в 23:40:54 | Алексей

    Возможно ли организовать вывод страниц без указания даты и времени ее создания, кол-во просмотров, автора? Или же создавать свой type_foreach файл и править ручками?

    Заранее спасибо.

  21. type_foreach-файлы как раз для этого и предназначены.

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

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Комментарий будет опубликован после проверки

Имя и сайт используются только при регистрации

Если указать email (зарегистрироваться), то будет уведомление о новых комментариях.

Авторизация Loginza.

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