Предположим, у меня есть родительские страницы A1 и B1. A1 имеет дочерние страницы A1.1, A1.2, A1.3 и B1 имеет дочерние страницы B1.1, B1.2. Я хочу перечислить все соответствующие дочерние страницы на A1 и B1. На каждой дочерней странице у меня есть изображение и заголовок. Эти две информации должны быть указаны в виде тизера на родительской странице. Мне нужна помощь в этом, будь то по кодированию или с помощью представлений, я не возражаю, насколько я получаю правильные результаты. СпасибоКак перечислить все дочерние страницы текущей родительской страницы в drupal 7?
ответ
Вы можете сделать это, создав представление, отображающее нужные вам поля или тизер. Затем добавьте контекстный фильтр «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);
Последнее, что нужно сделать, под «более» в нижней части страницы sellect «Разрешить несколько значений»
Я применил ваше решение, но ничего не отображает. Фактически я использовал блок меню в моем случае. Еще один вопрос: как настроить дочерние страницы для работы вашего решения? – Moushrat
Блок меню работает для меню, но не изображения, вы можете использовать значок меню https://www.drupal.org/project/menu_icons, но вам нужно будет добавить значки в меню, а не в узел. – pete80
Я только что успешно протестировал вышеописанную новую установку drupal, создал некоторые вложенные пункты меню в главном меню, создал представление, описанное выше, вывел представление как блок и добавил блок в область содержимого – pete80
Я использую menu_tree_all_data()
https://api.drupal.org/api/drupal/includes!menu.inc/function/menu_tree_all_data/7
получить всю структуру меню и тогда я «вручную» wling дерева меню ...
Кроме того, только после прочтения дерева я звоню menu_tree_add_active_path()
который добавит активный индикатор следа. Это часть модуля блока меню, поэтому вам нужно будет установить его и не забудьте добавить зависимости для блока меню в вашем модуле ...
$tree = menu_tree_all_data($menu);
menu_tree_add_active_path($tree);
Как страница родителя связана с дочерней страницей? – D34dman