Современная, быстрая и удобная система управления сайтом

Плагины

Архив записейКомментарии: 23Просмотров: 24718

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

  • Скопировать файлы в каталог плагинов
  • В админ-панели активировать его
Некоторые плагины требуется явно прописывать в шаблоне, поэтому есть смысл почитать описание его разработчика.

Технически плагины представляют собой обычные 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Роман01-06-2008 11:29

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

TABLE plugins

(

plugin_id

plugin_status

)

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

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

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

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

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

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

TABLE active_plugins

(

plugin_id

)

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

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

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

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

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

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

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

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

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

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

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

9OlegTСайт18-10-2008 20:34

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

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

10serg21-12-2008 01:52

Долго искал, все равно не нашел. А как ADSENSE вставлять скажет кто-нибудь?????

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

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

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

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

13WaveСайт23-12-2008 21:59

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

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

14serg27-12-2008 23:31

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

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

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

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

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

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

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

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

ushki_widget 1

ushki_widget 2

...

ushki_widget n

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

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

16Griz22-04-2009 10:46

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

17WaveСайт22-04-2009 11:43

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

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

18Аноним09-07-2009 10:49

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

19Максим09-07-2009 11:11

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вы можете войти под своим логином или зарегистрироваться на сайте.

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