Drupal 6 Views 经典手把手案例教程(2)

No replies
sun
sun 的头像
User offline. Last seen 1 周 3 天 ago. Offline
注册用户版主高级用户
加入: 2008-11-22
文章: 561
积分: 831

 使用Drupal 6 Views Module系列(二)
作者:唐瑶瑶/台湾大学计算机及资讯网路中心教学研究组程式设计师作者:唐瑶瑶/台湾大学计算机及资讯网路中心教学研究组程式设计师

我们将在本文中为大家介绍在区域?中的Arguments,Relationships及Sort Criteria这些强大的功能及使用方式。我们将在本文中为大家介绍在区域?中的Arguments,Relationships及Sort Criteria这些强大的功能及使用方式。

接续...使用Drupal 6 Views Module系列(一)接续...使用Drupal 6 Views Module系列(一)
继续努力设定…继续努力设定…

延续系列(一)的设定,先回到music view编辑画面,在区域?的下拉式选单中还有Feed、区块(Block)及附加档案(Attachment)尚未加入;而在区域k中的 Arguments ,Relationships及Sort Criteria也都是None defined。延续系列(一)的设定,先回到music view编辑画面,在区域?的下拉式选单中还有Feed、区块(Block)及附加档案(Attachment)尚未加入;而在区域k中的 Arguments ,Relationships及Sort Criteria也都是None defined。我们将在本系列(二)中为大家介绍这些强大的功能及使用方式。我们将在本系列(二)中为大家介绍这些强大的功能及使用方式。
系列(一)最后设定页面之画面如下:系列(一)最后设定页面之画面如下:

从Sort criteria着手从Sort criteria着手
这部份的设定较单纯,若您在Basic settings中Style并未设定任何排序原则,可以在此区块中加上您欲用来排序的栏位,并设定由小到大或由大到小即可。这部份的设定较单纯,若您在 Basic settings中Style并未设定任何排序原则,可以在此区块中加上您欲用来排序的栏位,并设定由小到大或由大到小即可。举例说明,若我们的目的是要显示出最近更新过的文件,越接近现在时间修改过的文件要放在最上面。举例说明,若我们的目的是要显示出最近更新过的文件,越接近现在时间修改过的文件要放在最上面。
1.则请新增一个Sort criteria「内容节点:Updated Date」,按下Add。 1.则请新增一个Sort criteria「内容节点:Updated Date」,按下Add。
2. Sort order为Descending。 2. Sort order为Descending。
3.时间精细度(Granularity)调整为Minute即可。 3.时间精细度(Granularity)调整为Minute即可。最后按下更新及储存view。最后按下更新及储存view。

Arguments设定Arguments设定
若我们想要动态产生views结果,可以在URL网址后加上参数即可,类似filter的效果,让使用者动态缩小查询范围至某一个歌手。若我们想要动态产生views结果,可以在URL网址后加上参数即可,类似filter的效果,让使用者动态缩小查询范围至某一个歌手。设定如下:设定如下:
1.在Arguments区块按下□+新增1.在Arguments区块按下□+新增
2.因为我们要用Author ID作为argument筛选,请于Group下拉式选单选择内容节点,勾选内容节点:Nid。 2.因为我们要用Author ID作为argument筛选,请于Group下拉式选单选择内容节点,勾选内容节点:Nid。
3.按下Add按钮。 3.按下Add按钮。

4.标题栏设定:这里的%1在显示时会被置换成第一个参数的node title。 4.标题栏设定:这里的%1在显示时会被置换成第一个参数的node title。同理,%2为第二个参数,依此类推。同理,%2为第二个参数,依此类推。本范例中,%1会显示出Author的title,也就是姓名。本范例中,%1会显示出Author的title,也就是姓名。
5. wildcard设定:请先设定wildcard值及title。 5. wildcard设定:请先设定wildcard值及title。 Wildcard是指带出所有结果,在此我们设wildcard为”all”。 Wildcard是指带出所有结果,在此我们设wildcard为”all”。
6.设定Action to take if argument is not present栏位为Provide default argument。 6.设定Action to take if argument is not present栏位为Provide default argument。当使用者并未于网址列填上任何参数时,我们将给予预设值。当使用者并未于网址列填上任何参数时,我们将给予预设值。此栏位有一个选项 summary,这个功能十分强大,他会将这个view的所有可能参数做summary,并提供各个参数的连结供点入检视。此栏位有一个选项 summary,这个功能十分强大,他会将这个view的所有可能参数做summary,并提供各个参数的连结供点入检视。
7.预设参数的设定有多种型态,可以是固定值、从URL带出之Node ID或者User ID等,在此我们简单的设定为固定值”all”。 7.预设参数的设定有多种型态,可以是固定值、从URL带出之Node ID或者User ID等,在此我们简单的设定为固定值”all”。



