根据词语(term)查看内容
你可以通过进入一个词语的URL来查看该词语下面的所有节点。例如,在URL http://example.com/?q=taxonomy/term/5,5是你希望查看的词语的term ID。结果将是一列包含了每个使用该词作为标签的节点的标题和Teaser。
在URL中使用AND和OR
构建支持AND和OR的分类(taxonomy)URL的语法为,分别使用逗号“,”和加号“+”。下面是一些例子。
指定了词语ID为5和6的所有节点的展示,使用下面的URL:
http://example.com/?q=taxonomy/term/5,6
使用下面的URL展示指定了词语ID为1或2,或者3的所有节点
http://example.com/?q=taxonomy/term/1+2+3
taxonomy.module对混合使用AND和OR目前还没有提供支持。
提示:使用path模块,来为你这些分类URL设置用户友好的URL,这样他们后面就不会有这些令人害怕的数字了。
为多层级词汇表声明深度
在前面的例子中,我们是用了一个隐含的参数。例如,URL http://example.com/?q=taxonomy/term/5实际上是
http://example.com/?q=taxonomy/term/5/0
当为了展示准备结果集时,最后一个参数0就是所要搜索的层级数;如果参数为all时,这意味着包括所有的层级。假定你有一个多层级词汇表,如表14-3所示。
表 14-3.一个地理多层级词汇表
(子词语为它们父亲后面,缩进了)
Term ID Name
1 Canada
2 British Columbia
3 Vancouver
4 Ontario
5 Toronto
第一层级是国家(Canada);它有两个孩子,British Columbia 和 Ontario省。每一个省都包含一个孩子,一个Drupal异常活跃的加拿大的重要城市。下面是修改URL的深度参数所起到的作用。
所有标记了Vancouver的节点使用下面的URL:
http://example.com?q=taxonomy/term/3 or http://example.com?q=taxonomy/term/3/0
为了展示所有标记了British Columbia(但是没有标记Vancouver)的节点,使用下面的URL:
http://example.com?q=taxonomy/term/2
为了展示所有标记了British Columbia(包含标记Vancouver的)的节点(注意我们这里将层级深度设为了1),使用下面的URL:
http://example.com?q=taxonomy/term/2/1
任何标记了Canada或者标记了任意一个加拿大省份或者城市的节点都可使用下面的URL来展示:
http://example.com?q=taxonomy/term/1/all
注意 结果集是作为普通的节点列表展示出来的。如果你想层次化的展示节点标题或者teaser,你需要自己编写一个定制的主题函数,或者使用views模块(http://drupal.org/project/views)。
自动的RSS种子
每个词语都有一个自动的RSS种子,用来展示最近标记了该词语的节点。例如,词语ID的种子位于
http://example.com/?q=taxonomy/term/3/0/feed
注意深度参数(这里为0)是必须的.和期望的一样,你可以使用AND或者OR来联合词语构建一个联合的种子,下面是词语2 或 4的种子,包含了所有的儿子(不包括儿子的儿子。。。):
http://example.com/?q=taxonomy/term/2+4/1/feed
下面是包含所有子孙的种子:
http://example.com/?q=taxonomy/term/2+4/all/feed
分类的存储
如果你不想局限于Drupal 内置的分类能力,那么这将驱使着你去理解分类是如何存储在数据库中的。在一个典型的非Drupal数据库中,你可能通过简单的向数据库表中添加一列来创建一个扁平的分类。正如你所看到的那样,Drupal使用普通的数据库表来添加一个分类。图14-4展示了数据库表结构

图14-4 Drupal分类的数据库表。主键使用了粗体
下列表组成了Drupal的分类存储系统:
• vocabulary:这个表存储了词汇表的相关信息,通过Drupal后台的分类接口可以修改词汇表。
(译者:葛红儒 来源:http://zhupou.cn/)
1 周 6 天之前
3 周 4 天之前
3 周 4 天之前
3 周 4 天之前
5 周 3 天之前
5 周 3 天之前
7 周 3 天之前
7 周 3 天之前
7 周 3 天之前
7 周 3 天之前