У нас есть масса плагинов, которые могут иметь свои настройки. Но создавать страницу управления этими опциями может оказаться не совсем оправданной задачей: код формы, админ-страницы будет больше, чем сам плагин. Поэтому я задумал вынести весь код управления в одну специальную страницу (в админке), а в самом плагине достатачно будет лишь указать название опции, тип и ключи массива. Если в плагине определена специальная функция, то возле плагина появится ссылка на настройки этого плагина.
В последнем latest (MaxSite CMS 0.334) я наконец-то реализовал эту задумку.
На практике это выглядит так. В плагине необходимо предопределить функцию «плагин_mso_options». После активации плагина на его стутусе «вкл» появится ссылка на страницу настроек. На этой странице и находится форма с нашими опциями.
Теперь я покажу код на примере переделанного плагина «pagination2».
function pagination2_mso_options() { # ключ, тип, ключи массива mso_admin_plugin_options('pagination2', 'plugins', array( 'old' => array( 'type' => 'text', 'name' => 'Записи старее', 'description' => 'Текст ссылок для старых записей', 'default' => t('Старее »»»', 'plugins') ), 'new' => array( 'type' => 'text', 'name' => 'Записи новее', 'description' => 'Текст ссылки на новые записи', 'default' => t('««« Новее', 'plugins') ), 'sep' => array( 'type' => 'text', 'name' => 'Разделитель', 'description' => 'Укажите разделитель', 'default' => ' | ' ) ) ); }
В функции pagination2_mso_options() мы прописываем всего одну функцию mso_admin_plugin_options() с тремя параметрами:
- ключ
- тип
- массив ключей-опций
То есть мы предполагаем, что все наши настройки хранятся в одном массиве. Чтобы извлечь опции в нашем случае используем стандартный код:
$options = mso_get_option('pagination2', 'plugins', array());
То есть ничего необычного. :-)
Самая интересная «фишка» - последний параметр mso_admin_plugin_options() - в нем мы описываем ключи-опции. Необходимо отметить, что если использовать какой-то другой способ хранения опций, например в виде строки, то новая возможность не подойдет - здесь будет работать только опция-массив.
Дальше просто. Каждый ключ описывается в виде массива. Параметр «type» может быть либо «text», либо «textarea». Со временем, я подумаю, как подключить и другие типы. Параметр «name» - название/заголовок опции. Описание - «description». Если значения опции не определено, то в форме выводится текст из «default».
Надеюсь, что данная возможность пригодится разработчикам плагинов и упростит работу с опциями.
Обсудить новую возможность можно на нашем форуме.
Комментариев: 2 RSS
1librarianСайт06-07-2009 19:56
О! Просто must_have это реально нужная фича.
2Griz07-07-2009 09:24
Ну вот.:) А я уже по старинке плагин написал. Все управление вручную.