Drupal Views 参数应该显示同义词和同级

发布于 2024-10-18 17:02:59 字数 480 浏览 1 评论 0原文

我正在使用 Drupal Views,它根据地理位置过滤我们的内容,并显示来自特定城市的新闻。

我们的分类是分层的:

  • 区域 -- 该地区的市镇 --- 直辖市的城镇

例如:

  • A区(地区) -- X市(直辖市) --- 城镇 1 ---城镇2 -- Y市(直辖市) ---城镇3 ---镇4 -- Z市(直辖市) ---镇5 --- 城镇 6

我们用城镇名称标记我们的节点,并通过使用分类术语 id 作为我们视图中的参数,我们可以轻松列出来自任何城市的所有故事。

现在我们想在我们的视图中添加一个新功能:同时列出来自邻近城市的新闻。 Y 市是 Z 市的一个邻居,我们将这种关系添加到分类术语中。

所以现在我们可以通过选择使用分类深度参数来显示 Y 中的所有故事。我们还可以通过使用分类相关术语参数来显示所有故事。

但是如何用视图显示 Y 及其同级 Z 的所有节点呢?

I am working with Drupal Views, that filter our content based on geography, and shows news from a specific municipality.

Our taxonomy is hierarchical:

  • Regions
    -- Municipalities from the region
    --- Towns from the municipality

For example:

  • Region A (region)
    -- Municipality X (municipality)
    --- Town 1
    --- Town 2
    -- Municipality Y (municipality)
    --- Town 3
    --- Town 4
    -- Municipality Z (municipality)
    --- Town 5
    --- Town 6

We tag our nodes with town names, and by using taxonomy term id as argument in our view, we can easily list all stories from any municipality.

Now we would like to add a new feature to our view: Also list news from the neighbouring municipality. Municiplaity Y is a Neghbour of Municipality Z, and we added this relation to the taxonomy term.

So now we can show all stories from Y by choosing using Taxonomy Depth argument. We can also show all stories, by using the Taxonomy Related terms argument.

But how to show all nodes from both Y and its sibling Z with views?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

悲念泪 2024-10-25 17:02:59

您应该将视图参数的验证器更改为 PHP 代码。然后,在验证器字段中,您将能够动态更改参数。这样,有了 tid,您就可以获得所有相关术语。

  • 参数不存在时采取的操作设置为“显示空文本”;
  • 在验证器选项上,将验证器设置为“PHP代码”;
  • 在代码中:
    • 使用arg(1)获取tid;
    • 使用taxonomy_get_lated($tid)获取相关术语;
    • 使用语法“tid+related_tid+related_tid+related_tid”构建一个字符串作为参数返回;
    • $handler->argument重新定义为构建的字符串;
  • 最后,将每个参数允许多个术语设置为 True

以下是要插入 php 代码验证表单中的示例代码:

$tid = arg(1);
$result = strval($tid);
$related = taxonomy_get_related($tid);
foreach($related as $i){
  if (intval($i)>0){
    $result.="+".$i;
  }
}
$handler->argument = $result;
return $result;

You should change the validator of the views argument to PHP code. Then, in the validator field you will be able to change the argument dynamically. This way, having the tid you can get all the related terms.

  • set the Action to take if argument is not present to "display empty text" ;
  • on validator options, set the validator to "PHP Code";
  • in the code:
    • get the tid using arg(1);
    • use taxonomy_get_related($tid) to get the related terms;
    • build a string in with the syntax "tid+related_tid+related_tid+related_tid" to return as argument;
    • redefine $handler->argument as the built string;
  • finally, set the Allow multiple terms per argument as True

Here's an example code to insert in the php code validation form:

$tid = arg(1);
$result = strval($tid);
$related = taxonomy_get_related($tid);
foreach($related as $i){
  if (intval($i)>0){
    $result.="+".$i;
  }
}
$handler->argument = $result;
return $result;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文