国外设计欣赏网站 - DOOOOR.com

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,微信登陆

搜索

[Drupal教程] Drupal:通过flag+rules+views创建可theme的“浏览记录”功能区块

[复制链接]
发表于 6-9-2012 01:46 | 显示全部楼层 |阅读模式

最近一项目碰到个小需求,用户的“访问记录”(即用户浏览过指定内容类型的页面,按照访问时间显示在指定区块中)

本来以为是个小毛毛雨,自带的block中应该有吧。。。结果让我很失望,不仅自带区块中没有,搜遍了modules,也没有相近功能的。结合相关功能,想了下,利用watch dog 表应该可以,输出的结果很不好,因为包括了系统页面的地址,就是说如果访问了出错页面,同样也会登上浏览记录,而且该表中任意页面记录都有独立的id,意味我访问10次404页面,watch dog 的输出结果也会按照访问时间排出该404页10次。。。最大的一个问题,还不能有效的theme。。。只有放弃。

 

为了实现,drupal 搜索大法。。。不懈搜索后,找到篇不错的文章,并且也顺利测试通过,分享给大家:

 

1.下载、安装 rulesflagviews

2.配置flag :

(1) 创建1个名为 recently_viewed 的flag,配置如下图

 

(2) 然后在到rules - > Triggered rules 页面,创建一个名为 Re-flag node recently_viewed 的rule,

其中 IF 选项卡 添加 1个Check a truth value的conditio,图示如下:

在check a truth value 配置页面,Truth value:* 项填入 <?php echo $page ?>,如下图:

 

接下来在 DO 选项卡 添加2个action,分别名为 Unflag viewed content, under "Recently viewed"(意义是打开页面先执行unflag)

 

以及Flag viewed content, under "Recently viewed"(意义为打开页面执行flag),如下图

 

(3) 通过views 建立需要输出的字段并可theme,这里只需要输出带链接到文章的标题就行了,当然也可以加上文章缩略图、建立时间等等字段,根据需求而定。如图:

 

建立views中主要注意的是,建立之前的flag 的 Relationships,设置如上图,然后Sort criteria排序方式按照flag的时间降序排列。其他的设定都可根据自己的需求而定。

所有的步骤结束,那么你的“浏览记录”也就生成了,呵呵。



ps:经测试,如果用panel构建的node页面框架的话,那么上面的方法将完全失效,panel同rules和flag都有兼容性的问题。还有一定,就是如果是要让匿名用户也具有“浏览记录”的话,需要在增加一个Session api模块,安装后会有用户访问权限的选项自动增加到flag设置中去。



猪跑啦独家原创专稿,欢迎您转载本文,转载请注明来源。

|2011-2026-版权声明|平台(网站)公约|DOOOOR 设计网 ( 吉ICP备2022003869号 )

GMT+8, 2-19-2025 14:14 , Processed in 0.471719 second(s), 90 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表