Задать вопрос Связаться с нами
  • Главная
  • Услуги
    • Исправление ошибок
    • Доработка сайтов
    • Обслуживание сайтов
    • Техподдержка сайтов
    • Веб-разработка
    • Интернет-магазины
  • Модули
    • Антирутин
    • SEO - мастер
    • SMS-уведомления
    • Импорт данных
    • Простые отзывы
    • Утилиты от «Webdebug»
    • SMS-сообщения (Lite)

    • Все наши модули

    • Все модули Битрикс:Marketplace
  • Акции
  • Поддержка
  • Блог
  • О нас
    • Отзывы
    • Новости
    • Реквизиты

    • Контакты
  • Главная
  • Услуги
    • Исправление ошибок
    • Доработка сайтов
    • Обслуживание сайтов
    • Техподдержка сайтов
    • Веб-разработка
    • Интернет-магазины
  • Модули
    • Антирутин
    • SEO - мастер
    • SMS-уведомления
    • Импорт данных
    • Простые отзывы
    • Утилиты от «Webdebug»
    • SMS-сообщения (Lite)

    • Все наши модули

    • Все модули Битрикс:Marketplace
  • Акции
  • Поддержка
  • Блог
  • О нас
    • Отзывы
    • Новости
    • Реквизиты

    • Контакты
Главная
Модули «1С-Битрикс: Маркетплейс»
Категория: Инструменты
«Избранное»: модуль для 1С-Битрикс
itserw.wishlist

«Избранное»: модуль для 1С-Битрикс

Разработчиком данного модуля является ITserW
Купить: 1 490 руб. Онлайн-демо
  • Описание
  • Установка
  • История
  • Техподдержка

  • Подходящие редакции 1С-Битрикс: Малый бизнес, Бизнес
  • Включает в себя: Компоненты, Модуль
  • Категории: Инструменты, Контент-менеджеру, Формы и кнопки
  • Название компании-партнера: ITserW
  • Последняя версия: 1.0.61
  • Дата обновления: 26.01.2022
  • Дата публикации: 27.01.2019
  • Число установок: 100 - 499 раз
  • Адаптивность: Да
  • Поддержка композита: Да
  • Совместимо с Сайты24: Нет

Модуль Избранное позволяет пользователю позволяет отметить товары для дальнейшего просмотра.

Для неавторизованного пользователя список товаров хранится в куках, после авторизации список хранится в специальном свойстве пользователя, которое добавляется при установке модуля.

Модуль содержит настройки прав пользователей.

Для взаимодействия с внешним кодом предусмотрены события:

1. При добавлении товара в избранное,
2. При удалении
3. При переносе списка из кук в свойство

Доступны публичные методы:

1. Добавлен ли товар в избранное (С учетом прав доступа или нет)
2. Количество товаров в избранном  (С учетом прав доступа или нет)
3. Полный список добавленных товаров  (С учетом прав доступа или нет)

Модуль содержит компонент, который выводит краткий список товаров.

Также при установке модуля автоматически создается раздел, где выводится список товаров с подробным описанием, ссылку на который пользователь может получить из краткого списка.

Компонент поддерживает технологию аякс. Содержит событие на изменения счетчика товара при добавлении или удалении товара из избранного. Данный счетчик можно расположить в любом месте сайта, в зависимости от дизайна.

Внимание, в версии 3 модуль полностью переписан, поэтому старые методы оставлены для совместимости. Документация предыдущих версий сохранена на сайте компании по ссылке https://itserw.ru/support/faq/187/.

Принцип работы

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

