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@ новое значение записано не будет.

Lifebelt.png Переменная создается только 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 и всех наследуемых от них классов. Для внедрения хука требуется создать модуль.