Плагин меню
Материал из Документация NGCMS
Сейчас рассмотрим на примере простого плагин. Он будет делать случайную выборку из конфига. Он будет состоять из:
- -menu
- menu.php
- config.php
- version
- -tpl
- menu.tpl
- entries.tpl
- -tpl
Теперь поподробнее рассмотрим каждый файл по отдельности. Писать плагин лучше начинать с файла version, по тому что так удобнее.
version
; ; Version description file for plugin @@ Next Generation CMS ; ID: menu Name: Menu Version: 0.02 Acts: index File: menu.php Config: config.php Type: plugin Description: Менюшка на сайте Author: Anonimys Author_URI: http://wiki.ngcms.ru/ Information: Позволяет создавать простое меню на сайте.
menu.php
if (!defined('NGCMS')) { die("Хотел взглянуть что тут? а тут защита от инлюда :)"); } add_act('index', 'plugin_menu'); function plugin_menu(){ global $config, $tpl, $template; $tpath = locatePluginTemplates(array('entries', 'menu'), 'menu', extra_get_param('menu', 'localsource')); // Откуда мы берём tpl? for($i=1;$i<=extra_get_param('menu','count');$i++){ $tvars['vars'] = array( 'link' => extra_get_param('menu','link'.$i), // {link} 'descr_url' => extra_get_param('menu','descr_url'.$i) // {descr_url} ); $tpl -> template('entries', $tpath['entries']); // Открываем entries.tpl $tpl -> vars('entries', $tvars); // Записываем в entries.tpl $result .= $tpl -> show('entries'); } unset($tvars); // Убиваем $tvars, он нам нужен для другого $tvars['vars'] = array ( 'tpl_url' => tpl_url, // {tpl_url} 'menu' => $result // {menu} ); $tpl -> template('menu', $tpath['menu']); // Открываем menu.tpl $tpl -> vars('menu', $tvars); $template['vars']['plugin_menu'] = $tpl -> show('menu'); }
В шаблоне menu.tpl будет доступна переменная {entries}. Для редактирование переменной {entries} используется шаблон entries.tpl В entries.tpl доступны следующие переменные:
- {link} - url заданный в конфиге
- {descr_url} - описание, куда нас ведет линк
config.php
if (!defined('NGCMS')) { die("Plugin can be achieved only via main page."); } plugins_load_config(); $cfg = array(); $cfgX = array(); array_push($cfgX, array('name' => 'count', 'title' => 'Пункты меню', 'descr' => 'Кол-во','type' => 'input', value => extra_get_param('menu','count'))); array_push($cfgX, array('name' => 'localsource', 'title' => "Выберите каталог из которого плагин будет брать шаблоны для отображения<br /><small><b>Шаблон сайта</b> - плагин будет пытаться взять шаблоны из общего шаблона сайта; в случае недоступности - шаблоны будут взяты из собственного каталога плагина<br /><b>Плагин</b> - шаблоны будут браться из собственного каталога плагина</small>", 'type' => 'select', 'values' => array ( '0' => 'Шаблон сайта', '1' => 'Плагин'), 'value' => extra_get_param('menu','localsource'))); array_push($cfg, array('mode' => 'group', 'title' => '<b>Основные настройки</b>', 'entries' => $cfgX)); for($i=1;$i<=extra_get_param('menu','count');$i++){ $cfgX = array(); array_push($cfgX, array('name' => 'link'.$i, 'title' => 'Ссылка', 'descr' => 'Url','type' => 'input', value => extra_get_param('menu','link'.$i))); array_push($cfgX, array('name' => 'descr_url'.$i, 'title' => 'Надпись', 'descr' => 'как вы это увидете', 'type' => 'input', value => extra_get_param('menu','descr_url'.$i))); array_push($cfg, array('mode' => 'group', 'title' => '<b>Ссылка №'.$i.'</b>', 'entries' => $cfgX)); } if ($_REQUEST['action'] == 'commit') { commit_plugin_config_changes('menu', $cfg); print "Все сохранилась: <a href='admin.php?mod=extra-config&plugin=menu'>жми назад</a>\n"; } else { generate_config_page('menu', $cfg); }
В конфиге уже задается количество ссылок, и куда они куда они ведут