ИНСТРУКЦИЯ ПО УСТАНОВКЕ И НАСТРОЙКЕ МОДУЛЯ 1С-БИТРИКС
  1. Установка модуля

    Зайти в административную панель 1С-Битрикс и перейти в раздел «Marketplace» -> «Установленные решения». Выбрать модуль «Модуль избранное (itserw.wishlist)» и нажать кнопку УСТАНОВИТЬ. http://prntscr.com/lsm8fs Далее мы попадаем на страницу настроек установки модуля http://prntscr.com/lsm8kc При отмеченной опции скопировать публичные файлы в публичную часть сайта будет добавлен раздел избранных товаров. Далее следует указать название папки с разделом избранных товаров. По умолчанию эта папка wishlist. И если такая папка уже существует на сайте, то отмеченная опция “Переписывать существующие файлы” - затрет все файлы из этой папки. После установки модуля появится сообщение о его успешной установке. Далее необходимо перейти к настройкам модуля

  2. Настройка модуля

    Настройки модуля расположены по пути
    Настройки ->Настройки продукта->Настройки модулей->Модуль избранное
    Основные настройки
    Пользовательское свойство - задается идентификатор пользовательского свойства, в котором хранятся id товаров избранного
    Идентификатор куки – в котором хранятся id товаров избранного
    Вкладка доступ – устанавливается права доступа к модулю избранного.
    http://prntscr.com/lsmcbq
    И нажимаем сохранить
    Далее выведем вывести компонент, где необходимо отображать список избранного

  3. Вывод компонента в произвольном месте сайта и настройка компонента

    Добавим вызов компонента на все страницы сайта, в файл footer.php шаблона.
    Для начала в публичной части сайта создадим тестовый раздел
    http://prntscr.com/lsmeis
    И из визуальной части редактора вызовем компонент и добавим необходимые настройки
    http://prntscr.com/lsmeql
    http://prntscr.com/lsmeu9
    Далее перейдем к настройка
    Все настройки можно оставить по умолчанию, кроме настроек тип информационного блока и код информационного блока, а так же настройки аякс По умолчанию пока только один шаблон для списка избранного, в след версии мы добавим несколько шаблонов. Но функционал модуля позволяет создать свой шаблон – индивидуальный под дизайн вашего сайта. Список можно расположить во всплывающем попап окне, в выезжающий плашках сайта или в любом произвольном месте сайта. Копируем код компонента и добавляем в произвольное место сайта
    Пример

    <?$APPLICATION->IncludeComponent("itserw:wishlist.list",
    "",
    Array(
    "AJAX_MODE" => "Y",
    "AJAX_OPTION_ADDITIONAL" => "",
    "AJAX_OPTION_HISTORY" => "Y",
    "AJAX_OPTION_JUMP" => "N",
    "AJAX_OPTION_STYLE" => "Y",
    "CACHE_GROUPS" => "Y",
    "CACHE_TIME" => "36000000",
    "CACHE_TYPE" => "A",
    "IBLOCKS" => "2",
    "IBLOCK_TYPE" => "catalog",
    "ITSERW_ACTION" => "action",
    "ITSERW_BTN_CLASS" => "itserw_wishlist",
    "ITSERW_BTN_CLASS_DELETE" => "itserw_wishlist_delete",
    "ITSERW_ID" => "id_w",
    "ITSERW_LINK" => "/wishlist/",
    "WIDTH_IMAGE" => "100",
    "HEIGHT_IMAGE" => "100",
    )
    
    );?>
    После необходимо также настроить раздел избранное. Фильтр товаров там уже добавлен. Следует только вывести по этому фильтру элементы. Можно с помощью компонента catalog.section, добавив параметр "FILTER_NAME" => "arFilterWishlist". Далее раздел тест можно удалить.