8.验证参数值的设定:将允许的参数设定为Artist这个内容型态,也就是说参数必须为Artist Node ID。 8.验证参数值的设定:将允许的参数设定为Artist这个内容型态,也就是说参数必须为Artist Node ID。
9.当有提供参数,但参数值不符合验证要求时,列出summary。 9.当有提供参数,但参数值不符合验证要求时,列出summary。



10.最后一项设定:勾选Allow multiple terms per argument。 10.最后一项设定:勾选Allow multiple terms per argument。这项设定的用意在于可同时带出多个参数的views结果。这项设定的用意在于可同时带出多个参数的views结果。参数之结合可以用 '+'或者','。参数之结合可以用'+'或者','。

11.参数使用方式及结果显示:在浏览器输入以下URL网址,其中allmusic是display 'All music posts page'的路径;137是Artist内容类型的Node ID,其title为周杰伦。 11.参数使用方式及结果显示:在浏览器输入以下URL网址,其中allmusic是display 'All music posts page'的路径;137是Artist内容类型的Node ID,其title为周杰伦。点选连结进入后,会看到周杰伦的简介及所有作品。点选连结进入后,会看到周杰伦的简介及所有作品。
http://140.112.XX.XX/drupal/?q=allmusic/137 http://140.112.XX.XX/drupal/?q=allmusic/137


最难懂是Relationships最难懂是Relationships
Views 2预设已隐含了一些relationship的设定,方便我们操作使用。 Views 2预设已隐含了一些relationship的设定,方便我们操作使用。在我们的范例中,由于Artist内容类型中有一个label为创作,type:Node reference栏位叫做field_created_song指向Song这个内容类型。在我们的范例中,由于Artist内容类型中有一个 label为创作,type:Node reference栏位叫做field_created_song指向Song这个内容类型。因此,若我们以Artist为key,可以很容易带出所有的创作(Songs);反之若我们以Song为key,要如何带出作者(Artist)呢?因此,若我们以Artist为key,可以很容易带出所有的创作 (Songs);反之若我们以Song为key,要如何带出作者(Artist)呢?这时relationship就派上用场了。这时 relationship就派上用场了。
1.先新增一个页面的display叫song2artist,Add relationships。 1.先新增一个页面的display叫song2artist,Add relationships。
2.选择内容:创作-(field_created_song),并按下Add Button。 2.选择内容:创作-(field_created_song),并按下Add Button。

3.在Label栏位填入”创作"。 3.在Label栏位填入”创作"。
4.勾选”Require this relationship”。 4.勾选”Require this relationship”。
5.设定Delta值为所有。 5.设定Delta值为所有。这个设定是指若带出的结果不只一个时,选择显示第1个、第2个或全部。这个设定是指若带出的结果不只一个时,选择显示第1个、第2个或全部。
6.按下更新。 6.按下更新。

7.接着设定Argument:当有relationship时,会多出一个设定栏位,在此我们选择使用”创作”这个relationship。 7.接着设定Argument:当有relationship时,会多出一个设定栏位,在此我们选择使用”创作”这个relationship。


8.开始设定欲显示之field栏位:先新增第一个内容节点:标题。 8.开始设定欲显示之field栏位:先新增第一个内容节点:标题。
9.选择使用”创作”这个relationship。 9.选择使用”创作”这个relationship。
10. Label设定为”歌名”。 10. Label设定为”歌名”。

11.新增第二个栏位:内容节点:本文。 11.新增第二个栏位:内容节点:本文。
12.选择使用”创作”这个relationship。 12.选择使用”创作”这个relationship。
13. Label设定为”歌词”。 13. Label设定为”歌词”。


14.新增第三个栏位:内容节点:标题。 14.新增第三个栏位:内容节点:标题。
15. Relationship设定:Do not use a relationship。 15. Relationship设定:Do not use a relationship。
16. Label设定为”创作者”。 16. Label设定为”创作者”。
17.更新后储存。 17.更新后储存。
18. field何时要采用relationship呢? 18. field何时要采用relationship呢?由于Song这个内容类型无法直接带出Artist相关资料,故只要是与Song相关的设定,如歌名、歌词或Song Node ID,都必须使用relationship。由于Song这个内容类型无法直接带出Artist相关资料,故只要是与Song相关的设定,如歌名、歌词或 Song Node ID,都必须使用relationship。反之,Artist则不需使用relationship即可带出创作者名字。反之,Artist则不需使用 relationship即可带出创作者名字。

19.最后设定完成的画面如下,提供参考。 19.最后设定完成的画面如下,提供参考。在Arguments及Fields区块中,只要前面有(创作)的栏位,都表示要使用此 relationship,可以看出来都是Song这个内容类型的资料。在Arguments及Fields区块中,只要前面有(创作)的栏位,都表示要使用此relationship,可以看出来都是Song这个内容类型的资料。

