Как вывести список всех дочерних страниц текущей родительской страницы в drupal 7?

Предположим, у меня есть родительские страницы A1 и B1. A1 имеет дочерние страницы A1.1, A1.2,A1.3, а B1 имеет дочерние страницы B1.1, B1.2. Я хочу перечислить все соответствующие дочерние страницы на A1 и B1. На каждой дочерней странице у меня есть изображение и заголовок. Эти 2 информации должны быть перечислены в виде тизера на родительской странице. Мне нужна помощь в этом, будь то кодирование или использование представлений, я не возражаю, насколько я получаю правильные результаты. Спасибо

2 ответа

Решение

Вы можете сделать это с помощью представлений, создав представление, отображающее необходимые поля или тизер. Затем добавьте контекстный фильтр "Content 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);

Последнее, что нужно сделать, в разделе "больше" внизу страницы выберите "Разрешить несколько значений"

Я использую 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);
Другие вопросы по тегам