ВАЖНО - для работы кнопок добавления в избранное (напр. в компоненте news.list) на странице ОБЯЗАТЕЛЬНО должен быть подключен компонент "itserw:wishlist.list" (например в footer.php, можно даже в блоке с display:none;), иначе кнопки работать не будут. Также если компоненты в шаблонах которых вы добавили кнопки работают в режиме AJAX, то нельзя в них подключать  "itserw:wishlist.list", он должен быть подключен один раз как описано выше (например в footer.php)!
  1. Добавление кнопки на сайт

    Пример кода добавления кнопки для компонентов catalog.element, catalog.top и др.
    В начале файла где будет располагаться кнопка добавляем псевдоним имени класса с помощью оператора use

    use \Itserw\Wishlist\Favorites;
       
    <? if (CModule::IncludeModule("itserw.wishlist")): ?>
    
        <button class="button button--favorites itserw_wishlist js-add-to-wishlist-btn <? if (Favorites::getInstance()->getStorageObject()->isStorageValue(array($item['ID']))): ?>itserw_wishlist_added<? endif; ?>"
                data-id="<?= $item['ID'] ?>" data-action="add" data-product-id="<?= $item['ID'] ?>"
                data-toggle="tooltip" title=""
                data-original-title="<? if (!empty(Favorites::getInstance()->getStorageObject()->isStorageValue(array($item['ID'])))): ?><?= GetMessage('ITSERW_WISHLIST_TMPL_IN_FAVORITES') ?><? else: ?> <?= GetMessage('ITSERW_WISHLIST_TMPL_FAVORITES') ?><? endif; ?>">
            <i class="fa fa-heart"></i>
            <span class="button__text"><? if (Favorites::getInstance()->getStorageObject()->isStorageValue(array($item['ID']))): ?><?= GetMessage('ITSERW_WISHLIST_TMPL_IN_FAVORITES') ?><? else: ?> <?= GetMessage('ITSERW_WISHLIST_TMPL_FAVORITES') ?><? endif; ?></span>
        </button>
    
        <? endif ?>
    Добавлен новый шаблон кнопки, работает с версии обновления 1.0.61

       
    <? if (CModule::IncludeModule("itserw.wishlist")): ?>
    
        <button class="button-favorite-default itserw_wishlist  js-add-to-wishlist-btn <? if (Favorites::getInstance()->getStorageObject()->isStorageValue(array($arResult['ID']))): ?>itserw_wishlist_added<? endif; ?>"
                data-id="<?= $arResult['ID'] ?>" data-action="add" data-product-id="<?= $arResult['ID'] ?>">
            <svg area-label="<?= GetMessage('ITSERW_WISHLIST_TMPL_FAVORITES') ?>" version="1.1"xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
                     viewBox="0 0 446.171 446.171" style="enable-background:new 0 0 446.171 446.171;" xml:space="preserve" width="20" height="20">
                <path class="svg-hard-bg" d="M399.151,81.241c42.841,40.751,42.841,106.057,0,146.808l-20.898,19.853L223.608,394.71
                    L68.963,247.902l-20.898-19.853c-42.841-40.751-42.841-106.057,0-146.808s111.804-40.751,154.645,0l20.898,19.853l20.898-19.853
                    C287.347,40.49,356.31,40.49,399.151,81.241z"/>
                <path class="svg-hard-border" d="M223.608,410.384c-3.657,0-7.837-1.567-10.971-4.18L37.094,239.543
                    C13.584,216.555,0,186.775,0,154.906s13.061-62.171,37.094-84.637c48.588-45.976,127.478-45.976,176.065,0l9.927,9.404l9.927-9.404
                    c48.588-45.976,127.478-45.976,176.065,0l0,0c24.033,22.465,37.094,52.767,37.094,84.637s-13.061,62.171-37.094,84.637
                    L234.58,406.204C231.445,408.816,227.265,410.384,223.608,410.384z M125.388,66.612c-24.033,0-48.065,8.882-66.351,26.122
                    c-17.763,16.718-27.167,38.661-27.167,62.171s9.927,45.453,27.167,62.171L223.608,373.29L388.18,217.078
                    c17.763-16.718,27.167-38.661,27.167-62.171s-9.927-45.453-27.167-62.171l0,0c-36.571-35.004-96.131-35.004-133.225,0
                    l-20.898,19.853c-6.269,5.747-15.673,5.747-21.42,0l-20.898-19.853C173.453,74.971,149.42,66.612,125.388,66.612z"/>
        </svg>
        </button>
    
        <? endif ?>

  2. Внимание! Идентификатор товара в кнопке должен быть реально существующего. Так как при добавлении товара модуль проверяет наличие товара в базе. И если не найдет, то добавления не произойдет. Используемые методы модуля описаны далее в документации пункта 6

  3. Добавление счетчика избранных товаров в произвольное место сайта c помощью кода. Данный код представлен с поддержкой композита.
    <span id="js-favorite-prod-count">    <? Bitrix\Main\Page\Frame::getInstance()->startDynamicWithID("wishlist-count"); ?>
    
        <? if (CModule::IncludeModule("itserw.wishlist")) {
    
              echo \Itserw\Wishlist\Favorites::getInstance()->getCountValuesFromFavorites();
    
        } ?>
    
        <? Bitrix\Main\Page\Frame::getInstance()->finishDynamicWithID("wishlist-count", ""); ?>
    </span>

  4. Компонент избранное при удалении и добавлении товара создает js событие wishlist, что позволяет изменять счетчик на лету. Пример добавления обработчика js события: Содержит данные количества элементов e.detail.COUNT, а так же массив элементов e.detail.ITEMS.

    <script>
        window.addEventListener('wishlist', function (e) {
            $('#js-favorite-prod-count').text(e.detail.COUNT);
        }, false);
    
    </script>

      7. Отображение товаров в разделе избранное

     
