PHPShopElements

Материал из PHPShop

Перейти к: навигация, поиск

PHPShopElements реализует вывод дополнительных элементов оформления сайта. С помощью библиотеки PHPShopElements реализован вывод каталогов, опросов, меню навигации, баннеры и т.д.

Содержание

Использование

Используется в качестве конструктора для создания элементов:

Расположение

Библиотека PHPShopElements находится в базе классов phpshop/class/ в файле elements.class.php Все остальные элементы, наследующие этот класс и выполняющие роль вывода элементом сайта сгруппированы в phpshop/inc/elements.inc.php и phpshop/inc/shopelements.inc.php с автоматической загрузки в ядре.

Активация элементов происходит в файле phpshop/inc/autload.inc.php.

Методы

  • set() - Создание системной переменной для парсинга @?@ ($SysValue[other][?])
  • add() - добавление информации в поток вывода данных
  • addToTemplate() - добавление в переменную вывода через парсер
  • get() - выдача переменной шаблона ($SysValue[other][?])
  • getValue() - выдача системной переменной конфигурации ($SysValue[?][?]).
  • getValueCache() - Выдача системной переменной из кэша
  • init() - Инициализация переменной по результату выполнения функции
  • isAction() - Проверка экшена
  • lang() - Вывод языкового параметра по ключу [config.ini]
  • memory_get() - Выборка из памяти PHPShop Memory
  • memory_set() - Запись в память PHPShop Memory
  • parseTemplate() - Парсинг шаблона
  • setAction() - Назначение экшена обработки переменных POST и GET
  • setError() - Сообщение об ошибке
  • setHook() - Назначение перехвата события выполнения модулем

Создание элемента

Если вы хотите создать новый элемент, то необходимо создать новый файл /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 и всех наследуемых от них классов. Для внедрения хука требуется создать модуль или дизайн-хук.