Онлайн-руководство разработчика NetCat
Модуль «Поиск по сайту» 12.2.1Начало работы с модулем 12.2.2Язык запросов 12.2.3Способы хранения индекса 12.2.4Интерфейс модуля в панели управления сайтом 12.2.5Области индексирования 12.2.6Области HTML-страниц 12.2.7Области поиска на сайте 12.2.8Индексирование по расписанию, запуск индексирования в фоновом режиме 12.2.9Правила индексирования 12.2.10Постановка задачи переиндексирования в очередь 12.2.11Интеграция модуля в макеты дизайна сайта 12.2.12Простая форма поиска 12.2.13Расширенная форма поиска 12.2.14Вывод результатов поиска 12.2.15Стилизация списка подсказок 12.2.16Расширенные настройки 12.2.17Разработка расширений модуля 12.2.18Обзор архитектуры модуля 12.2.19Обработчики документов различных типов 12.2.20Текстовые фильтры 12.2.21Анализаторы текста 12.2.22Корректировщики запросов 12.2.23Подключение других поисковых систем 12.2.24Решение проблем с поиском 12.2.25Решение проблем с индексированием 12.2.26Справочник API

Списки товаров

Существуют три типа списков товаров:

  • последние просмотренные
  • избранное
  • список сравнения

 

Доступ к этим спискам осуществляется через объект nc_netshop:

  • $nc_netshop->goodslist_recent
  • $nc_netshop->goodslist_favorite
  • $nc_netshop->goodslist_compare

Для совершения операций над отдельными объектами либо списками объектов необходимо использовать следующие методы:

add($item_id, $class_id) — добавление товара

  • $item_id — номер объекта
  • $class_id — номер компонента

remove($item_id, $class_id) — удаление товара из списка

  • $item_id — номер объекта
  • $class_id — номер компонента

remove_by_index($index, $sort = 'ASC') — удаление товара из списка, с указанием порядкового номера

  • $index — номер объекта
  • $sort — способ сортировки

clear() — удаление из списка всех товаров

get_all($sort = 'ASC', $limit = 3) — вывод списка товаров

  • $sort — метод сортировки
  • $limit — количество выводимых товаров

get($index, $sort = 'ASC') — вывод товара из списка, с указанием порядкового номера

  • $index — номер объекта
  • $sort — способ сортировки

toggle($item_id, $class_id) — добавление или удаление товара в список, используя одну кнопку или ссылку

  • $item_id — номер объекта
  • $class_id — номер компонента

Приведём примеры использования методов.

 

Последние просмотренные

Для вывода списка последних просмотренных товаров воспользуйтесь виджетом «Интернет-магазин: Последние просмотренные товары» либо самостоятельно настройте отображение списка товаров при помощи метода $netshop->goodslist_recent->get_all);

Пример формирования списка просмотренных товаров:

<?php
require_once($nc_core->MODULE_FOLDER . 'netshop/function.inc.php');
$netshop = nc_netshop::get_instance();
$recent_goods = $netshop->goodslist_recent->get_all('DESC');
?>
<div class="tpl-block">
    <? if (count($recent_goods)) { ?>
        <?php
        foreach ($recent_goods as $item) {
        $item = nc_netshop_item::by_id($item['Class_ID'], $item['Item_ID']);
        ?>
        <div class="item">
            <a class="link" href="<?= nc_message_link($item['Message_ID'], $item['Class_ID']); ?>">
                <div class="title">
                    <?= $item['Name']; ?>
                </div>
                <div class="description"><?= $item['Note']; ?></div>
                <div class="image"><img src="<?= $item['BigImage']; ?>"></div>
            </a>
        </div>
        <?php } ?>
    <?php } ?>
</div>

 

Добавить в избранное

Для того, чтобы добавить товар в избранное, в ссылке нужно прописать вызов метода $nc_netshop->goodslist_favorite и метод get_toggle_action_url. В метод get_toggle_action_url необходимо передать значения переменных $item_id, $class_id, номер объекта и номер класса.

Ссылка формируется следующим образом:

