你在这里

使用Views模块定制基于内容类型的页面

原文链接:http://drupal.org/node/1059510

这个文章是为D6写的,我将补充部分D7的内容。

在此描述如何做一个页面(page),它使用views模块,并根据内容类型进行外观定制。

我能找到很多做显示套件用的模块,你可以通过它们进行一个节点页面的定制设计,如果编辑相应节点的tpl.php文件(node-CONTENTYPENAME.tpl.php),你可以为这个内容类型的每个页面定制外观。在很多情况下,我会建议使用这些模块和技术,但在某些情况下,你可以仅使用Views模块,它不仅容易得多,而且更灵活。例如,添加、修改和创建动态元素。

我在网站上发布了一个招聘启事,并希望通过Views模块进行配置外观。招聘启事的内容类型为“create a job(创建一个职位)”,包含几个字段,比如职位、工作地点等,在这个教程里,唯一重要的字段是标题字段。

在views里创建新的View,type=node(D7中跳过这一步,直接选择显示内容/类型:内容/create a job)并适当配置一些默认的设置。

  • 过滤器:已发表= YES
  • 过滤器:类型=“create a job”
  • 字段:title

我没有把剩余的设置都做了,因为必要的都有了(当然,你有一些想加的字段,我们可以稍后做)。

然后,增加一个显示(Displays)=“页面(Page)”,在D7中,如果你在上一步选择了创建页面,那么这里就可以不用设置。这将显示由管理员创建的所有职位列表。然后,显示格式为表格,但你可以使用任何你喜欢的。

接下来是重点。

在标题字段选择“REWRITE RESULTS”>"output this field as a link(以链接方式输出)",并设置链接为“jobs/ [title]”。作为URL的组成部分,"jobs"是我的网站url别名设置的要求,你可以不用这个名称。最重要的是替换模板"[title]"(这需要安装令牌模块 -没有的话就去安装,它现在是D7内核的模块,因为它很有用) 。这个url链接到下一步我们要做的:创建页面。(我应该提到,这些都需要简洁URL配置,你应该有的)。

现在再创建一个新的显示(Displays)“页面(Page)”,这将是节点的新外观。现在用户将被引导到新的外观,而不必通过Drupal的标准页面导航。

现在你可以添加字段和过滤器了,并可以使用任何你想要的风格,然后你的页面就完成了。

注意:您需要限制:1"items per page:"1,这样其他页面的内容就不会影响到这个新页面。

现在你已经完成了页面的设置,并使它只显示一个item。但是用户怎么能看到这个View,你定义的输出链接又怎么用呢?

在“页面设置(Page Setting)”中的路径(Path)必须改变(在本例的情况下)为“jobs/%”。 %是通配符,因为你已经是以"title"为列表显示内容... ,这就链接到这个通配符!伟大的Views规则。

OK,现在你的jobs有了自己的外观页面,这就可以替代那些由Drupal内建的或者其它模块定义的静态页面了。

我觉得你也可以创建一个附件,这会工作的很好,但..也不一定。

您的默认节点页面仍然在Drupal中,但因为用户导航这个View,默认页面不会被看到。

(我采用了“Drupal的方式”说明,希望它能够清楚明白)

/ *************** /
/ *更新* /
/ *************** /

这里有一个小问题,当使用pathauto(我相信大多数人使用)。如果标题的URL链接和pathauto的链接相同,那么这个可能无法正常工作。因为曾经有两次它正常工作了。我不是假装理解这个问题,但我想该节点页仍然存在,Drupal想要链接到它。当然,如果URL是不同的,是没有冲突的。也可以考虑使用[path]字段进行替换,field->Node:Path(D7中应该是内容:路径)。

继续我们的例子。

设置pathauto和招聘页面不同的url相对目录,比如[work-with-us]和[work-us],那么所有的链接都会良好工作。我想不会再有绊脚石了。

注意:URL必须不pathauto的url相同。