Design Hook Add Copy leftCatal

Материал из PHPShop

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

Требуется вывести элемент каталога товаров @leftCatal@ в виде его зеркала под именем переменной @leftCatal2@ с измененным стилем вывода.

Вариант 1

Создадим новый элемент каталога в качестве потомка основного элемента каталога, заменим в нем требуемые методы под свои задачи. Требуется изменить стиль форматирования вывода подкаталогов.

Инструкция:

  • Создать файл phpshop/templates/имя шаблона/php/element/catalog.inc.php с содержанием
<?php
/**
 * Элемент вывода двойника каталога
 */
class AddToTemplateCatalogElement extends PHPShopShopCatalogElement {
    var $debug=false;
 
    function AddToTemplateCatalogElement() {
        parent::PHPShopShopCatalogElement();
    }
 
    function index(){
        return parent::leftCatal();
    }
 
    function subcatalog($parent_data) {
 
        // ID родителя
        $n = $parent_data['id'];
        $dis = null;
 
        $PHPShopOrm = new PHPShopOrm($this->objBase);
        $PHPShopOrm->cache_format = $this->cache_format;
        $PHPShopOrm->cache = $this->cache;
        $PHPShopOrm->debug = $this->debug;
 
        $where['parent_to'] = '=' . $n;
 
        $data = $PHPShopOrm->select(array('*'), $where, array('order' => 'num'), array('limit' => 100), __CLASS__, __FUNCTION__);
 
        if (is_array($data))
            foreach ($data as $row) {
 
                // Определяем переменные
                $this->set('catalogName', $row['name']);
                $this->set('catalogUid', $row['id']);
                $this->set('catalogTitle', $row['name']);
 
                // Перехват модуля
                $this->setHook(__CLASS__, __FUNCTION__, $row);
 
                // Подключаем новый персональный шаблон podcatalog_forma_2.tpl
                $dis.=ParseTemplateReturn($this->getValue('templates.podcatalog_forma_2'));
            }
        return $dis;
    }
 
}
 
 
// Добавляем в шаблон элемент второго каталога
$AddToTemplateCatalogElement = new AddToTemplateCatalogElement();
$AddToTemplateCatalogElement->init('leftCatal2');
?>
  • Создать файл phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
 
[autoload]
addcatalogtemplate="php/element/catalog.inc.php";
  • Вставить в главные шаблоны phpshop/templates/имя шаблона/main/index.tpl и phpshop/templates/имя шаблона/main/shop.tpl переменную @leftCatal2@ в нужное место.

Вариант 2

Используем аргумент $replace метода leftCatal() класса PHPShopShopCatalogElement. Зададим массив для замены стилей в этом элементе.

Инструкция:

  • Вставить в главные шаблоны phpshop/templates/имя шаблона/main/index.tpl и phpshop/templates/имя шаблона/main/shop.tpl в нужное место код:
<?php
@php
 
$replace=array("podCatTiTOut"=>"TiTOut","podCatTiTOver"=>"TiTOver","divCatId"=>"divCatIdBot");
echo $GLOBALS['PHPShopShopCatalogElement']->leftCatal($replace);
 
php@
?>

в примере стиль(вхождение слова в шаблоне) podCatTiTOut заменится на TiTOut, podCatTiTOver на TiTOver и divCatId на divCatIdBot.