Бесплатная CMS для вашего сайта Разумная альтернатива WordPress

Плагины

01-06-2008Время чтения ~ 3 мин.Roadmap 25511

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

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

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

Технически плагины представляют собой обычные 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 - обновление настроек виджета
Похожие записи
Комментарии (23) RSS
1 Роман 2008-06-01 11:29:28

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

TABLE plugins

(

plugin_id

plugin_status

)

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


2 Максим 2008-06-01 11:35:11 admin

Нет, конечно. :)

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


3 Роман 2008-06-01 11:39:15

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

TABLE active_plugins

(

plugin_id

)

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


4 Максим 2008-06-01 12:03:08 admin

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


5 Роман 2008-06-01 13:30:12

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


6 Максим 2008-06-01 13:42:58 admin

Уже. :)


7 Юрий 2008-06-01 16:54:32

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


8 Максим 2008-06-01 19:19:07 admin

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

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

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


9 OlegT 2008-10-18 20:34:06

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

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


10 serg 2008-12-21 01:52:09
Долго искал, все равно не нашел. А как ADSENSE вставлять скажет кто-нибудь?????

11 Олег 2008-12-23 13:21:38

Используйте текстовый виджет (text_block) или ушко. В него можно вставлять любой текст.


12 Олег 2008-12-23 13:24:54

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


13 Wave 2008-12-23 21:59:31

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

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


14 serg 2008-12-27 23:31:49

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


15 Олег 2008-12-29 15:53:23

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

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

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

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

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

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

ushki_widget 1

ushki_widget 2

...

ushki_widget n

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

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


16 Griz 2009-04-22 10:46:52

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


17 Wave 2009-04-22 11:43:16
Griz, этого не будет.

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


18 Anonymous 2009-07-09 10:49:09

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


19 Максим 2009-07-09 11:11:35 admin
Можно ли изменив шаблон вывод сделать как на сайтах с многоуровневым вложением, далеко не весь материал можно подать в новостных лентах. Как быть с корпоративными сайтами?

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

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

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


20 Алексей 2012-02-04 21:40:54

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

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


21 Максим 2012-02-04 22:06:47 admin

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


22 Денис Назаров 2012-09-03 11:21:26

Клевая система! Чем дальше погружаюсь, тем больше узнаю :)

Макс, вопрос такой - если в админке плагина сделать загрузку файлов - то CMS обломает? Пытался сделать такое - на сервер ничего не прогружается, то есть в post-запросе имя файла есть, а самого файла нет. Через "Загрузки" админки грузит без проблем, а вне его - никак.

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


23 Денис Назаров 2012-09-03 13:19:04

Так, предыдущий вопрос снимается :) Проблема, как подсказал гугл, кроется в пыхе, которая никак не хочет принимать файл без указания в форме "multipart/data" :)

Как обычно - спросишь и тут же найдешь ответ сам :)

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