Drupal Views参数应该显示同义词和兄弟姐妹

时间:2011-02-22 13:40:29

标签: drupal drupal-views

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

我们的分类法是分层次的:

  • 地区 - 该地区的市政当局 ---来自市政府的城镇

例如:

  • 地区A(地区) - 市X(市) ---镇1 ---镇2 - 市政府Y(市) ---镇3 ---镇4 - 市Z(市) ---镇5 ---镇6

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

现在我们想在我们的视图中添加一个新功能:还列出来自邻近市政当局的新闻。市政府Y是Z市的Neghbour,我们将这种关系添加到分类学术语中。

所以现在我们可以通过选择使用Taxonomy Depth参数来显示来自Y的所有故事。我们还可以使用Taxonomy Related terms参数显示所有故事。

但是如何用Y和它的兄弟Z显示所有节点的视图?

1 个答案:

答案 0 :(得分:0)

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

  • 将参数不存在时动作设置为“显示空文本”;
  • 关于验证器选项,将验证器设置为“PHP代码”;
  • 代码中的
    • 使用 arg(1);
    • 获取时间
    • 使用 taxonomy_get_related($ tid)获取相关条款;
    • 使用语法“tid + related_tid + related_tid + related_tid”构建一个字符串以作为参数返回;
    • $ handler->参数重新定义为内置字符串;
  • 最后,将允许每个参数的多个术语设置为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;