PHPShopElements
Материал из PHPShop CMS
PHPShopElements реализует вывод дополнительных элементов оформления сайта. С помощью библиотеки PHPShopElements реализован вывод каталогов, опросов, меню навигации, баннеры и т.д.
Содержание |
Создание нового файла элемента
Если вы хотите создать новый элемент, то необходимо создать новый файл /phpshop/inc/example.inc.php или дописать в общий файл элементов /phpshop/inc/elements.inc.php. Если создается новый файл, то необходимо добавить запись о нем в файл конфигурации в опцию autoload.
Рассмотрим пример с модулем для разработчиков Example
Логика элементов расположена в phpshop/modules/example/inc/example.inc.php. Запись об автозагрузке добавлена в конфигурационный файл модуля phpshop/modules/example/inc/config.ini:
[autoload] example="./phpshop/modules/example/inc/example.inc.php";
Элемент содержит класс PHPShopElementsИмяЭлемента, наследуемый от PHPShopElements. Класс содержит конструктор и методы вывода информации. Методы классы возвращают информацию из БД, пропущенную через парсер.
class PHPShopExampleElement extends PHPShopElements { // Конструктор function PHPShopExampleElement() { parent::PHPShopElements(); } // Прорисовка текстового блока Example function addToRightMenu() { // Название меню $this->set('leftMenuName','Example'); // Ссылка $this->set('leftMenuContent','<p>Текстовый блок Example сгенерирован модулем Example в файле example.inc.php</p>'); // Парсируем шаблон $dis=$this->parseTemplate($this->getValue('templates.right_menu')); return $dis; } }
В конструкции используются set, parseTemplate.
Для создания файла элемента нужно создать класс по правилам:
- Имя класса должно быть PHPShopElementsИмяЭлемента extends PHPShopElements
- Наличие функции конструктора PHPShopElementsИмяЭлемента()
- Наличие опции [autoload] в config.ini
- Файл разместить по адресу phpshop/inc/ИмяЭлемента.inc.php или в случаи с модулем phpshop/modules/имя модуля/inc/ИмяЭлемента.inc.php
Вывод элемента
Для вывода элементов используется запись:
$PHPShopExampleElement = &new PHPShopExampleElement(); $PHPShopExampleElement->init('addToRightMenu');
В конструкции используется init. Метод init назначает глобальной переменой окружения @addToRightMenu@ результат работы функции addToRightMenu(). Для добавления данных в переменную @addToRightMenu@ необходимо указать второй аргумент метода init('addToRightMenu',true). При отсутствии второго аргумента метода init и уже существования переменной @addToRightMenu@ новое значение записано не будет.
Переменная создается только 1 раз, при повторном вызове метода init и существования переменной, данные не меняются.
Назначить данные глобальной переменной, видимой в шаблонах, можно через массив $GLOBALS['SysValue']['other']. Данная запись равносильна выше:
$PHPShopExampleElement = &new PHPShopExampleElement(); $GLOBALS['SysValue']['other']['addToRightMenu']=$PHPShopExampleElement->addToRightMenu();
Для дописывания переменной используется конструкция с точкой:
$PHPShopExampleElement = &new PHPShopExampleElement(); $GLOBALS['SysValue']['other']['addToRightMenu'].=$PHPShopExampleElement->addToRightMenu();
Перехват функций (Hook)
Библиотека поддерживает внедрение хуков (hook) в основную логику API для перехвата с последующими изменениями результата выполнения методов классов PHPShopCore, PHPShopElements и всех наследуемых от них классов. Для внедрения хука требуется создать модуль.