<a href='<?= $netshop->goodslist_favorite->get_toggle_action_url($item['Message_ID'], $item['Class_ID']); ?>'>В избранное</a>

Для вывода списка товаров воспользуйтесь виджетом «Интернет-магазин: Сравнение товаров», настроив его нужным вам образом, либо самостоятельно сформируйте вывод при помощи метода $netshop->goodslist_favorite->get_all();

Пример формирования списка просмотренных товаров:

<?php
require_once($nc_core->MODULE_FOLDER . 'netshop/function.inc.php');
$netshop = nc_netshop::get_instance();
$recent_goods = $netshop->goodslist_favorite->get_all('DESC');
?>
<div class="tpl-block">
    <? if (count($recent_goods)) { ?>
        <?php
        foreach ($recent_goods as $item) {
        $item = nc_netshop_item::by_id($item['Class_ID'], $item['Item_ID']);
        ?>
        <div class="item">
            <a class="link" href="<?= nc_message_link($item['Message_ID'], $item['Class_ID']); ?>">
                <div class="title">
                    <?= $item['Name']; ?>
                </div>
                <div class="description"><?= $item['Note']; ?></div>
                <div class="image"><img src="<?= $item['BigImage']; ?>"></div>
            </a>
        </div>
        <?php } ?>
    <?php } ?>
</div>

 

Сравнение товаров

Механизм сравнения товаров похож добавлению в избранное, за исключением того, что здесь необходимо использовать метод $nc_netshop->goodslist_compare

Для добавления товара в список сравнения нужно использовать метод get_add_action_url($item_id, $class_id), для удаления из списка get_remove_action_url($item_id, $class_id), в методе необходимо передать значения переменных $item_id$class_id, номер объекта и номер класса.

Пример формирования списка товаров, добавленных для сравнения:

<?php
require_once($nc_core->MODULE_FOLDER . 'netshop/function.inc.php');
$netshop = nc_netshop::get_instance();
$recent_goods = $netshop->goodslist_compare->get_all('DESC');
?>
<div class="tpl-block">
    <? if (count($recent_goods)) { ?>
        <?php
        foreach ($recent_goods as $item) {
        $item = nc_netshop_item::by_id($item['Class_ID'], $item['Item_ID']);
        ?>
        <div class="item">
            <a class="link" href="<?= nc_message_link($item['Message_ID'], $item['Class_ID']); ?>">
                <div class="title">
                    <?= $item['Name']; ?>
                </div>
                <div class="description"><?= $item['Note']; ?></div>
                <div class="image"><img src="<?= $item['BigImage']; ?>"></div>
            </a>
        </div>
        <?php } ?>
    <?php } ?>
</div>

Комментарии 5

Дмитрий  Life-work 08 июля 2014, 16:10:33
А где популярные товары? Теперь их надо задавать вручную?
   
Nexwich  Панасин Александр 18 июля 2014, 20:29:18
Популярные товары это выборочные товары администратора или 10 товаров с наибольшим количество просмотров, покупок (это возможно делать было всегда (работа на 2 минуты). В любом случаи к этим методам данная задача не относится.
Для этих задач есть шаблоны компонентов и класс аггрегатор
   
Дмитрий  Life-work 25 июля 2014, 00:57:41
Как можно отследить наибольшее количество покупок и просмотров? Вручную выставлять хиты конечно не вариант!
   
Nexwich  Панасин Александр 29 июля 2014, 15:28:53
Вы можете при просмотрах заносить в базу +1 при условии что он еще не посещал данный товар(сессия или поиск совпадения в списке просмотренного). При покупке также в действиях после добавления в компоненте заказ добавить строку UPDATE в товар которая так же будет помечать количество покупок данного товара для последующей сортировки. Если товаров несколько то используйте цикл (проще всего)
   
Gorjelin  Угаев Евгений Анатольевич 09 сентября 2021, 09:22:56
сейчас с "огромным удовольствием" переписываю этот "замечательный" код, который на 18 сек тормозит загрузку страницы. Ну нельзя писать sql запросы в цикле! В готовых решениях от NetCat - масса подобного. ((
   
Описание проекта