PHPShopParser

Материал из PHPShop

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

PHPShopParser - внешний парсер шаблонов. Основной парсер расположен в indeх.php, в тем случаях когда обработка просиходит вне этого файла, вызывается внешний парсер PHPShopParser (печатные формы и т.д.)

Содержание

Методы

PHPShopParser содержит только статические методы:

  • set() - Создание системной переменной
  • get() - Выдача системной переменной
  • file() - Обработка файла шаблона, вставка переменных
  • check() - Проверка шаблона на присутствие переменной
Lifebelt.png Конструкция проверки наличия переменных в файле шаблона  check() позволяет отключать неиспользуемые функции и экономить ресурсы.

Функции

Внутренний парсер доступен из любого раздела сайта на основе PHPShopCore или PHPShopElements.

  • ParseTemplate(файл_шаблона) - парсирует файл шаблона и выводит на экран результат обработки
  • ParseTemplateReturn(файл_шаблона,условие запуска шаблоне из вне) - парсирует файл шаблона и возвращет результат обработки. Если вторый аргумент условия запуска шаблоне из вне равно true, то файл_шаблона ищется по полному пути, если нет то относительно папки с шаблонами phpshop/templates/текущий_шаблон/

Методы ядра

В обработчике ядра PHPShopCore и PHPShopElements внутренний парсер может быть вызван через внутренние методы классов.

  • add() - Добавление данных в переменную вывода
  • addToTemplate() - Добавление данных в вывод парсера
  • parseTemplate() - Парсинг шаблона и добавление в общую переменную вывод
  • set() - Создание переменной шаблонизатора для парсинга
  • get() - Выдача переменной шабонизатора
  • Compile() - Компиляция парсинга


Примеры

addToTemplate()

Реализация вывода списка отзывов в гостевой книге phpshop/core/gbook.core.php

 
// Определяем переменые
$this->set('gbookData',PHPShopDate::dataV($row['datas']));
$this->set('gbookName',$row['name']);
$this->set('gbookTema',$row['tema']);
$this->set('gbookMail',$d_mail);
$this->set('gbookOtsiv',$row['otsiv']);
$this->set('gbookOtvet',$row['otvet']);
$this->set('gbookId',$row['id']);
 
// Подключаем шаблон
$this->addToTemplate($this->getValue('templates.main_gbook_forma'));

ParseTemplateReturn()

Реализация вывода данных личного кабинета модуля Partner phpshop/modules/partner/core/partner.core.php

 
if(is_array($content))
   foreach($content as $k=>$v) {
          $this->set('userAddName',str_replace('dop_', '', $k));
          $this->set('userAddValue',$v);
          $dop.=ParseTemplateReturn($GLOBALS['SysValue']['templates']['partner']['partner_forma_dop_content'],true);
   }
 
// Определяем переменные
$this->set('userContent',$dop);
$Tab4=ParseTemplateReturn($GLOBALS['SysValue']['templates']['partner']['partner_forma_enter'],true);

file()

Реализация печатной формы счета для банка phpshop/forms/account/forma.php

 
    PHPShopParser::set('totalnds',$PHPShopOrder->getTotal($nds=true));
    PHPShopParser::set('nds',$PHPShopOrder->PHPShopSystem->getParam('nds'));
    PHPShopParser::set('discount',$PHPShopOrder->getDiscount());
    PHPShopParser::set('ouid',$PHPShopOrder->getValue('uid'));
    PHPShopParser::set('org_user',$PHPShopOrder->getSerilizeParam('orders.Person.org_name'));
    PHPShopParser::set('org_bank_acount',$PHPShopSystem->getSerilizeParam('bank.org_bank_schet'));
    PHPShopParser::set('org_bank_acount',$PHPShopSystem->getSerilizeParam('bank.org_bank_schet'));
    PHPShopParser::set('org_bic',$PHPShopSystem->getSerilizeParam('bank.org_bic'));
    PHPShopParser::set('org_bank',$PHPShopSystem->getSerilizeParam('bank.org_bank'));
    PHPShopParser::set('org_name',$PHPShopSystem->getSerilizeParam('bank.org_name'));
    PHPShopParser::set('org_schet',$PHPShopSystem->getSerilizeParam('bank.org_schet'));
    PHPShopParser::set('org_kpp',$PHPShopSystem->getSerilizeParam('bank.org_kpp'));
    PHPShopParser::set('org_inn',$PHPShopSystem->getSerilizeParam('bank.org_inn'));
    PHPShopParser::set('org_adres',$PHPShopSystem->getSerilizeParam('bank.org_adres'));
    PHPShopParser::set('org_ur_adres',$PHPShopSystem->getSerilizeParam('bank.org_ur_adres'));
    PHPShopParser::set('org_name',$PHPShopSystem->getSerilizeParam('bank.org_name'));
    PHPShopParser::set('date',date("d-m-y"));
    PHPShopParser::file('../../lib/templates/print/account.tpl');


check()

Проверка наличия в шаблоне переменной @productOdnotipList@ вывода однотипных товаров в старых шаблонах. При ее присутствии вызывается функция генерации вывода однотипных товаров:

 
            if (PHPShopParser::check($this->getValue('templates.main_product_odnotip_list'), 'productOdnotipList')) {
                $this->set('productOdnotipList', $disp);
                $this->set('productOdnotip', __('Рекомендуемые товары'));
            } else {