beeralex/beeralex.favorite
最新稳定版本:v1.1.02
Composer 安装命令:
composer require beeralex/beeralex.favorite
包简介
My notification module
README 文档
README
Модуль избранного (wishlist) для интернет-магазина на Bitrix. Позволяет пользователям добавлять товары в избранное с автоматической синхронизацией при авторизации.
Основные возможности
- ✅ Добавление/удаление товаров в избранное
- 🔄 Автоматическая синхронизация избранного при авторизации
- 📊 Подсчет количества избранных товаров
- ✔️ Проверка статуса товара (в избранном или нет)
- 🔗 Работа с авторизованными и неавторизованными пользователями
- 🌐 Поддержка мультисайтовости
- 🚀 REST API для интеграции с фронтендом
Требования
- PHP 8.1+
- Bitrix Framework 22.0+
- Модули:
sale,iblock
Установка
- Разместите модуль в
/local/modules/beeralex.favorite/ - Установите через административную панель Bitrix
- Модуль автоматически создаст таблицу и зарегистрирует сервисы
Быстрый старт
use Beeralex\Favorite\FavouriteService; $favoriteService = service(FavouriteService::class); // Добавить в избранное $favoriteService->add($productId = 123); // Получить список избранного $favoriteIds = $favoriteService->getByUser(); $count = $favoriteService->getCountByUser(); // Проверить статус $isFavorite = $favoriteService->isFavoriteProduct(123); // Удалить из избранного $favoriteService->deleteByProductID(123); // Очистить всё избранное $favoriteService->clear();
REST API
Модуль интегрирован с beeralex.api:
// Добавить в избранное POST /api/v1/favorite/store/ Параметры: productID // Переключить статус POST /api/v1/favorite/toggle/ Параметры: productID // Получить список GET /api/v1/favorite/get/ // Удалить из избранного POST /api/v1/favorite/delete/ Параметры: productID // Очистить избранное POST /api/v1/favorite/clear/
Основной сервис
FavouriteService
Методы:
add(int $productID, int $fUserID = 0): bool- добавить товарdeleteByProductID(int|array $productID, int $fUserID = 0): bool- удалить товарclear(int $fUserID = 0): bool- очистить избранноеgetCountByUser(int $fUserID = 0): int- количество товаровgetIdsByUser(int $fUserID = 0): array- получить ID товаровgetByUser(int $fUserID = 0): array- получить ID с проверкой существованияisFavoriteProduct(int|array $productID, int $fUserID = 0): array|bool- проверить статусcopyFavoritesToFuser(int $fromFuserId, int $toFuserId): void- копировать между пользователями
Автоматическая синхронизация
При авторизации пользователя избранное автоматически копируется из сессии неавторизованного пользователя:
// Регистрируется автоматически EventHandlers::onUserLogin($newUserId);
Интеграция с каталогом
use Beeralex\Favorite\FavouriteService; use Beeralex\Catalog\Service\CatalogService; $favoriteService = service(FavouriteService::class); $catalogService = service(CatalogService::class); // Получаем избранные товары с ценами $favoriteIds = $favoriteService->getByUser(); $products = $catalogService->getProductsWithOffers($favoriteIds, true, true);
Пример компонента
class FavoritesComponent extends CBitrixComponent { public function executeComponent() { $favoriteService = service(\Beeralex\Favorite\FavouriteService::class); $catalogService = service(\Beeralex\Catalog\Service\CatalogService::class); $favoriteIds = $favoriteService->getByUser(); $this->arResult['PRODUCTS'] = $catalogService->getProductsWithOffers( $favoriteIds, true, true ); $this->arResult['COUNT'] = count($favoriteIds); $this->includeComponentTemplate(); } }
Расширение функционала
Создайте свой класс-наследник:
namespace App\Service; use Beeralex\Favorite\FavouriteService as BaseService; class FavouriteService extends BaseService { public function addWithNotification(int $productId): bool { $result = $this->add($productId); if ($result) { // Ваша логика уведомлений } return $result; } }
Зарегистрируйте в /local/.settings_extra.php:
use Beeralex\Favorite\FavouriteService; use App\Service\FavouriteService as AppFavouriteService; return [ 'services' => [ 'value' => [ FavouriteService::class => [ 'constructor' => static function () { return new AppFavouriteService( \Bitrix\Main\Context::getCurrent()->getSite() ?? 's1' ); } ], ] ] ];
Документация
Полная документация доступна в docs/README.md
Лицензия
Проприетарный модуль. © beeralex
统计信息
- 总下载量: 5
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-10-06