PHPShop
  • 🟠PHPShoр: прибыльные магазины для малого бизнеса
  • С чего начать?
    • Быстрый старт
    • ✨Помощь AI
    • SEO возможности
    • Ведение склада
    • Pro модули
    • Виды скидок
    • Конфигурации
    • Цифровые товары
  • Установка, обновление
    • Установка на хостинг
    • Установка на компьютер
    • После покупки Лицензии
    • Техническая поддержка
    • Обновление PHPShop
    • 📦Коробочная версия
    • 🖥️Аренда на своем хостинге
    • ☁️Аренда в облаке
  • ⤵️Наполнение базы
    • Переезд и миграция
    • Импорт / Экспорт:
      • Excel
      • YML
      • RSS
      • CommerceML
      • Сторонние XML
      • Сторонние парсеры
        • Пример загрузки товаров с сайта Sima-land.ru
      • Парсер PriceLoader
    • Импорт по расписанию
    • Интерактивный .xls прайс с корзиной
    • Пакетная загрузка фото
    • Пакетное редактирование базы
    • Бекап и очистка базы
  • 🌟Синхронизация Pro
    • 🟠1С
      • Версии и конфигурации 1С
      • Встроенный типовой обмен CommerceML (для новых версий 1С)
      • Тестирование связи с 1С на демо-версии
      • Установка и активация внешнего обработчика 1С (для старых версий 1С)
      • Инструкции по внешнему обработчику 1С (для старых версий 1С)
      • Видео-уроки по внешнему обработчику 1С (для старых версий 1С)
      • Дополнительные обработчики (для старых версий 1С)
        • Редактор описаний в 1С
        • Импорт прайс-листов в 1С
        • Загрузка изображений в 1С
    • 🔵МойСклад
    • 🔵OZON
    • 🟣Wildberries
    • 🟢Мегамаркет
    • ⚫Яндекс.Маркет
    • 🟢Avito
    • 🔵Вконтакте
  • ⤴️Выгрузка товаров
    • Яндекс и Google
  • 📦Товары
    • Ручное добавление каталогов, товаров
    • Работа с изображениями
    • Характеристики, фильтры
    • Подтипы
    • Мультисклад
    • Витрины
    • Поиск
  • 📈Заказы
    • Работа с заказами
    • Способы оплаты
      • Наличная оплата
      • Счет в банк
      • Платежные системы
      • Скидки от вида оплаты
    • Настройка доставок
    • Telegram, VK, SMS, PUSH
    • Ценообразование
  • 🌟Бесплатные модули
    • 100+ бесплатных модулей:
    • ⭐Pro модули
    • Дизайн
      • Stiker - стикер
      • Кнопки
      • Count Cat
      • Filemanager
      • Пакетная обработка фото на сервере (Генератор превью картинок)
      • Mobile
      • Панорама 360°
      • Snow
    • SEO
      • SeoUrl
      • Seo Meta Новости
      • Карта сайта SiteMap
      • Карта сайта SiteMap Pro
    • Доставки
      • Почта России
      • Saferoute Widget
      • Boxberry Widget
      • Яндекс Доставка
      • CDEK Widget
      • Калькулятор доставки
      • Нова пошта
      • Бланки Почты России
      • Виджет доставок
    • Чаты и звонки
      • Cleversite
      • Мультиязычность Google Translate
      • Envybox
      • JivoSite
      • Pozvonim
      • Обратный звонок
      • Verbox
    • CRM
      • МойСклад
      • 📊Bitrix24
      • 📈retailCRM
      • 🔊Рекламные кампании
      • Unisender
    • Маркетплейсы
      • 🟣WB Partners
      • 🔵OZON Seller
      • ⚫Яндекс.Маркет
      • 🟢Мегамаркет
      • 🟢Авито
      • 🔵VK
      • Модуль Маркетплейсы: Яндекс.Маркет, СберМегаМаркет AliExpress, Google Merchant
    • Платежные системы
      • Банки
        • Альфа-банк
        • ВТБ
        • Банк Авангард
        • МодульБанк
        • Т-Банк
      • Кассы
        • Онлайн касса Атол
        • Печка54
        • CloudKassir
        • Robokassa
        • Модулькасса
      • Платежные системы агрегаторы
        • ЮKassa
        • ЮMoney
        • IntellectMoney
        • Mandarin
        • 2can&ibox
        • NovaPay
        • AcquiroPay
        • Idram
        • Assist
        • CloudPayments
        • Easypay
        • PayKeeper
        • Fondy
        • LiqPay
        • PayOnline
        • PayPal
        • Uniteller
      • Платежные шлюзы
        • PayAnyWay (Монета) платежный шлюз
        • PayMaster
        • Interkassa
        • Platron
        • Webmoney
        • Счет в банк
    • Кредитование
      • Купи в рассрочку Долями
      • Покупка в кредит от Alfabank Credit
      • Купить в кредит Почта Банк
      • Купи в кредит Т-Банк
    • Яндекс
      • Яндекс.Маркет
      • Яндекс.Карта
    • Продажи
      • Подарок - товар с 0₽ в корзине
      • Оптовые акции - скидки от количества товара в заказе
      • Хиты продаж
      • Свойства товаров
      • Комплектующие
      • Заказ в 1 клик
      • Sort Selection - сквозной фильтр на главной
      • Товар дня
      • Группы товаров - продажа комплектов
      • Промокоды
      • Услуги сборки, монтажа в карточке товара
      • Product Similar похожие товары по характеристикам
      • Product List похожие товары из каталога
      • Product Last View - просмотренные товары
      • Sort Brand - подборки по характеристикам
      • Sort Product - товары по характеристикам
      • Visual Cart - брошенные корзины
      • Партнерская программа
    • Разработчикам
      • Умный поиск
      • Adm Log
      • WebHooks
      • Form Generator
      • История заказов
      • GeoIP
      • Замок
      • Product Option
      • Debug
      • Задачи
      • Защитник файлов Guard
  • 👫Пользователи
    • Покупатели
    • Статусы и скидки
    • Бонусы
    • Авторизация и регистрация
  • 👤Администраторы
    • Администраторы
    • Восстановление пароля
    • Журнал авторизации
  • 🎯Маркетинг
    • Канбан доска
    • Промоакции
    • Почтовые рассылки
    • Баннеры и pop-up
  • 💻Веб-сайт
    • Страницы
    • Отзывы
    • Новости
    • Пиксель, счетчики
  • ⚒️Настройки
    • Основные настройки
    • Реквизиты
    • Обмен данными
    • SEO настройки
    • Валюты
    • Изображения
    • Витрины
    • Склады
    • Диалоги и чаты
    • Интеграция с сервисами
    • Быстродействие (кеширование)
    • Интеграция с Yandex Cloud
    • Локализация
    • Обслуживание
  • 🎨Дизайн
    • Настройка шаблона
    • HTML Верстальщику
    • 🔦Шпаргалка по шаблонам
  • 👨‍💻API
    • PHP API
    • JSON API
    • Создание модулей - правка API через файлы модулей
    • Создание хуков - правка API через функции
    • Создание дизайн-хуков - правка API через файлы дизайна
    • База дизайн-хуков
      • Характеристики и новости
      • Заказы и личный кабинет
      • Каталоги и прайс-лист
      • Поиск и товары
      • Корзина и элементы
    • Создание 1С-хуков
      • API синхронизации интернет-магазина с 1С
      • Изменение API синхронизации с 1С
  • EasyControl
    • Установка
    • PriceLoader
    • Monitor
    • Updater
