Warning: Undefined array key "HTTPS" in include() (line 29 of /opt/www/fdv2/drupal.stage/web/sites/default/settings.local.php).
include('/opt/www/fdv2/drupal.stage/web/sites/default/settings.local.php') (Line: 4)
require('/opt/www/fdv2/drupal.stage/web/sites/drupal001.net/settings.php') (Line: 145)
Drupal\Core\Site\Settings::initialize('/opt/www/fdv2/drupal.stage/web', 'sites/drupal001.net', Object) (Line: 1099)
Drupal\Core\DrupalKernel->initializeSettings(Object) (Line: 701)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
context模块如何判断屏幕窗口的尺寸 - Drupal大学 - Drupal问答论坛
首页 / 帖子
context模块如何判断屏幕窗口的尺寸

请教,想使用context模块控制在不同的屏幕窗口下,显示不同的block。但是context中默认似乎没有判断屏幕尺寸的。找到一个模块context mobile swith可以判断是否为移动设备,但也不能判断屏幕大小。

3个答案
闻涛
发布于:2014-08-14 23:12

这个问题其实应该是PHP如何判断屏幕窗口的尺寸,而答案是纯PHP无法获得客户端屏幕尺寸


PHP要想取得客户端的屏幕尺寸,需要依赖javascript来实现。

例如,在页面顶部放一段js,检测屏幕尺寸后存入cookies,php再读取cookies便可获得客户端屏幕尺寸大小。应用到context模块,就是检测cookies或全局变量来判断。


但是这种方式是有弊端的,用户在访问页面之前,js是不会执行的,因此只有第二次访问的时候php才能获取屏幕大小,除非用户首次访问必定要经过一个入口,例如landing page,并且此页面你还不需要用户的屏幕尺寸数据。


如果需要控制的block不多,可以考考虑都输出到页面中,再在前端部分控制显示和隐藏。

发布于:2014-08-15 18:16

context mobile swicth是通过后端PHP代码控制的,最好的办法就是css的media query了。

贴几个链接参考一下: https://www.drupal.org/node/1343798

这个模块有人说可以:Themekey   https://www.drupal.org/project/themekey  

陈蹊
发布于:2014-08-18 12:07

没有找到很好的解决方案,先让前端处理吧