如何在Drupal7中显示除当前页面之外的同级页面?

如何在Drupal7中显示除当前页面之外的同级页面?,drupal,drupal-7,drupal-views,drupal-contextual-filters,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,反之亦然 注意:每一页都有一张图片和一个标题。我想得到一个使用视图的解决方案 如果我们需要子页面,此线程可能会链接到此链接:在两个页面上添加上下文过滤器nid,默认情况下,从url选择内容id,然后在下面的“提前”部分中选中“排除”选项。我通过在上下文过滤器

假设我有父页面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,反之亦然

注意:每一页都有一张图片和一个标题。我想得到一个使用视图的解决方案


如果我们需要子页面,此线程可能会链接到此链接:

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

我通过在上下文过滤器中使用以下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);
最后,在加号选项中,我们选中了“允许多个值”


保存并完成它;-)

您是否希望在所有级别上显示同级,以便B1页将显示A2NO事实上,当我在B1.1上时,它将仅显示B1.2页,因为它们来自同一父B1。同样适用于父菜单A1,当我在第A1.1页时,我将看到第A1.2页和第A1.3页,因为它们来自同一父菜单,A1是,但A1和B1是同一菜单中的同级菜单还是来自不同的菜单?事实上,我有一个“功能列表”页面的内容类型和一个“功能页面”的内容类型。A1和B2属于功能列表类型,A1.1..1.3和B1.1..1.2属于功能类型。根据层次结构,功能页面是功能列表页面的子页面。当我在功能页面A1.1上时,应显示其他两个同级。B1也一样。是的,A1和B1都是兄弟,每个都有自己的孩子在两个页面上添加上下文筛选器nid,默认情况下,从url选择内容id,然后在下面的“提前”部分中选择“排除”选项。