Общие вопросы (4)
|
Документация по версии 1.0.1-1.0.2 |
---|
Принцип работы – если пользователь не авторизован, создается кука и избранные товары в ней хранятся, после авторизации пользователя товары перебрасываются в заранее созданное свойство пользователя и хранятся там, кука уничтожается ИНСТРУКЦИЯ ПО УСТАНОВКЕ И НАСТРОЙКЕ МОДУЛЯ 1С-БИТРИКС 1. Установка модуля Зайти в административную панель 1С-Битрикс и перейти в раздел «Marketplace» -> «Установленные решения». Выбрать модуль «Модуль избранное (itserw.wishlist)» и нажать кнопку УСТАНОВИТЬ. Далее мы попадаем на страницу настроек установки модуля При отмеченной опции скопировать публичные файлы в публичную часть сайта будет добавлен раздел избранных товаров. Далее следует указать название папки с разделом избранных товаров. По умолчанию эта папка wishlist. И если такая папка уже существует на сайте, то отмеченная опция “Переписывать существующие файлы” - перезатрет все файлы из этой папки. После установки модуля появится сообщение о его успешной установке. Далее необходимо перейти к настройкам модуля
2. Настройка модуля Настройки модуля расположены по пути Настройки ->Настройки продукта->Настройки модулей->Модуль избранное Основные настройки Пользовательское свойство - задается идентификатор пользовательского свойства, в котором хранятся id товаров избранного Идентификатор куки – в котором хранятся id товаров избранного Вкладка доступ – устанавливается права доступа к модулю избранного. По умолчанию доступ закрыт – установим полный досуп И нажимаем сохранить Далее выведем вывести компонент, где необходимо отображать список избранного 3. Вывод компонента в произвольном месте сайта и настройка компонента Добавим вызов компонента на все страницы сайта, в файл footer.php шаблона. Для начала в публичной части сайта создадим тестовый раздел И из визуальной части редактора вызовем компонент и добавим необходимые настройки Далее перейдем к настройка Все настройки можно оставить по умолчанию, кроме настроек тип информационного блока и код информационного блока, а так же настройки аякс По умолчанию пока только один шаблон для списка избранного, в след версии мы добавим несколько шаблонов. Но функционал модуля позволяет создать свой шаблон – индивидуальный под дизайн вашего сайта. Список можно расположить во всплывающем попап окне, в выезжающий плашках сайта или в любом произвольном месте сайта. Копируем код компонента и добавляем в произвольное место сайта Пример <?$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;
В том месте шаблона куда необходимо добавить кнопку, добавляем код
<? 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 ?>
Внимание! Идентификатор товара в кнопке должен быть реально существующего. Так как при добавлении товара модуль проверяет наличие товара в базе. И ели не найдет, то добавления не произойдет. 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 Пример добавления обработчиков 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 События удаления значений из свойств пользователя
OnBeforeCustomPropertyFavoritesValueDelete События добавления значений в куку пользователя
OnBeforeCookieFavoritesValueAdd События удаления значений из куки пользователя
OnBeforeCookieFavoritesValueDelete События переброса значений из куки пользователя в свойство пользователя при его авторизации
OnBeforeValueCookieToPropertyMove |