【问题标题】:How to list all child pages of current parent page in drupal 7?如何在drupal 7中列出当前父页面的所有子页面?
【发布时间】:2015-08-23 19:16:29
【问题描述】:

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

【问题讨论】:

  • 父页面与子页面有什么关系?

标签: drupal drupal-7 teaser


【解决方案1】:

您可以通过创建一个显示您需要的字段的视图或一个预告片来执行此操作。然后添加一个“Content Nid”上下文过滤器,在“WHEN THE FILTER VALUE IS NOT AVAILABLE”下为此过滤器的配置中选择“提供默认值”,然后选择“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);

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

【讨论】:

  • 我应用了您的解决方案,但没有显示任何内容,事实上我在我的案例中使用了菜单块。另一个问题是如何设置子页面以使您的解决方案发挥作用?
  • 菜单块适用于菜单但不适用于图像,您可以使用菜单图标drupal.org/project/menu_icons,但您必须将图标添加到菜单而不是节点。
  • 我刚刚在全新安装的 drupal 上成功测试了上述内容,在主菜单中创建了一些嵌套菜单项,创建了上述视图,将视图作为块输出并将块添加到内容区域
  • 你能为你的测试提供一个小提琴吗?我做不到
  • 请给我一个登录名和密码,以便我可以在管理员方面查看您是如何进行的。谢谢
【解决方案2】:

我正在使用 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);

【讨论】:

  • 您能否提供详细的分步指南?很多天以来我都被这个困住了。
  • 添加该代码,然后在 print_r / var dump $tree 之后查看它的结构。然后遍历 $tree(分支)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 2017-07-24
  • 1970-01-01
  • 2011-03-24
相关资源
最近更新 更多