Если в инструкции указана необходимость создания файла, а в вашем шаблоне уже присутствует такой файл, то файл дополняется по правилам составления . Для быстрого включения/выключения дизайн-хука нужно поставить знак решетки # перед его определением в config.ini, пример:
Ключ секции [hook] должен быть уникален, если требуется создать новый хук на тот же класс(ключ), то требуется объединить хуки по правилам составления дизайн-хуков.
Поиск
Изменение сетки вывода товара
В форме вывода результат поиска используется ячейка в 5 товаров, нужно его поменять на вывод в ячейку 4 товаров.
Создать файл /phpshop/templates/имя шаблона/php/hook/phpshopsearch.hook.php с содержанием:
<?php
/**
* Изменение сетки товаров в поиске
*/
function template_category_select($obj,$row,$rout) {
// Корректировка количества товара на странице поиска
$obj->num_row=10;
// Задаем сетку
$obj->cell=4;
}
$addHandler=array
(
'category_select' => 'template_category_select'
);
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием:
Требуется в подробном описании товара создать дополнительную метку вывода характеристики "Тип загрузки". За вывод подробного описания товара отвечает шаблон /phpshop/templates/имя_шаблона/product/main_product_forma_full.tpl. Для добавления новой закладки следует добавить в него переменную @addseamplysort@. Переменную вывода значение характеристики @addseamplysort@ зададим через дизайн хук класса PHPShopShop.
Создать файл /phpshop/templates/имя шаблона/php/hook/sort.hook.php с содержанием:
<?php
/**
* Вывод значения характеристики
*/
function UID_addseamplysort_hook($obj,$row,$rout) {
if($rout == 'MIDDLE'){
PHPShopObj::loadClass('sort');
$search= new PHPShopSortSearch('Тип загрузки');
$obj->set('addseamplysort',$search->search(unserialize($row['vendor_array'])));
}
}
$addHandler=array
(
'UID'=>'UID_addseamplysort_hook',
);
Для вывода характеристики используем класс PHPShopSortSearch с параметров в виде имени требуемой характеристики.
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием:
[hook]
phpshopshop="php/hook/sort.hook.php";
Изменение сортировки товара по дате в спецпредложениях
Требуется изменить сортировку по умолчанию в каталоге товаров на странице /spec/ на вывод товаров в убывающем порядке на основе параметра даты создания/изменения товара.
Создать файл /phpshop/templates/имя шаблона/php/hook/spec.hook.php с содержанием:
<?php
/**
* Изменение сортировки товара в спецпредложениях
*/
function query_filter_speccore_hook() {
if (empty($_GET['f']) and empty($_GET['f']) and empty($_GET['s']))
return array('order' => 'datas desc');
}
$addHandler = array
(
'query_filter' => 'query_filter_speccore_hook'
);
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием:
[hook]
phpshopspec="php/hook/spec.hook.php";
Дописывание в имя товара данных из значений характеристик
Требуется дописать в имя товара значение характеристики Бренд. Имеем имя товара "Машинка для стрижки 5070", требуется выводить "Машинка для стрижки 5070 PHILIPS".
Создать файл /phpshop/templates/имя шаблона/php/hook/name.hook.php с содержанием:
<?php
// Глобальный массив данных по требуемой характеристики. Указываем имя Бренд, по которому будет производиться поиск.
PHPShopObj::loadClass('sort');
if(empty($GLOBALS['PHPShopSortSearch']))
$GLOBALS['PHPShopSortSearch'] = new PHPShopSortSearch('Бренд');
/**
* Добавление имени характеристики к товару
*/
function product_grid_hook($obj,$row) {
global $PHPShopSortSearch;
// Ищем значение характеристики
$sort=$PHPShopSortSearch->search(unserialize($row['vendor_array']));
// Дописываем бренд в конец имени товара
$obj->set('productName',' ('.$sort.')',true);
// Дописываем бренд в конец описания
$obj->set('productDes',' Бренд: '.$sort,true);
}
$addHandler=array
(
'product_grid'=>'product_grid_hook',
'UID'=>'product_grid_hook'
);
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием:
Для вывода значения Мощность вместо Бренд нужно указать требуемое имя в вызове класса $GLOBALS['PHPShopSortSearch'] = new PHPShopSortSearch('Мощность'); Имя характеристики должно совпадать по базе в точности до буквы.
Добавление шестого товара в ячейке каталога
В карточке каталога можно выставит параметр вывода товара от 1 до 5.
Создать файл /phpshop/templates/имя шаблона/php/hook/shopcore.hook.php с содержанием:
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием:
[hook]
phpshopshop="php/hook/shopcore.hook.php";
Создать копию шаблона /phpshop/templates/имя_шаблона/product/main_product_forma_5.tpl под именем main_product_forma_6.tpl
Снятие лимита на вывод всех товаров
Ссылка "Показать все" по умолчанию выводит не более 100 товаров из-за возможности наложения лимитов у хостингов. При наличии мощного хостинга и нужды вывода всех товаров, можно изменить этот лимит.
Создать файл /phpshop/templates/имя шаблона/php/hook/shopcore.hook.php с содержанием:
<?php
/**
* Изменение лимита вывода товаров до 500
*/
function CID_Product_hook($obj,$row,$rout) {
if($rout == 'START'){
$obj->max_item=500;
}
}
$addHandler=array
(
'CID_Product'=>'CID_Product_hook'
);
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием:
[hook]
phpshopshop="php/hook/shopcore.hook.php";
Добавление автоматического переноса строк в карточку подробного описания товара
Необходимо заменять переводы строк \n на тег <br> на странице подробного описания.
Создать файл /phpshop/templates/имя шаблона/php/hook/description.hook.php с содержанием:
<?php
/**
* Добавление краткого описания
*/
function UID_description_hook($obj,$row,$rout) {
if($rout == "MIDDLE")
$obj->set('productDes',nl2br($row['content']));
}
$addHandler=array
(
'UID'=>'UID_description_hook'
);
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием:
В зависимости от задачи, добавить соответствующую новую переменную @productSmallDescription@ в шаблон вывода товара /phpshop/templates/имя_шаблон/product/main_product_forma_full.tpl.
Замена информации о наличии товара на складе
Необходимо заменить надпись при выводе товара "В наличие: кол-во шт." на картинку. Если товар есть в наличии, выводится одна картинка, если товара в наличии нету - выводится другая картинка.
Создать файл /phpshop/templates/имя шаблона/php/hook/items.hook.php и /phpshop/templates/имя шаблона/php/hook/phpshopproductelements.hook.php и с содержанием:
<?php
/**
* Изменение вида информации о складе
*/
function checkStore_hook($obj,$row) {
// Изображение наличие на складе
if(empty($row['items']))
$obj->set('productSklad',PHPShopText::img('/phpshop/templates/faqbootstrap/images/shop/items_on.gif'));
else $obj->set('productSklad',PHPShopText::img('/phpshop/templates/faqbootstrap/images/shop/items_off.gif'));
// Изображение товар под заказ
if(empty($row['sklad']))
$obj->set('enabledIco',PHPShopText::img('/phpshop/templates/faqbootstrap/images/shop/sklad_onn.gif'));
// Изображение наличие иконки к товару
if(!empty($row['pic_small']))
$obj->set('picOn',PHPShopText::img('/phpshop/templates/faqbootstrap/images/shop/pic_on.gif'));
// Изображение статуса новинки
if(!empty($row['newtip']))
$obj->set('newtipIco',PHPShopText::img('/phpshop/templates/faqbootstrap/images/shop/newtip_ok.gif'));
// Изображение статуса спецпредложения
if(!empty($row['spec']))
$obj->set('newtipIco',PHPShopText::img('/phpshop/templates/faqbootstrap/images/shop/spec_ok.gif'));
// Прячем вывод цена и корзины при нулевой цене
if(empty($row['price'])) {
$obj->set('ComStartCart', PHPShopText::comment('<'));
$obj->set('ComEndCart', PHPShopText::comment('>'));
$obj->set('productPrice', null);
$obj->set('productValutaName', null);
}
return true;
}
$addHandler=array
(
'checkStore'=>'checkStore_hook'
);
где items_on.gif- путь картинки положительного склада, items_off.gif - отрицательного склада и т.д. Картинки должны лежать в папке /phpshop/templates/имя_шаблона/images/shop/
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием:
В зависимости от задачи, добавить соответствующие новые переменные @newtipIco@, @enabledIco@, @picOn@ в шаблоны вывода товара main_product_forma_х.tpl], где х - значение кол-ва товаров в ряд (1-5).
Добавление второй цены
Требуется вывести вторую цену товара.
Создать файл /phpshop/templates/имя шаблона/php/hook/items.hook.php с содержанием:
<?php
function checkStore_hook($obj,$row) {
// Вторая цена
$obj->set('productPrice2',PHPShopProductFunction::GetPriceValuta($row['id'],$row['price2'],$row['baseinputvaluta']));
// Если нужны остальные цены
$obj->set('productPrice3',PHPShopProductFunction::GetPriceValuta($row['id'],$row['price3'],$row['baseinputvaluta']));
$obj->set('productPrice4',PHPShopProductFunction::GetPriceValuta($row['id'],$row['price4'],$row['baseinputvaluta']));
$obj->set('productPrice5',PHPShopProductFunction::GetPriceValuta($row['id'],$row['price5'],$row['baseinputvaluta']));
return true;
}
$addHandler=array
(
'checkStore'=>'checkStore_hook'
);
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием:
[hook]
phpshopshopcore="php/hook/items.hook.php";
Добавить переменную @productPrice2@ во все требуемые шаблоны вывода товара из папки /phpshop/templates/имя шаблона/product/main_product_forma_XX.tpl
Добавление второй цены в другой валюте
Требуется вывести вторую цену товара в другой валюте рядом с первой.
Создать файл /phpshop/templates/имя шаблона/php/hook/items.hook.php с содержанием:
<?php
function checkStore_hook($obj,$row) {
global $PHPShopValutaArray;
// ИД второй валюты
$duo_currency=5;
$Valuta=$PHPShopValutaArray->getArray();
$format = $obj->PHPShopSystem->getSerilizeParam("admoption.price_znak");
// Если валюта совпадает
if($_SESSION['valuta'] == $duo_currency) {
$currency=$obj->PHPShopSystem->getValue('dengi');
}
else
$currency=$duo_currency;
$price=PHPShopProductFunction::GetPriceValuta($row['id'],$row['price'],$row['baseinputvaluta']);
$code=$Valuta[$currency]['code'];
// Если валюта совпадает
if($_SESSION['valuta'] == $duo_currency) {
echo 1;
$price=$price/$Valuta[$duo_currency]['kurs'];
}
else {
$price=$price*$Valuta[$currency]['kurs'];
}
// Наценка
$price=($price+(($price*$obj->PHPShopSystem->getValue('percent'))/100));
$obj->set('productPrice2',number_format($price,$format,'.','').' '.$code);
return true;
}
$addHandler=array
(
'checkStore'=>'checkStore_hook'
);
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием:
[hook]
phpshopshopcore="php/hook/items.hook.php";
Добавить переменную @productPrice2@ во все требуемые шаблоны вывода товара из папки /phpshop/templates/имя шаблона/product/main_product_forma_XX.tpl
Указать ИД требуемой валюты для второй цены в переменной $duo_currency.