如何用视图覆盖分类法/术语/%列表?


28

我有一个附加到内容类型的词汇表。只能选择一个术语对使用此内容类型创建的节点进行分类。该词汇表称为“车辆”,术语为“汽车,卡车,轮船”。内容类型也称为车辆。

我使用自动路径,以便显示[vocabulary:name] / [term:name],因此在渲染时将显示site.com/vehicles/trucks,例如,将显示所有卡车...典型的Drupal素材。好...

现在,我有一个视图,它是带有路径“车辆”的页面。设置为显示内容类型“车辆”的所有项目。此页面视图还设置为接受参数“分类术语ID”。

请注意,如果存在分类法术语,则为分类法路径生成的url别名与提供了参数的“视图”页面完全相同:

URL别名分类路径=车辆/卡车。带有参数=车辆/卡车的视图页面。

这是故意的。我的目标是在不存在参数的情况下显示该内容类型的所有结果,并且当存在参数时,最重要的是根据该分类术语过滤结果,并保持与不使用参数时相同的字段和结构(与site.com/vehicles)。

问题是,这无法正常工作。site.com/vehicles正确显示了我的视图和相关过滤器。site.com/vehicles/trucks仅显示Drupal提供的常规,未格式化的分类法列表。

这是因为分类标准术语ID参数配置不正确吗?

这是在Views之后触发分类法挂钩的重要问题吗?如果是这样,如何在这里重新调整权重,使其正确触发并为我提供所需的结果?

我知道您将要提出的建议-视图带有分类/术语/%视图,以覆盖drupal默认视图。

但是,对于我来说,这是行不通的。我有多种内容类型,每种内容类型都有自己的词汇表,每种都有自己的视图和不同的字段集(例如房屋和汽车,具有非常不同的字段集)。如果所有内容类型都具有相同的字段,则分类法/项/%可以使用,那么我可以模仿那些覆盖的内容,但是既然不是这种情况,我如何正确地获取带有参数的路径以显示基于那个词汇并保持我的领域结构?

抱歉,这令人困惑。该站点的链接以供参考http://www.buyagainbaby.com。该站点当前确实使用了分类法/术语/%作为替代,但是同样,它必须进行更改,以便每个视图都负责根据分类法呈现结果集。

Answers:


20

所有这些答案都是不错的解决方案,感谢您抽出宝贵的时间提供此类信息性答案。阿什拉尔(Ashlar),您的回答教会了我很多有关分类法如何工作以及观点与分类法之间关系的知识。

我找到了一种适合我的情况的解决方案,我将分享该解决方案,以防它也对你们有帮助。

正如我在上面解释的那样,我的问题是,没有参数的视图提供了我想要的结果,但是默认的分类学视图带有参数,这不是我想要的。

为了解决这个问题,我安装了分类法显示模块http://drupal.org/project/taxonomy_display。然后,我将每个视图重新配置为具有“分类术语” ID作为参数。

分类显示可让您将词汇表与特定视图相关联。现在,当我单击车辆/卡车时,这是分类法/ term / 3的别名,该视图将接管,并且实际上已正确呈现了该视图,从而保持了现场结构的完整性。

如果有人想了解有关配置的更多详细信息,请告诉我。


您的解决方案听起来像是一个伟大的计划!不幸的是,我没有得到“分类法显示让您将词汇表与特定视图相关联”的一部分……您能详细解释一下吗?
米歇尔

一旦安装了分类显示模块,您将在其设置选项中看到控制分类术语列表显示方式的信息。视图是一个选项。您选择视图,然后选择该视图中您希望分类列表项目看起来像的项目。所有这些都假定您已经创建了一个视图,该视图列出了所需的内容。按下保存后,分类列表将与在设置中选择的视图的输出完全相同。
blue928 2013年

7

我相信在您的设置中需要考虑几个因素:

  • 每个路径都必须是唯一的,才能访问页面,术语,视图或页面面板。如果您有两个具有相同地址的内容,则会失去对显示的控制。Drupal给出了分类术语优先于View的优先权,因此不会被调用。使用分类法/术语/#的视图定义将截取分类法术语,但是正如您所指出的,它不会显示有意义的URL。

  • 视图不响应别名。那是因为Drupal对任何请求所做的第一件事就是将别名转换为所有Drupal内容的节点/ nid格式标准。因此,在您的情况下,车辆/卡车会转换为分配给视图的节点/#。视图不能直接从别名获取上下文。

要获得想要的东西,您可以做以下几件事之一。

  • 创建一个菜单,并将回调设置为视图的路径。这将生成正确的URL,并允许视图进行响应。

  • 使用启用了页面管理器的面板(在Ctools Suite中)。如果定义为适当的URL定义的“页面面板”,则可以将“视图”放置在面板窗格中,或将上下文从面板页面直接传递到“视图”内容窗格。内容窗格没有路径。相反,它需要页面面板直接设置的上下文(如路径)来创建其内容。nodeone.se上的该视频系列在演示如何有效使用面板和页面管理器方面做得非常出色。

  • 将视图内容显示到屏幕的另一种方法是使用quicktabs模块。我认为这不适合您的特定情况,但是通过选择为页面定义的选项卡,它也可以直接进入视图。



2

实际上,几天前我做了类似的事情。我的解决方案不是很好,但可以。我所做的是使用面板而不是视图来覆盖分类法术语显示。然后,我将每个术语的所有不同视图添加到“面板”内容区域。由于在我的情况下,每个视图都有一个过滤器,将其限制为特定词汇表的结果,因此当您访问分类术语页面时,它仅显示该特定词汇表的视图。

让我知道您是否需要有关如何实现此功能的更多信息。


我不是大板扇,但这是一条可行的路线。此外,我在这里leveltendesign.com/blog/dustin-currie/…遵循了本教程。这非常有效,除了它使用分类法标识号,但我需要使用连字符而不是空格的分类法名称。曾经做过这样的诡计吗?
blue928 '04 -4-6

2
我们做这一切的时候。面板开箱即用为此定义了一个页面(尽管默认情况下是禁用的),所以我几乎不称其为优雅。
mpdonadio

我想要更多细节!:)
克里斯·

1

WebbyKat提出了一个很好的解决方案,将您的页面路径设置为/taxonomy/term/%而不是/categories/%

它可以工作,但是它将所有术语重写为一个视图。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.