How to display sibling pages except current page in drupal 7?

给你一囗甜甜゛ 提交于 2020-01-15 18:51:26

问题


Suppose I have parent pages A1 and B1. A1 has child pages A1.1, A1.2,A1.3 and B1 has child pages B1.1, B1.2.

When I am on page A1.1 I shall be able to display A1.2 and A1.3. Same for A1.2, I shall be able to see A1.1 and A1.3.

If I am on page B1.1, I shall see B1.2 and vice versa.

Note: Every page has an image and a title. I want to get a solution using views.

This thread may be linked to this link if we need the child pages: How to list all child pages of current parent page in drupal 7?


回答1:


Add a contextual filter nid on both pages, in default select content id from url, then down below in advance section check exclude option.




回答2:


I managed to do it by creating a view with the following php code in contextual filter

$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);

And finally in the plus options we got to check "Allow multiple values "

Save and its done ;-)



来源:https://stackoverflow.com/questions/30756463/how-to-display-sibling-pages-except-current-page-in-drupal-7

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!