如何在drupal 7中列出当前父页面的所有子页面?

时间:2015-06-09 06:04:40

标签: drupal drupal-7 teaser

假设我有父页面A1和B1。 A1具有子页面A1.1,A1.2,A1.3,B1具有子页面B1.1,B1.2。我想在A1和B1上列出所有相应的子页面。在每个子页面中,我都有一个图像和一个标题。这两个信息需要在父页面上以预告片的形式列出。无论是通过编码还是使用视图,我都需要帮助,我不介意,只要我得到正确的结果。谢谢

2 个答案:

答案 0 :(得分:0)

您可以通过创建显示所需字段或预告片的视图来执行此操作。然后添加一个“内容Nid”上下文过滤器,在“过滤器值不可用”下的此过滤器的配置中选择“提供默认值”,然后选择“PHP代码”,然后我使用的代码如下

$children = 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 menu_name=:menu and plid=:mlid and hidden=0 order by weight, link_title", array(':menu' => $current_info[0]->menu_name, ':mlid' => $current_info[0]->mlid));
foreach ($result as $row) {
  $children[] = $row;
}
}
$nids = array();
foreach ($children as $value){
if( substr( $value->link_path, 0, 5 ) == 'node/' ){
  $nids[] = substr( $value->link_path, 5 );
}
}
return implode('+',$nids);

最后要做的事情,在页面底部的“更多”下选择“允许多个值”

答案 1 :(得分:0)

我正在使用menu_tree_all_data()

https://api.drupal.org/api/drupal/includes!menu.inc/function/menu_tree_all_data/7

获取整个菜单结构,然后我“手动”抓取菜单树...

在阅读树之后,我正在调用menu_tree_add_active_path()

http://www.drupalcontrib.org/api/drupal/contributions!menu_block!menu_block.module/function/menu_tree_add_active_path/7

将添加主动跟踪指示器。它是菜单块模块的一部分,因此您必须安装它,并且不要忘记在模块中添加菜单块的依赖项...

  $tree = menu_tree_all_data($menu);
  menu_tree_add_active_path($tree);