Если в инструкции указана необходимость создания файла, а в вашем шаблоне уже присутствует такой файл, то файл дополняется по правилам составления Дизайн-хуков. Для быстрого включения/выключения дизайн-хука нужно поставить знак решетки # перед его определением в config.ini, пример:
Ключ секции [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 с содержанием
По умолчанию количеством новостей для вывода на одной странице управляет опция "Количество позиций на странице в магазине", которая так же управляет выводом самих товаров. Требуется убрать эту зависимость и выводить по 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 с содержанием