Рейтинг:0

Список всех узлов с одинаковым родительским идентификатором меню

флаг pt

У меня есть следующее меню в моей системе.

Скриншот

Родитель ссылка на меню подключается к узлу, идентификатор которого равен 58. Все ссылки в подменю имеют родительский идентификатор, равный 58.

Мне нужно найти главное и подменю, используя 58, но мне не удалось найти таблицу, содержащую эту информацию.

Как я могу перечислить узлы, которые имеют общий идентификатор меню?

sonfd avatar
флаг in
Вы на самом деле пытаетесь найти только те узлы, которые являются дочерними элементами определенного пункта родительского меню, и что-то с ними сделать? или вы просто пытаетесь отобразить все дочерние элементы определенного элемента меню (независимо от того, указывают ли дочерние элементы меню на узлы или другое)?
флаг pt
Да. Я пытаюсь заставить узлы что-то с ними делать. Идентификаторы родительского и дочернего узлов будут использоваться в некоторой логике в другом месте на сайте.
Stefanos Petrakis avatar
флаг in
@sisko у вас была возможность попробовать мой предложенный ответ?
Рейтинг:0
флаг in

menu_link_content определение объекта содержит информацию, связанную с вашим вопросом; а именно, таблица базы данных, содержащая отношение родитель-потомок, будет menu_link_content_data.

Ниже приведен пример кода, который будет предоставлять массив идентификаторов узлов для заданного родительского узла при условии, что к узлу прикреплена ссылка меню. Этот код использует API-интерфейсы Drupal вместо SQL-запросов.

<?php

// Получить корень на основе заданного узла, например. узел 58.
$menu_link_root_entities = \Drupal::entityTypeManager()
  ->getStorage('menu_link_content')
  ->загрузить по свойствам([
      'ссылка' => [
        'uri' => 'сущность: узел/58'
      ],
    ],
);
$menu_link_root = сброс($menu_link_root_entities);

// Необходимо вызвать это, чтобы создать экземпляр службы tree_storage.
$menu_tree = \Drupal::menuTree();
// Получаем объекты содержимого ссылки меню на основе их родительского свойства.
$menu_links = \Drupal::service('menu.tree_storage')->loadByProperties([
    // Нужно значение фильтра, такое как menu_link_content:8031d182-7a0b-4798-839a-6c66bdd1f27b
    'родительский' => 'menu_link_content:' . $menu_link_root->uuid(),
]) ?: [];

$node_ids = array_map (функция ($ v) {
    return $v['route_parameters']['node'];
}, $menu_links);

Надеюсь это поможет. Удачи!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.