我有一个棘手的情况,我需要在移动设备上移动我的Google广告。我发现最好的方法是使用@include调用它们,但仅限于满足某些屏幕尺寸条件。
我认为以下内容可行
@if($screensize < 768px)
@include('partials.my-advert')
@endif
所以我的问题是我如何将屏幕尺寸变成PHP?我可以使用$(window).width();
通过JS获取屏幕大小,但是如何在Laravel if语句中使用此值?
答案 0 :(得分:8)
尝试这样做绝对没有意义,因为整个方法都是过时的。当然,您可以将$(window).width()
从javascript中的客户端传递回PHP中的服务器,但是如果用户调整窗口大小会怎样?
这就是为什么今天鼓励的是responsive design。甚至是Google Adsense has responsive ad units。
响应式设计并不要求后端知道有关客户端的任何信息,以便在页面上正确呈现内容。相反,客户端不做任何关于如何在客户端UA上呈现内容的假设,并允许高级CSS和JS直接和响应地处理呈现。这意味着,无论屏幕尺寸如何,您的内容都不会有所不同。
Bootstrap是一个利用响应式设计的前端框架。 Material design也有many implementations也有响应。
答案 1 :(得分:5)
您无法使用PHP检测屏幕大小,但也可以检测代理。有一个package,它可以轻松地检测代理,从而可以检测到请求是来自桌面/平板电脑/移动设备。
要通过composer安装它,您可以运行以下命令。
$ composer require jenssegers/agent
然后将服务提供商的dd添加到文件config/app.php
中的提供者密钥。
Jenssegers\Agent\AgentServiceProvider::class
此外,将代理别名添加到别名键
'Agent' => Jenssegers\Agent\Facades\Agent::class
最后,将代理变量从控制器传递到视图。
$agent = new Agent();
return view('some.view', compact('agent'));
然后在您的视图中,您可以检查代理是否属于某个手机。
@if($agent->isMobile())
@include('partials.my-advert')
@endif