Если в инструкции указана необходимость создания файла, а в вашем шаблоне уже присутствует такой файл, то файл дополняется по правилам составления Дизайн-хуков. Для быстрого включения/выключения дизайн-хука нужно поставить знак решетки # перед его определением в 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] должен быть уникален, если требуется создать новый хук на тот же класс(ключ), то требуется объединить хуки по правилам составления дизайн-хуков.
Требуется в подробном описании товара изменить вывод таблицы характеристики товара, объединив их, согласно наборам характеристик.
Создать файл /phpshop/templates/имя шаблона/php/hook/sorttable.hook.php с содержанием
<?/*** Вывод имени набора характеристики*/function sort_table_get_category_name($category) {$PHPShopOrm = new PHPShopOrm($GLOBALS['SysValue']['base']['sort_categories']);$data=$PHPShopOrm->select(array('name'),array('id'=>'='.intval($category)),false,array('limit'=>1));return $data['name'];}/*** Вывод сортировок для товаров таблицей*/function sort_table_hook($obj, $row) {global $SysValue;$sort = $obj->PHPShopCategory->unserializeParam('sort');$vendor_array = unserialize($row['vendor_array']);$dis = null;if (is_array($sort))foreach ($sort as $v) {$sortCat.=' id=' . $v . ' OR';}$sortCat = substr($sortCat, 0, strlen($sortCat) - 2);if (!empty($sortCat)) {// Массив имен характеристик$PHPShopOrm = new PHPShopOrm();$PHPShopOrm->debug = $obj->debug;$result = $PHPShopOrm->query("select * from " . $SysValue['base']['table_name20'] . " where ($sortCat and goodoption!='1') order by num");while ($row = mysql_fetch_assoc($result)) {$arrayVendor[$row['id']] = $row;}if (is_array($vendor_array))foreach ($vendor_array as $v) {foreach ($v as $value)if (is_numeric($value))$sortValue.=' id=' . $value . ' OR';}$sortValue = substr($sortValue, 0, strlen($sortValue) - 2);if (!empty($sortValue)) {// Массив значений характеристик$PHPShopOrm = new PHPShopOrm();$PHPShopOrm->debug = $obj->debug;$result = $PHPShopOrm->query("select * from " . $SysValue['base']['table_name21'] . " where $sortValue order by num");while ($row = mysql_fetch_array($result)) {$arrayVendorValue[$row['category']]['name'] .= ", " . $row['name'];}// Создаем таблицу характеристик с учетом сортировкиif (is_array($arrayVendor))foreach ($arrayVendor as $idCategory => $value)if (!empty($arrayVendorValue[$idCategory]['name'])) {if (!empty($value['name'])) {if(empty($SortNameCatHook[$value['category']])){$dis.= PHPShopText::tr(PHPShopText::b(sort_table_get_category_name($value['category'])),'');$SortNameCatHook[$value['category']]=1;}if (!empty($value['page']))$dis.=PHPShopText::tr(PHPShopText::b($value['name']) . ': ', PHPShopText::a('../page/' . $value['page'] . '.html', substr($arrayVendorValue[$idCategory]['name'], 2)));else$dis.=PHPShopText::tr(PHPShopText::b($value['name']) . ': ', substr($arrayVendorValue[$idCategory]['name'], 2));}}$disp = PHPShopText::table($dis);$obj->set('vendorDisp', $disp);}}return true;}$addHandler = array('sort_table' => 'sort_table_hook',);
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
[hook]phpshopshop="php/hook/sorttable.hook.php";
Требуется добавить вывод таблицы с характеристиками в кратком описании товара в каталогах.
Создать файл /phpshop/templates/имя шаблона/php/hook/sort.hook.php с содержанием
<?/*** Вывод характеристик в кратком описании товара*/function checkStore_add_sorttable_hook($obj, $row) {if (empty($obj->category)) {$obj->PHPShopCategory = new PHPShopCategory($row['category']);}$obj->doLoadFunction('PHPShopShop', 'sort_table', $row, 'shop');return true;}$addHandler=array('checkStore'=>'checkStore_add_sorttable_hook');
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
[hook]phpshopshopcore="php/hook/sort.hook.php";
Добавить в шаблоны вывода краткого описания товаров /phpshop/templates/имя_шаблона/product/main_product_forma_XX.tpl
переменную @vendorDisp@
.
Требуется изменить форму вывода фильтров товара в ссылках вида (/shop/CID_XX.html) с выпадающего списка на ссылки.
Создать файл /phpshop/templates/имя шаблона/php/hook/cell.hook.php с содержанием
<?function cid_product_sorttemplate_hook($obj,$row,$rout){if($rout == 'START'){$obj->sort_template = 'sorttemplatehook';}}/*** Шаблон вывода характеристик*/function sorttemplatehook($value, $n, $title, $vendor) {$disp = null;if (is_array($value)) {foreach ($value as $p) {if (is_array($vendor[$n])) {foreach ($vendor[$n] as $value) {if ($value == $p[1])$text = PHPShopText::b($p[0]);else$text = $p[0];$disp.=PHPShopText::br() . PHPShopText::a('?v[' . $n . ']=' . $p[1], $text, $p[0], $color = false, $size = false, $target = false, $class = false);}}else {if ($vendor[$n] == $p[1])$text = PHPShopText::b($p[0]);else$text = $p[0];$disp.=PHPShopText::br() . PHPShopText::a('?v[' . $n . ']=' . $p[1], $text, $p[0], $color = false, $size = false, $target = false, $class = false);}}}return $disp;}$addHandler=array('CID_Product'=>'cid_product_sorttemplate_hook');
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
[hook]phpshopshop="php/hook/cell.hook.php";
Шаблон вывода фильтров находится в функции sorttemplatehook(), описанная на шаг выше.
По умолчанию на главной странице выводится 5 новостей. Требуется изменить количество новостей на 3.
Создать файл /phpshop/templates/имя шаблона/php/hook/newselement.hook.php с содержанием
<?/*** Изменение количества новостей на странице*/function newselement_hook($obj, $data, $rout) {if($rout == 'START'){$obj->limit = 3;}}$addHandler=array('index' => 'newselement_hook');
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
[hook]phpshopnewselement="php/hook/newselement.hook.php";
По умолчанию количеством новостей для вывода на одной странице управляет опция "Количество позиций на странице в магазине", которая так же управляет выводом самих товаров. Требуется убрать эту зависимость и выводить по 100 новостей на странице.
Создать файл /phpshop/templates/имя шаблона/php/hook/news.hook.php с содержанием
<?/*** Изменение количества новостей на странице*/function news_page_hook($obj, $data, $rout) {if($rout == 'START'){$obj->num_row=100;}}$addHandler=array('index' => 'news_page_hook');
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
[hook]phpshopnews="php/hook/news.hook.php";
По умолчанию мини-новости выводятся только на главной странице. Требуется убрать это ограничение.
Создать файл /phpshop/templates/имя шаблона/php/hook/newselement.hook.php с содержанием
<?/*** Изменение количества новостей на странице*/function news_element_hook($obj, $data, $rout) {if($rout == 'START'){$obj->disp_only_index=false;}}$addHandler=array('index' => 'news_element_hook');
Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием
[hook]phpshopnewselement="php/hook/newselement.hook.php";