Характеристики и новости

Если в инструкции указана необходимость создания файла, а в вашем шаблоне уже присутствует такой файл, то файл дополняется по правилам составления Дизайн-хуков. Для быстрого включения/выключения дизайн-хука нужно поставить знак решетки # перед его определением в 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/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',
);
  1. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

Вывод таблицы характеристик в кратком описании товара

Требуется добавить вывод таблицы с характеристиками в кратком описании товара в каталогах.

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/sort.hook.php с содержанием

  1. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

  1. Добавить в шаблоны вывода краткого описания товаров /phpshop/templates/имя_шаблона/product/main_product_forma_XX.tpl переменную @vendorDisp@.

Изменение шаблона вывода фильтров товара

Требуется изменить форму вывода фильтров товара в ссылках вида (/shop/CID_XX.html) с выпадающего списка на ссылки.

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/cell.hook.php с содержанием

  1. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

Шаблон вывода фильтров находится в функции sorttemplatehook(), описанная на шаг выше.

Новости

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

По умолчанию на главной странице выводится 5 новостей. Требуется изменить количество новостей на 3.

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/newselement.hook.php с содержанием

  1. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

Изменение количества новостей на странице /news/

По умолчанию количеством новостей для вывода на одной странице управляет опция "Количество позиций на странице в магазине", которая так же управляет выводом самих товаров. Требуется убрать эту зависимость и выводить по 100 новостей на странице.

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/news.hook.php с содержанием

  1. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

Вывод мини-новостей на всех страницах

По умолчанию мини-новости выводятся только на главной странице. Требуется убрать это ограничение.

  1. Создать файл /phpshop/templates/имя шаблона/php/hook/newselement.hook.php с содержанием

  1. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

Last updated