如何使用基本页面的别名作为上下文过滤器

Posted

技术标签:

【中文标题】如何使用基本页面的别名作为上下文过滤器【英文标题】:How to use a basic page's alias as a contextual filter 【发布时间】:2012-04-18 20:12:44 【问题描述】:

我有一个名为 Kids 的基本页面,其别名路径为:example.com/kids

我还有一个名为 Resources 的内容类型,它有标签。

我想创建一个块来获取所有 Resources 标记为“kids”或任何基本页面别名的块。我不想为每个基本页面创建一个带有硬编码过滤器的块。

我创建了一个视图,并将上下文过滤器设置为 URL 的第一个参数,希望它是基本页面的别名。不幸的是,这不起作用,因为上下文过滤器似乎在别名之后开始。

example.com/kids 不返回任何结果。

example.com/kids/kids 按照我的意愿行事,并返回所有带有孩子标签的资源。但是,如果我创建嵌套在 Kids 下的第二个基本页面,它将停止工作,因为 kids/kids 现在是一个有效的别名路径,因此上下文过滤器会忽略它。

tl;博士;

是否有任何模块或方法可以使用基本页面的别名作为上下文过滤器?

谢谢!

【问题讨论】:

我也有同样的问题 - 你最终找到解决方案了吗? 【参考方案1】:

在上下文过滤器设置中,您可以选择在未通过时设置默认值(这就是您的别名所发生的情况)。然后,您可以编写一些 php 来返回页面别名的最后一部分。

类似的东西:

return array_pop(explode('/',drupal_get_path_alias()));

所以现在当您转到“example.com/kids”时,上下文过滤器将包含参数“kids”。

别名路径“example.com/kids/kids”也是如此。

【讨论】:

【参考方案2】:

即使我曾经遇到过同样的问题。 这就是我所做的。

创建了一个名为 X 的回调 / 菜单,并将其传递给 X/A 之类的菜单,其中 A 是您的案例中的参数“孩子”。 现在使用 URL 别名,将此 URL 重写为 X/A 到 A

这种方式对我来说完美无缺并且仍然有效。

【讨论】:

以上是关于如何使用基本页面的别名作为上下文过滤器的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有面板的Views Drupal 7中将组ID作为上下文

将视图上下文过滤器设置为 request_path()

如何使用自定义块 php 获取视图页面的字段

具有默认值上下文过滤器的 Drupal 7 视图块不会在页面上过滤(Mongo)

如何将特定上下文注入 Gatsby 中的所有页面?

SEO 友好的暴露过滤器视图 Drupal 7