Puncte:0

Listați toate nodurile cu același ID părinte de meniu

drapel pt

Am următorul meniu în sistemul meu.

captură de ecran

Parintele meniu-link se conectează la un nod al cărui ID este 58. Toate submeniul-linkurile au un ID părinte egal cu 58.

Trebuie să găsesc meniul principal și submeniul folosind 58, dar nu am reușit să găsesc tabelul care conține acele informații.

Cum pot enumera nodurile care partajează un anumit ID de meniu?

sonfd avatar
drapel in
Încercați de fapt să găsiți doar nodurile care sunt copii ale unui anumit element de meniu părinte și să faceți ceva cu ele? sau încercați doar să afișați toți copiii unui anumit element de meniu (indiferent dacă elementele de meniu copil indică noduri sau altele)?
drapel pt
Da. Încerc să fac nodurile să facă ceva cu ele. ID-urile nodurilor părinte și ale descendenților vor intra într-o logică în altă parte a site-ului.
Stefanos Petrakis avatar
drapel in
@sisko ai avut ocazia să încerci răspunsul meu sugerat?
Puncte:0
drapel in

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!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.