20.此display之path设定为s2a,若在URL输入如下,并带入某个Song Node ID,显示会如后。 20.此display之path设定为s2a,若在URL输入如下,并带入某个Song Node ID,显示会如后。 http://140.112.XX.XX/drupal/?q=s2a/130 http://140.112.XX.XX/drupal/?q=s2a/130
 


好玩的进阶设定好玩的进阶设定
基本上Views2 Module进阶设定太多了,且提供各种组合让开发者使用。基本上Views2 Module进阶设定太多了,且提供各种组合让开发者使用。我们这次只介绍Menu Tab及Filter Expose两种给读者,设定如下:我们这次只介绍Menu Tab及Filter Expose两种给读者,设定如下:
1.以前面的例子,我们已经有2个displays,分别为”All music posts page”及”sing2artist”。 1.以前面的例子,我们已经有2个displays,分别为”All music posts page”及”sing2artist”。
2.先修改”All music posts page”的path为musictab/allmusic。 2.先修改”All music posts page”的path为musictab/allmusic。所有Menu Tab items都必须有一个parent menu,认定的方法是以共同的path叫做musictab。所有Menu Tab items都必须有一个parent menu,认定的方法是以共同的path叫做musictab。

3.设定”All music posts page”之Menu Item为Default menu tab,并设定顺序为0,表示为预设出现在最左边的tab。 3.设定”All music posts page”之Menu Item为Default menu tab,并设定顺序为0,表示为预设出现在最左边的tab。

4. Default tab options设定:将Parent menu item设定为此display,请选Normal menu item,给定标题,更新后储存。 4. Default tab options设定:将Parent menu item设定为此display,请选Normal menu item,给定标题,更新后储存。


5.接下来设定”song2artist”之path为musictab/s2a,表示要出现在musictab这个menu tab中。 5.接下来设定”song2artist”之path为musictab/s2a,表示要出现在musictab这个menu tab中。

6.设定”song2artist”之menu选项,请选择Menu tab,并设定顺序为1。 6.设定”song2artist”之menu选项,请选择Menu tab,并设定顺序为1。

7.储存后于左边的导览列将会找到”音乐宝库”这个menu,或者在URL输入如下: 7.储存后于左边的导览列将会找到”音乐宝库”这个menu,或者在URL输入如下:
http://140.112.X.XX/drupal/?q=musictab http://140.112.X.XX/drupal/?q=musictab
一个简单的Menu Tabs就完成啰。一个简单的Menu Tabs就完成啰。


8. Filter的Expose设定:这个设定是在页面中提供使用者自行下参数寻找资料,非常好用。 8. Filter的Expose设定:这个设定是在页面中提供使用者自行下参数寻找资料,非常好用。在此,我们使用”song2artist”这个 display页面作范例。在此,我们使用”song2artist”这个display页面作范例。
9.新增Add filters设定:请选择内容节点:标题。 9.新增Add filters设定:请选择内容节点:标题。


10.因为是以Song的标题为筛选值,所以请选择使用”创作”这个relationship。 10.因为是以Song的标题为筛选值,所以请选择使用”创作”这个relationship。
11.按下Expose Button。 11.按下Expose Button。

12. Operator设定:因为我们想以歌曲名称的关键字做筛选查询,请选择Contains。 12. Operator设定:因为我们想以歌曲名称的关键字做筛选查询,请选择Contains。
13.勾选可选(option)及Remember两个checkbox,Case Sensitive则取消勾选。 13.勾选可选(option)及Remember两个checkbox,Case Sensitive则取消勾选。
14. Label设定为”曲名关键字:”。 14. Label设定为”曲名关键字:”。

15.输入下列网址,或者从”音乐宝库”中选择第2个menu tab,预设将会出现所有的Song Nodes。 15.输入下列网址,或者从”音乐宝库”中选择第2个menu tab,预设将会出现所有的Song Nodes。请试着在”曲名关键字”栏位中输入您资料库中某首曲名(全部或部分),按下Apply Button将会带出该笔资料。请试着在”曲名关键字”栏位中输入您资料库中某首曲名(全部或部分),按下Apply Button将会带出该笔资料。
http://140.112.X.XX/drupal/?q=musictab/s2a http://140.112.X.XX/drupal/?q=musictab/s2a


结语同样为Open Source中佼佼者的WordPress MU网站上有句话是这么说的:The possibilities are only limited by your imagination.个人认为也十分适用于此,与大家共勉之!结语同样为Open Source中佼佼者的WordPress MU网站上有句话是这么说的:The possibilities are only limited by your imagination.个人认为也十分适用于此,与大家共勉之!

您对这篇文章的看法是:
  • .
  • .
  • .
  • .
  • .
  • .
  • .
  • 支持
  • 很棒
  • 搞笑
  • 惊讶
  • 欠揍
  • 不解
  • 反对
  • 0
  • 1
  • 0
  • 0
  • 0
  • 0
  • 0

天天学习,好好向上