use \Bitrix\Main\Loader;

use \Itserw\Wishlist\Favorites;

if (Loader::includeModule('itserw.wishlist')) 
{
//Получаем все товары
$arFilter = Favorites::getInstance()->getStorageObject()->getStorageValue();
$GLOBALS['arFilter']['ID'] = $arFilter;
}
?>

<? if (count($arFilter)): ?>
   //Здесь вызов компонента например, bitrix:catalog.section 
<? endif; ?>
Краткая документация по классам и методам модуля.

Модуль содержит 3 класса и 1 интерфейс.

Класс DataStorageCookie - если избранное хранится в куках, класс DataStorageProperty - если избранное хранится в свойстве.

Два этих класса наследуются от 1 и того же интерфейса (содержат одинаковые методы, но со своей логикой работы).    
interface dataStorageInterface
{
    /**
     * Добавляет хранилище данных
     * @param array $value
     * @return mixed
     */
    public function addStorage(array $value);

    /**
     * Удаляет хранилище данных
     * @return mixed
     */
    public function deleteStorage();

    /**
     * Проверяет, есть ли хранилище для данных
     * @return mixed
     */
    public function isStorage();

    /**
     * Добавляет значение в хранилище
     * @param array $values
     * @return mixed
     */
    public function addStorageValue(array $values);

    /**
     * Удаляет значение из хранилища
     * @param array $values
     * @return mixed
     */
    public function deleteStorageValue(array $values);

    /**
     * Получает данные из хранилища
     * @return mixed
     */
    public function getStorageValue();

    /**
     * Проверяет, есть ли передаваемые данные в хранилище
     * @param array $values
     * @return mixed
     */
    public function isStorageValue(array $values);
}
И еще 1 новый класс Favorites  - его работа заключается в том, чтобы определить на основе авторизации какое хранилище данных использовать.

Все классы построены по шаблону проектирования Singleton.
Вся работа происходит с классом Favorites.
Получаем хранилище данных избранного
 Favorites::getInstance()->getStorageObject() 
А далее используем любые методы хранилища представленные в интерфейсе, например получим все данные
Favorites::getInstance()->getStorageObject()->getStorageValue()
События модуля

Все события делятся на After и Before

Before вызываются до совершения действия и могут повлиять на результат - для отмены действия требуется вернуть false из функции.

Аfter - после

События
OnBeforeValueCookieToPropertyMove 
OnAfterValueCookieToPropertyMove

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

Следующие группы событий работают непосредственно с добавлением или удалением данных

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

