如何在drupal 7中显示除当前页面之外的兄弟页面?

时间:2015-06-10 12:32:37

标签: drupal drupal-7 drupal-views drupal-contextual-filters

假设我有父页面A1和B1。 A1具有子页面A1.1,A1.2,A1.3,B1具有子页面B1.1,B1.2。

当我在A1.1页时,我将能够显示A1.2和A1.3。 对于A1.2,我将能够看到A1.1和A1.3。

如果我在第B1.1页,我将看到B1.2,反之亦然。

注意:每个页面都有一个图像和一个标题。我希望使用视图获得解决方案。

如果我们需要子页面,可以将此主题链接到此链接:How to list all child pages of current parent page in drupal 7?

2 个答案:

答案 0 :(得分:1)

在两个页面上添加一个上下文过滤器nid,在默认情况下从url中选择内容id,然后在预先的部分下面检查排除选项。

答案 1 :(得分:0)

我设法通过在上下文过滤器中使用以下php代码创建视图来实现它

$sibbling = array();
$current = db_query("select menu_name, mlid from {menu_links} where link_path = :node", array(':node' => $_GET['q']));
$current_info = array();
foreach ($current as $value) {
    $current_info[] = $value;
}
if($current_info) {
    $result = db_query("select mlid, plid, link_path, link_title from {menu_links} where link_path != :node and plid = ( select plid FROM {menu_links} WHERE link_path =:node)", array(':node' => $_GET['q']));
    foreach ($result as $row) {
      $sibbling[] = $row;
    }
}
$nids = array();

foreach ($sibbling as $value){
    if( substr( $value->link_path, 0, 5 ) == 'node/' ){
        $nids[] = substr( $value->link_path, 5 );
    }
}

return implode('+',$nids);

最后在加号选项中我们检查“允许多个值”

保存并完成; - )