baks-dev/products-viewed
Laravel/PHP модуль для отслеживания и вывода просмотренных товаров. Установка через Composer, рендер в Twig: render_products_viewed(invariable_id|null). Поддерживает установку ассетов, миграции Doctrine и тесты PHPUnit.
ProductViewed events). This allows downstream services (e.g., recommendation engines, analytics pipelines) to react to views without tight coupling.Twig/Blade) from backend storage, aligning with Laravel’s service-layer pattern. This is critical for projects with complex frontend-backend interactions.{{ view_tracker(product.id) }}), adding ~1–2 hours of work.TrackProductViewed). Ensure your routes include it or extend the package to support alternative entry points (e.g., API hooks).product_views and related metadata. Assess:
views or user_activity tables? Plan for consolidation or renaming.user_id, product_id, and created_at for query performance.scheduler.max_views_per_user).render_products_viewed to reduce DB load.user_id/IP for anonymous users.consent flag to view records.ProductView entity.Viewable trait.views/user_activity tables.composer require baks-dev/products-viewed.php artisan vendor:publish --tag="products-viewed-config" (if available).php bin/console baks:assets:install (if applicable).config/products-viewed.php for:
view_ttl).app/Http/Kernel.php:
protected $middlewareGroups = [
'web' => [
// ...
\BaksDev\ProductsViewed\Http\Middleware\TrackProductViewed::class,
],
];
{{ render_products_viewed(product.invariable_id) }} in templates.// app/Helpers/ViewTracker.php
if (!function_exists('track_product_view')) {
function track_product_view($productId) {
return app(\BaksDev\ProductsViewed\Services\ViewTracker::class)->track($productId);
}
}
Then use @track_product_view($product->id) in Blade.// app/Providers/EventServiceProvider.php
protected $listen = [
\BaksDev\ProductsViewed\Events\ProductViewed::class => [
\App\Listeners\LogProductView::class,
\App\Listeners\UpdateRecommendations::class,
],
];
php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate
php bin/phpunit --group=products-viewed.productId, logged-out users).// app/Repositories/ProductViewRepository.php
class ProductViewRepository {
public function create(array $data) {
return ProductView::create($data); // Eloquent
}
}
render_products_viewed:
// config/products-viewed.php
'cache' => [
How can I help you explore Laravel packages today?