$values - массив элементов

AddEventHandler("itserw.wishlist", "OnBeforeCookieFavoritesValueAdd", "MyBeforeCookieFavoritesValueAdd");

function MyBeforeCookieFavoritesValueAdd(&$values){

return false;
}

Вызывается перед удалением элемента из куки

AddEventHandler("itserw.wishlist", "OnBeforeCookieFavoritesValueDelete", "MyOnBeforeCookieFavoritesValueDelete");

function MyOnBeforeCookieFavoritesValueDelete(&$values){
$values = array(7);
}

Вызывается после добавления элемента в куку

AddEventHandler("itserw.wishlist", "OnAfterCookieFavoritesValueAdd", "MyAfterCookieFavoritesValueAdd");

function MyAfterCookieFavoritesValueAdd($values){

}

Вызывается после удаления элемента из куки

AddEventHandler("itserw.wishlist", "OnAfterCookieFavoritesValueDelete", "MyOnAfterCookieFavoritesValueDelete");

function MyOnAfterCookieFavoritesValueDelete($values){

}

Аналогичные функции, только если данные хранятся свойстве пользователя

AddEventHandler("itserw.wishlist", "OnBeforeCustomPropertyFavoritesValueAdd", "MyBeforeCustomPropertyFavoritesValueAdd");

function MyBeforeCustomPropertyFavoritesValueAdd(&$values){

return false;
}


AddEventHandler("itserw.wishlist", "OnBeforeCustomPropertyFavoritesValueDelete", "MyBeforeCustomPropertyFavoritesValueDelete");

function MyBeforeCustomPropertyFavoritesValueDelete(&$values){
$values = array(9);
}



AddEventHandler("itserw.wishlist", "OnAfterCustomPropertyFavoritesValueAdd", "MyAfterCustomPropertyFavoritesValueAdd");

function MyAfterCustomPropertyFavoritesValueAdd($values, $user){

}


AddEventHandler("itserw.wishlist", "OnAfterCustomPropertyFavoritesValueDelete", "MyAfterCustomPropertyFavoritesValueDelete");

function MyAfterCustomPropertyFavoritesValueDelete($values, $user){

}

  • 1.0.62, 26.01.2022 beta
    Иправления:
    • Исправлены баги верстки ссылок в шаблоне компонента wishlist.list
  • 1.0.61, 21.11.2020
    Улучшения:
    • Добавлена возможность удалять товары из избранного при повторном клике на кнопку
    • Добавлен шаблон кнопки
  • 1.0.5, 24.08.2020
    Иправления:
    • Добавлена возможность задать размеры изображения
  • 1.0.4, 29.05.2020
    Иправления:
    • В классе компонента доработан функционал очистки товаров неактивных ( или удаленных ) из избранного
  • 1.0.3, 18.04.2020
    Улучшения:
    • Полный рефакторинг кода модуля
    Внимание!!! изменен шаблон компонента wishlist.list.
    Поэтому текущий, установленный на сайте затрется, eсли при внесенных изменений он не был переименован или скопирован в папку local
  • 1.0.2, 03.02.2020
    Исправлен баг при установке модуля
Ссылки
  • Главная
  • Модули
  • Акции
  • Услуги
  • Отзывы
  • Блог
  • Новости
  • Контакты
  • Реквизиты
Поиск по сайту
Наши контакты

По всем вопросам обращайтесь:

Электронная почта: info@webdebug.ru

Telegram: webdebug

WhatsApp: +79882410850

Форма обратной связи

Webdebug Bitrix certified
Webdebug QR-code
© ООО «Веб дебаг», 2011 – 2023. Политика конфиденциальности.
×
У Вас вопрос?
Загрузка ...
×
Связаться с нами
Загрузка ...
×
Установка модуля

Внимание! Повторная установка в демо-режиме приведет к окончанию демо‑режима и невозможности использовать модуль.

×
Запрос на приобретение
и настройку модуля
Загрузка ...