Модуль для добавления избранных ID элементов. Если пользователь не авторизован, использует Cookie.
use Bitrix\Main\Loader;
use Local\Favorites\Api;
if (Loader::includeModule("local.favorites") {
// add
$elem_id = 2;
$res = Api::add($elem_id);
// delete
$res = Api::dell(3);
// get list
$items = Api::getList();
return $items;
}
ORM DataManager для элементов в базе данных, таблица b_favorites:
use Bitrix\Main\Loader;
use Local\Favorites\FavoritesTable;
if (Loader::includeModule("local.favorites") {
$rows = [];
$result = FavoritesTable::getList([
'select' => ['ID','ELEM_ID'],
'filter' => ['=USER_ID' => $USER_ID],
]);
while ($row = $result->fetch())
$rows[] = $row['ELEM_ID'];
return $rows;
}
composer require otolaa/local.favorites
- Создать папку
local.favorites
в папке/local/modules/
или/bitrix/modules/
- Скопировать файлы модуля в папку
local.favorites
- PHP >= 8.0
- добавить компонент
add.favorites
в шапкуheader.php
в шаблон сайта
<? $APPLICATION->IncludeComponent('local.favorites:add.favorites',".default",
[
"CACHE_TYPE" => "N",
"CACHE_GROUPS" => "N",
], false
); ?>
- добавить в шаблон карточки товара
catalog.item
ссылку-кнопку для добавление в избранное
<a href="javascript:void(0);" data-add-favorites="<?=$item['ID']?>" class="add-favorites-item">
<span>❤</span>
</a>