Current Path : /var/www/html/clients/nsmk.e-nk.ru/application/maxsite/plugins/modules/ |
Current File : /var/www/html/clients/nsmk.e-nk.ru/application/maxsite/plugins/modules/readme.txt |
Плагин «МОДУЛИ» =============== ОПИСАНИЕ -------- Для больших сайтов характерно выводить на главной (произвольной) странице различные блоки. Изначально мы не знаем какой именно функционал заключен в блоках - мы просто определяем их место в шаблоне. После этого мы сможем выбрать для каждого блока произвольный файл, текст или php-код. В шаблонном modules.php определяем модули: modules_set(1, 'Первый модуль'); В самом шаблоне (например type-файле) выводим модуль: <?php if (function_exists('modules_out')) modules_out(1); ?> Модуль имеет несколько настроек. - Название (определяется modules_set). - Имя файла - если он указан, то подключается require(файл). Вначале смотрим php-файлы в каталоге modules шаблона, потом в modules плагина. - Текстовое textarea-поле, в котором можно указывать произвольный php-код. Каждый _файл_ модуля может иметь свои опции. Для этого необходимо в подкаталоге /options/ создать файл с такми же именем и в нем прописать: mso_admin_plugin_options('test_' . $module_id, 'modules', array( 'title' => array( 'type' => 'text', 'name' => 'Название', 'description' => 'Описание', 'default' => 'нет' ), ), $module_name . ' ('. $module_id . ')', // титул 'Укажите необходимые опции модуля.' // инфо ); Где «test_» - ключ (лучше если совпадает с именем файла). Доступны переменные $module_id - номер модуля $module_name - имя модуля В данном случае мы формируем опцию test_{ID модуля}. Для считывания опций используем стандартную mso_get_option: $options = mso_get_option('test_' . $module_id, 'modules', array()); ПРИМЕРЫ (ШАБЛОН) ---------------- Шаблонный modules.php ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); modules_set(1, 'Первый модуль'); ?> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Шаблонный index.php (часть кода): ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ... if ( is_type('home') ) require('type/home-module.php'); ... ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Шаблонный type/home-module.php ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); # начальная часть шаблона require(getinfo('template_dir') . 'main-start.php'); echo NR . '<div class="type type_home">' . NR; # Модули if (function_exists('modules_out')) modules_out(1); echo NR . '</div><!-- class="type type_home" -->' . NR; # конечная часть шаблона require(getinfo('template_dir') . 'main-end.php'); ?> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ПРИМЕР МОДУЛЯ TEST ================== Может находиться в каталоге шаблона или плагина: - TEMPLATE_DIR/modules - PLUGIN_DIR/modules Файл test.php ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); # доступны переменные # $module_id - номер модуля # $module_name - имя модуля $module_options = mso_get_option('test_' . $module_id, 'modules', array()); if (isset($module_options['title'])) echo $module_options['title']; ?> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Плагин использует опции. Для этого используется файл с тем же именем в подкаталоге options: - TEMPLATE_DIR/modules/options - PLUGIN_DIR/modules/options Файл options/test.php ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); # доступны переменные # $module_id - номер модуля # $module_name - имя модуля # ключ, тип, ключи массива mso_admin_plugin_options('test_' . $module_id, 'modules', array( 'title' => array( 'type' => 'text', 'name' => 'Название', 'description' => 'Описание', 'default' => 'нет' ), ), $module_name . ' ('. $module_id . ')', // титул 'Укажите необходимые опции модуля.' // инфо ); ?> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~