Powered by GitBook
On this page
  • Характеристики
  • Группировка таблицы характеристик по наборам
  • Вывод таблицы характеристик в кратком описании товара
  • Изменение шаблона вывода фильтров товара
  • Новости
  • Изменение количества мини-новостей на главной странице
  • Изменение количества новостей на странице /news/
  • Вывод мини-новостей на всех страницах

Was this helpful?

  1. API
  2. База дизайн-хуков

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

Last updated 4 years ago

Was this helpful?

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

[hook]
phpshopshop="php/hook/sorttable.hook.php";

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

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

  1. Создать файл /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'
);
  1. Создать файл /phpshop/templates/имя шаблона/php/inc/config.ini с содержанием

[hook]
phpshopshopcore="php/hook/sort.hook.php";
  1. Добавить в шаблоны вывода краткого описания товаров /phpshop/templates/имя_шаблона/product/main_product_forma_XX.tpl переменную @vendorDisp@.

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

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

  1. Создать файл /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'

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

[hook]
phpshopshop="php/hook/cell.hook.php";

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

Новости

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

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

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

<?
/**
 * Изменение количества новостей на странице
 */
function newselement_hook($obj, $data, $rout) {
 
         if($rout == 'START'){
            $obj->limit = 3;
         }    
}

$addHandler=array
        (
            'index' => 'newselement_hook'

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

[hook]
phpshopnewselement="php/hook/newselement.hook.php";

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

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

  1. Создать файл /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'

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

[hook]
phpshopnews="php/hook/news.hook.php";

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

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

  1. Создать файл /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'

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

 [hook]
phpshopnewselement="php/hook/newselement.hook.php";
👨‍💻
Дизайн-хуков