The menu_link_content
definiția entității conține informații legate de întrebarea dvs.; și anume, tabelul bazei de date care conține relația părinte-copil ar fi menu_link_content_data
.
Mai jos este un eșantion de cod care ar furniza o serie de ID-uri de nod dat un nod părinte, cu condiția să existe un link de meniu atașat nodului.
Acest cod folosește API-urile Drupal în loc de interogări SQL.
<?php
// Obține rădăcina pe baza unui nod dat, de ex. nodul 58.
$menu_link_root_entities = \Drupal::entityTypeManager()
->getStorage('menu_link_content')
->loadByProperties([
'link' => [
'uri' => 'entity:node/58'
],
],
);
$menu_link_root = reset($menu_link_root_entities);
// Trebuie să apelați acest lucru pentru a instanția serviciul tree_storage.
$menu_tree = \Drupal::menuTree();
// Obține entități de conținut link de meniu pe baza proprietății lor părinte.
$menu_links = \Drupal::service('menu.tree_storage')->loadByProperties([
// Este nevoie de o valoare de filtru precum menu_link_content:8031d182-7a0b-4798-839a-6c66bdd1f27b
'parent' => 'menu_link_content:' . $menu_link_root->uuid(),
]) ?: [];
$node_ids = array_map(funcție($v){
returnează $v['parametri_rutei']['nodul'];
}, $menu_links);
Sper să vă ajute, mult succes!