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

Плагин «Модули»

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

Хоть MaxSite CMS и предлагает разработчику полную свободу в организации шаблона и вывода (произвольных) данных, в основном вывод осуществляется в блоговом формате. За основу берутся type-файлы шаблона default.

Это упрощает создание шаблонов, где все сводится к дизайну и не требуется сложное программирование. То есть у нас предполагается, что все программирование выполняется через файлы type.

Однако существует еще один способ создания шаблонов, который часто используется в крупных проектах.

В этом случае в шаблоне отмечают необходимые места/блоки вывода, а уже в админке определяют что именно должно выводиться в каждом блоке. Именно для такого вывода и предназначен плагин «Модули» (появился в MaxSite CMS 0.338).

Предположим мы хотим организовать вывод модулей (так будем называть) на главной странице. Для этого в шаблонном index.php подключаем отдельный файл home-module.php (имя произвольно).

...
if ( is_type('home') ) require('type/home-module.php'); 
...

В файле type/home-module.php сделаем вывод одного модуля (дизайн, естествено, вы определите сами):

# начальная часть шаблона
require(getinfo('template_dir') . 'main-start.php');

# Модуль
if (function_exists('modules_out')) modules_out(1);

# конечная часть шаблона
require(getinfo('template_dir') . 'main-end.php');

То есть все свелось к modules_out(1). Параметр - это номер/id модуля.

Сами модули теперь необходимо определить. Делается это в шаблоне в файле modules.php.

modules_set(1, 'Первый модуль');

На этом всё. Теперь на главной странице будет выведен модуль, содержимое которого мы определим уже в админ-панели.

Наверное вы догадались, что модули в чем-то напоминают ушки. Однако есть небольшое отличие: модуль может быть отдельным файлом, а не только php-кодом.

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

Кроме этого любой файл модуля может иметь собственные настройки. Для этого нужно создать файл с тем же именем в подкаталоге options. Для управления опциями следует использовать недавно появившуюся функцию mso_admin_plugin_options(), где все сводится к «описательному» массиву.

Для проверки и тестирования плагина я сделал модуль test.php. А более подробно всё описание собрал в файле readme.txt.

Данный плагин скорее всего будет предназначен для опытных разработчиков, которые смогут программировать файлы модулей и делать сложные шаблоны/сайты. Данной возможностью я бы хотел продемонстрировать, что MaxSite CMS в состоянии выводить данные не только «по-блогерски», но и помодульно, что характерно для «больших» CMS.

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

1zanuda20-08-2009 10:48

Спасибо за ваш труд и продвижение очень нужного продукта, но снова: "...Данный плагин скорее всего будет предназначен для опытных разработчиков, которые смогут программировать файлы модулей и делать сложные шаблоны/сайты. Данной возможностью я бы хотел продемонстрировать, что MaxSite CMS в состоянии выводить данные не только «по-блогерски», но и помодульно, что характерно для «больших» CMS" ...

В "больший" CMS подобный функционал строится совсем по другому. "Модуль" создается, активируется, "заполняется" и размещается в нужном месте из "админки". Ведь "MaxSite" позиционируется именно как "CMS", а не как просто "движок". А основные пользователи "Content Maneger System" не программисты, а "контент-менеджеры", люди совершенно далекие от программирования. У них другая задача - наполнить созданный вами "конструктор из коробки" качественной информацией - КОНТЕНТОМ.

Думаю, что "MaxSite" уже давно переросла статус "движка" для программистов и самое время подумать о пользователях - создателях контента.

2SkyDСайт24-01-2010 11:17

Доброе время суток!

Планируется ли добавление многосайтовости (вроде WPMU)?

4Денис28-08-2012 09:46

а где этот плагин есть? что-то я не нашел в 0.74 и в каталоге плагинов такого нет

5Максим28-08-2012 11:32

Он исключени из поставки, как лишенный смысла. Сейчас все эти возможности, только в большем объеме реализуются через компоненты.

6Денис Назаров30-06-2013 19:02

Поставил версию 0.84. Скопировал туда свой плагин, теперь

# начальная часть шаблона
require(getinfo('template_dir') . 'main-start.php');
не работает, поскольку это файл в shared/main. Как лечить?

7Максим01-07-2013 08:05

Теперь нужно так:

if ($fn = mso_find_ts_file('main/main-start.php')) require($fn);

и

if ($fn = mso_find_ts_file('main/main-end.php')) require($fn);
Оставьте свой комментарий!

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

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

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