任务相对简单:
Drupal网站显示带有缩略图的文章列表。一些访问者希望通过点击按钮/链接查看没有图像的内容,并保存该偏好。
e.g。 http://patterntap.com/collections/index/
问题是所有访问者都是匿名的,并且在某些流量下,页面缓存已启用。
我的想法是使用一些简单的JavaScript来设置cookie,刷新页面并根据cookie值(或它的存在/不存在)显示或隐藏图像。
除了Drupal很早就提供缓存页面,修改我可以找到的缓存版本的唯一快捷方法是通过hacking include / bootstrap.inc并向body类添加自定义类,然后使用css隐藏图像。
我知道这是一种非常错误的做法。但我想知道是否有办法保存不同版本的页面并提供正确的版本?
编辑:
hook_boot()
并未真正调用缓存页面,因此无法通过自定义模块编辑/溶液: 最后得到了里米安的建议。但是可以使用我们自己的cache.inc实现来完成任务,如Mobile Tools模块中所示。具体来说,通过扩展cache.inc并更新settings.php以包含
$conf['page_cache_fastpath'] = FALSE;
$conf['cache_inc'] = 'path/to/my/module/my_module_cache.inc';
答案 0 :(得分:1)
所以让我做对了。如果用户选择,您想在缓存页面上隐藏一些图像吗?
为什么不编写一些jQuery或javascript并将其加载到包含文档其余部分的缓存页面中?
然后,客户端/浏览器会决定运行您的脚本并隐藏图像,具体取决于您将请求传递给该页面或cookie中的一些参数?该脚本会被缓存,只有在您调用它时才会运行。
如果你正在攻击类似的东西,你真的需要重新思考你在做什么。疯! :)
另请参阅cache_get和cache_set:
答案 1 :(得分:1)
我不确定我是否100%理解你想要做什么,但这是我的想法。您的根本问题之一是您尝试在同一个uri上访问本质上不同的内容。
如果这是你想要做的,那么Rimian建议检查chache_get和chache_set可能是值得的。
就个人而言,让我的“缩略图”和“没有缩略图”通过不同的uri访问似乎更清晰。根据您想要完成的内容,GET变量是一个更好的方法。使用这两个选项中的任何一个,您都可以在主题图层隐藏或显示缩略图。具有不同路径或获取变量的页面将单独缓存。
如果您希望访问者能够在没有页面重新加载的情况下切换视图,那么jQuery和cookie可能会满足您的需求。这不需要页面重新加载,来回切换非常简单。