Если в инструкции указана необходимость создания файла, а в вашем шаблоне уже присутствует такой файл, то файл дополняется по правилам составления Дизайн-хуков. Для быстрого включения/выключения дизайн-хука нужно поставить знак решетки # перед его определением в config.ini, пример:
  • #phpshopprice="php/hook/price.hook.php"; - выключен
  • phpshopprice="php/hook/price.hook.php"; - включен
или поставить знак решетки # в массиве перехвата $addHandler в файле хука, пример:
  • $addHandler=array(''''#'''product'=>'product_pricecore_hook'); - выключен
  • $addHandler=array('product'=>'product_pricecore_hook'); - включен
Ключ секции [hook] должен быть уникален, если требуется создать новый хук на тот же класс(ключ), то требуется объединить хуки по правилам составления дизайн-хуков.

Корзина

Персонализирование корзины товаров в заказе

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/order.hook.php с содержанием
    function productcartforma_hook($obj,$var,$rout) {
        global $PHPShopOrder;
        if($rout == 'START') {
    
            $obj->set('currency',$PHPShopOrder->default_valuta_code);
            $cart=$obj->PHPShopCart->display('ordercartforma');
            $obj->set('display_cart',$cart);
            $obj->set('cart_num',$obj->PHPShopCart->getNum());
            $obj->set('cart_sum',$obj->PHPShopCart->getSum(false));
            $obj->set('discount',$PHPShopOrder->ChekDiscount($obj->PHPShopCart->getSum()));
            $obj->set('cart_weight',$obj->PHPShopCart->getWeight());
    
            // Стоимость доставки
            PHPShopObj::loadClass('delivery');
            $obj->set('delivery_price',PHPShopDelivery::getPriceDefault());
    
            // Итоговая стоимость
            $obj->set('total',$PHPShopOrder->returnSumma($obj->get('cart_sum')+$obj->get('delivery_price'),$obj->get('discount')) );
    
            return ParseTemplateReturn('.//phpshop/templates/'.$_SESSION['skin'].'/order/cart.tpl',true);
        }
    }
    
    $addHandler=array
            (
      
        'product'=>'productcartforma_hook'
    
    );
    ?>
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
    [hook]
    phpshoporder="php/hook/order.hook.php";
  3. Скопировать файл шаблона /phpshop/lib/templates/order/cart.tpl в /phpshop/templates/имя шаблона/order/cart.tpl

Добавление иконки товара в корзину заказа

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/order.hook.php с содержанием
    function ordercartforma_hook($val,$option,$rout) {
        if($rout == 'START') {
    
            // Настройка для роутера START, если END, то комментировать строку ниже
            $val=$val[0];
            
            $PHPShopProduct = new PHPShopProduct($val['id']);
            PHPShopParser::set('cart_image',$PHPShopProduct->getParam('pic_small')); // Иконка
            PHPShopParser::set('cart_id',$val['id']);
            PHPShopParser::set('cart_art',$val['uid']); // Артикул
            PHPShopParser::set('cart_xid',$option['xid']);
            PHPShopParser::set('cart_name',$val['name']);
            PHPShopParser::set('cart_num',$val['num']);
            PHPShopParser::set('cart_price',$val['price']);
    
            return ParseTemplateReturn('.//phpshop/templates/'.$_SESSION['skin'].'/order/product.tpl',true);
        }
    }
    
    $addHandler=array
            (
            'ordercartforma'=>'ordercartforma_hook'
    
    );
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
    [hook]
    ordercartforma="php/hook/order.hook.php";
  3. Скопировать файл шаблона /phpshop/lib/templates/order/product.tpl в /phpshop/templates/имя шаблона/order/product.tpl
  4. Добавить переменную @cart_image@ в шаблон /phpshop/templates/имя шаблона/order/product.tpl

Изменение данных в мини-корзине

Требуется изменить переменную @num@ в мини-корзине с вывода общего количества товара на вывод количества элементов в корзине.
  1. Создать файл /phpshop/templates/имя шаблона/php/hook/cart.hook.php с содержанием
    /**
    * Изменение количества товара в мини-корзине
    */
    function miniCart_hook($obj) {
        $obj->set('num',count($_SESSION['cart']));
    }
    
    $addHandler=array
            (
            'miniCart'=>'miniCart_hook'
    );
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
    [hook]
    phpshopcartelement="php/hook/cart.hook.php";

Элементы

Уменьшение количества знаков в описании элемента спецпредложений

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/specindex.hook.php с содержанием
    /**
     * Уменьшение описания
     */
    function product_grid_hook($obj,$row){
        $obj->set('productDes',substr($row['description'],0,22).'...');
    }
     
    $addHandler=array
            (
            'product_grid'=>'product_grid_hook'
    );
    Функция урежет краткое описание до 22 символов. Вместо 22 можно указать требуемое количество знаков.
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
    [hook]
    phpshopproductelements="php/hook/specindex.hook.php";

Добавление четвертого товара в элементе спецпредложений

В элементе спецпредложений на главной странице можно выставит параметр вывода товара от 1 до 3 (Настройка "Товаров в длину для витрины главной страницы"). Для добавления 4-го товара следуйте инструкции.
  1. Создать файл /phpshop/templates/имя шаблона/php/hook/specindex.hook.php с содержанием
    /**
     * Добавление 4-го товара
     */
    function specMain_hook($obj) {
        $obj->cell=4;
    }
     
    $addHandler=array
            (
            'specMain'=>'specMain_hook'
    );
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
    [hook]
    phpshopproductindexelements="php/hook/specindex.hook.php";

Изменение сетки и количества товара в элементе новинки

Требуется изменить сетку и количество товаров для переменной новинок @specMainIcon@.
  1. Создать файл /phpshop/templates/имя шаблона/php/hook/mainnew.hook.php с содержанием
    /**
     * Изменение сетки товаров в "Новинках"
     */
    function specMainIcon_hook($obj) {
        
        $obj->cell=2; // Размер сетки, вывод в 2 товара длиной
        $obj->limitspec=4; // Количество выводимых товаров
    
    }
    
    $addHandler = array
        (
        'specMainIcon' => 'specMainIcon_hook'
    );
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
    [hook]
    phpshopproducticonelements="php/hook/mainnew.hook.php";

Изменение количества товара в элементе сейчас покупают

Требуется изменить количество товаров для выборки и количество последних анализируемых заказов. Показывать только 5 последних заказанных товаров из 5 последних заказов.
  1. Создать файл /phpshop/templates/имя шаблона/php/hook/nowbuy.hook.php с содержанием
    /**
     * Изменение сетки товаров в "Сейчас покупают"
     */
    function nowBuy_hook($obj) {
       $obj->limitpos = 5; // Количество выводимых позиций
       $obj->limitorders = 5; // Количество запрашиваемых заказов
       $obj->cell=3; // Кол-во товара в длину
    }
    
    $addHandler=array
            (
            'nowBuy'=>'nowBuy_hook'
             );
    ?>
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
     [hook]
    phpshopproductindexelements="php/hook/nowbuy.hook.php";

Изменение количества товаров в элементе вывода новинок и спецпредложений на всех страницах

Требуется изменить количество товаров в длину в элементе новинки, выводимой через переменную @specMainIcon@.
  1. Создать файл /phpshop/templates/имя шаблона/php/hook/specicon.hook.php с содержанием
    /**
     * Изменение сетки товаров в спецпредложениях
     */
    function specMainIcon_hook($obj) {
    
        // Корректируем кол-во товаров для вывода
        $obj->limitspec=2;
    }
     
    $addHandler=array
            (
            'specMainIcon'=>'specMainIcon_hook',
    );
    
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
     [hook]
    phpshopproducticonelements="php/hook/specicon.hook.php";

Изменение количества мини-новостей

Требуется изменить кол-во мини-новостей с 5 (по умолчанию) на 4 из-за особенностей дизайна. Сделать возможным вывод мини-новостей с помощью @miniNews@ на всех страницах.
  1. Создать файл /phpshop/templates/имя шаблона/php/hook/news.hook.php с содержанием
    /**
     * Изменение кол-ва новостей на главной странице
     */
    function news_index_hook($obj,$row,$rout) {
    
        if($rout == 'START'){
    
        // Кол-во
        $obj->limit=4;
    
        // Ограничение вывода только на главной
        $obj->disp_only_index=false;
        }
    }
    
    $addHandler=array
            (
            'index'=>'news_index_hook',
    );
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
    [hook]
    phpshopnewselement="php/hook/news.hook.php";

Изменение вида ссылок на подкаталоги в элементе таблица категорий

На главной странице доступен вывод таблицы категорий с иконками через переменную @leftCatalTable@, требуется изменить вид перечня подкатегорий.
  1. Создать файл /phpshop/templates/имя шаблона/php/hook/catalogelement.hook.php с содержанием
    /**
     * Изменение шаблона ссылок таблицы категорий со строки на столбик
     */
    function template_cat_table_hook($obj,$val) {
        return PHPShopText::a('/shop/CID_'.$val['id'].'.html',$val['name'],$val['name']).PHPShopText::br();
    }
    
    $addHandler=array
            (
            'template_cat_table'=>'template_cat_table_hook'
    );
  2. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
    [hook]
    phpshopshopcatalogelement="php/hook/catalogelement.hook.php";
Шаблон блока каталога в таблице находится в /phpshop/templates/имя шаблона/catalog/catalog_table_forma.tpl

© PHPShop™, 2004-2019г. Все права защищены.
Тел: +7-495-989-11-15 (многоканал.), пн - пт, 10.00 - 18.00