Вопросы и ответы

Модуль "Избранное"

  • Документация по версии 1.0.1-1.0.2

  • Документация по версии 1.0.1-1.0.2

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

    ИНСТРУКЦИЯ ПО УСТАНОВКЕ И НАСТРОЙКЕ МОДУЛЯ 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/"

            )

    );?>

    После необходимо также настроить раздел избранное. Фильтр товаров там уже добавлен. Следует только вывести по этому фильтру элементы. Можно с помощью компонента catalog.section, добавив параметр "FILTER_NAME" => "arFilterWishlist". 

    Далее раздел тест можно удалить

    4.       Добавление кнопки на сайт

     Пример кода добавления кнопки для компонентов catalog.element, catalog.top и др.

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

     

            use \Itserw\Wishlist\Wishlist;

     

    http://prntscr.com/lsmkin

     

    В том месте шаблона куда необходимо добавить кнопку, добавляем код

     

    <? if (CModule::IncludeModule("itserw.wishlist")): ?>

        <button class="button button--favorites itserw_wishlist js-add-to-wishlist-btn <? if (Wishlist::isIdFromFavorites($USER, $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 (Wishlist::isIdFromFavorites($USER, $item['ID'])): ?><?= GetMessage('CATALOG_IN_WISHLIST') ?><? else: ?> <?= GetMessage('CATALOG_WISHLIST') ?><? endif; ?>">

            <i

                    class="fa fa-heart"></i><span

                    class="button__text"><? if (Wishlist::isIdFromFavorites($USER, $item['ID'])): ?><?= GetMessage('CATALOG_IN_WISHLIST') ?><? else: ?> <?= GetMessage('CATALOG_WISHLIST') ?><? endif; ?></span>

        </button>

    <? endif ?>

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

    5.       Добавление счетчика избранных товаров в произвольное место сайта c помощью кода

     <span id="js-favorite-prod-count">

                                         <? Bitrix\Main\Page\Frame::getInstance()->startDynamicWithID("wishlist-count"); ?>

                                         <? if (CModule::IncludeModule("itserw.wishlist")) {

                                             echo \Itserw\Wishlist\Wishlist::getCountValuesFromFavorites($USER);

                                         } ?>

                                         <? Bitrix\Main\Page\Frame::getInstance()->finishDynamicWithID("wishlist-count", ""); ?>

                                     </span>

     

    Данный код представлен с поддержкой композита.

    Компонент избранное при удалении и добавлении  товара создает js событие

    OnCompareChange
    onCatalogDeleteCompare
     что позволяет изменять счетчик на лету

    Пример добавления обработчиков js события:

    <script>

        BX.ready(function(){

            BX.addCustomEvent("OnCompareChange", BX.delegate(function(){

                var containerCount = $('#js-favorite-prod-count');

                var count = containerCount.text();

                containerCount.text(++count);

            }, this));

            BX.addCustomEvent("onCatalogDeleteCompare", BX.delegate(function(id){

                var containerCount = $('#js-favorite-prod-count');

                var count = containerCount.text();

                containerCount.text(count-1);

            }, this));

        });

    </script>

    Методы модуля

    /**

     * Метод добавляет свойство пользователя,

     * заданное в настройках модуля

     * @return mixed

     */

    public static function addCustomPropertyForUserGroup()
    /**

     * Метод удаляет свойство пользователя,

     * заданное в параметрах компонента

     * @param $id

     * @return bool

     */

    public static function deleteCustomPropertyForUserGroup($id)
    /**

     * Метод проверяет,

     * существует ли свойство пользователя,

     * заданное в настройках модуля для хранения избранных товаров.

     * @return array

     */

    public static function isCustomPropertyForUserGroup()
     /**

     * Метод добавляет значение в установленное свойство пользователя

     * @param $id

     * @return bool

     */

    public static function addCustomPropertyValue($id, $user)
     

    /**

     * Метод удаляет значение из установленного свойства пользователя

     * @param $id

     * @return bool

     */

    public static function deleteCustomPropertyValue($id, $user)
     

    /**

     * Метод получает значения из установленного свойства пользователя

     * @param $property

     * @param $user

     * @return array

     */

    public static function getCustomPropertyValues( $user)
     

    /**Метод устанавливает куку и значение

     * @param $id

     * @return bool

     */

    public static function setCookieForFavorites($str)
    /**

     * Метод удаляет куку

     * @return bool

     */

    public static function deleteCookieForFavorites()
    /**

     * Метод получает куку

     * @return bool

     */

    public static function getCookieForFavorites()
    /**

     * Метод проверяет установлена ли кука

     * @return bool || string

     */

    public static function isCookieForFavorites()
    /**

     * Метод добавляет значение в куку

     * @param $arCookie

     * @return bool

     */

    public static function addCookieForFavoritesValue($id)
    /**

     * Метод получает значение из куки

     * @return bool

     */

    public static function getCookieForFavoritesValue()
    /**

     * Метод удаляет значение из куки

     * @param $id

     * @return bool

     */

    public static function deleteCookieForFavoritesValue($id)
    /**

     * Метод получает значения из избранного, с учетом прав доступа

     * @param $user

     * @return bool|mixed

     */

    public static function getValuesFromFavorites($user)
    /**Метод позволяет получить количество товаров в избранном, проверка с учетом прав доступа

     * @param $user

     * @return bool|mixed

     */

    public static function getCountValuesFromFavorites($user)
    /**

     * Метод проверяет существует ли id товара в избранном, с учетом прав доступа

     * @param $user

     * @param $id

     * @return bool

     */

    public static function isIdFromFavorites($user, $id)
    События модуля

     События добавления значений в свойство пользователя

    OnBeforeCustomPropertyFavoritesValueAdd
    OnAfterCustomPropertyFavoritesValueAdd
                   

    События удаления значений из свойств пользователя

    OnBeforeCustomPropertyFavoritesValueDelete
    OnAfterCustomPropertyFavoritesValueDelete
     

    События добавления значений в куку пользователя

    OnBeforeCookieFavoritesValueAdd
    OnAfterCookieFavoritesValueAdd
     

    События удаления значений из куки пользователя

    OnBeforeCookieFavoritesValueDelete
    OnAfterCookieFavoritesValueDelete
     

    События переброса значений из куки пользователя в свойство пользователя при его авторизации

    OnBeforeValueCookieToPropertyMove
    OnAfterValueCookieToPropertyMove



    0