在此之前我的英语不是我的母语,所以…对于所有的拼写/打字错误和其他,我很抱歉。
我在这个网站上工作,它需要向所有用户显示一个宣传视频(它需要是一个模式)。以下是条件:
宣传视频需要在网站的任何页面上显示。
如果用户看到了促销,一周后将再次向同一用户显示(如果促销仍处于活动状态)。
如果该促销视频被另一个促销视频删除,则必须显示新的促销视频(例如:如果用户访问该站点并在第1天看到该促销,并且在第3天看到该促销已被删除,或者该促销已过期并且设置了另一促销,则如果该用户在一周过去之前再次访问该站点,则需要向该用户显示该促销视频)。
我正在考虑使用laravel cookie,但我被告知使用它们不是一个好的做法。如果有,原因何在?
现在,应用程序正在使用js-cookie,并且使用它设置了一些cookie。有没有可能用它完成我想要的东西?
以下是我的代码的一些部分
在我的ViewServiceProvider.php上我有这个
public function boot()
{
View::composer('layouts.partials.modals', PromotionalVideoComposer::class);
}在PromotionalVideoComposer.php上
public function compose(View $view)
{
$view->with('promotionalVideo', PromotionalVideo::active()->pluck('link')->first());
}在partiasl.modals.blade.php上
// some modals
<!-- Modal Promotional Video -->
@if (isset($promotionalVideo))
<div class="modal fade modal-player" id="promotional-video" role="dialog" tabindex="-1">
<div class="modal-dialog modal-dialog-centered modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close" dusk="close-promotional-video"><span aria-hidden="true">×</span></button>
<div class="modal-body player-container">
<iframe src="{{ $promotionalVideo }}" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
</div><!-- .modal-header -->
</div><!-- .modal-content -->
</div><!-- .modal-dialog modal-lg -->
</div><!-- .modal fade -->
@endif和app.js
if (Cookie.get('promotionalVideoDisplayed') === undefined) {
$('#promotional-video').modal('show');
Cookie.set('promotionalVideoDisplayed', true, { expires: 7 });
}
// On close video modal stop/delete video iframe
$("#promotional-video").on('hidden.bs.modal', function () {
var $iframe = "#promotional-video iframe";
$($iframe).remove();
});发布于 2018-12-20 01:54:42
而不是使用cookies (可以删除或不设置,以便多次显示相同的视频),我建议添加一个数据库条目,用于“用户id”、“促销id”和“上次查看”日期。
然后从其中读取,以决定是否显示视频。
https://stackoverflow.com/questions/53856514
复制相似问题