Существует ли путь (кроме sql) для получения mlid для данного nid в drupal?

У меня есть узел, я хочу, это - меню. Насколько я могу сказать, node_load не включает его. Очевидно, это тривиально для записи запроса для нахождения его на основе пути node/nid, но есть ли Способ Drupal сделать это?

5
задан sprugman 13 May 2010 в 18:44
поделиться

1 ответ

Модуль узла меню предоставляет API для этого. Вы можете прочитать документацию (Doxygen) в коде. Я думаю, что нужная вам функциональность обеспечивается методом menu_node_get_links ($ nid, $ router = FALSE) :

/**
 * Get the relevant menu links for a node.
 * @param $nid
 *   The node id.
 * @param $router
 *   Boolean flag indicating whether to attach the menu router item to the $item object.
 *   If set to TRUE, the router will be set as $item->menu_router.
 * @return
 *   An array of complete menu_link objects or an empy array on failure.
 */

Возвращается ассоциативный массив mlid => объект меню . Вероятно, вам понадобится только первый, чтобы он выглядел примерно так:

$arr = menu_node_get_links(123);
list($mlid) = array_keys($arr);

В противном случае вы можете опробовать предложение в ветке на форумах Drupal :

Используйте узел / [nid] в качестве аргумента $ path для:

function _get_mlid($path) {
  $mlid = null;
  $tree =  menu_tree_all_data('primary-links');
  foreach($tree as $item) {
    if ($item['link']['link_path'] == $path) {
      $mlid = $item['link']['mlid'];
      break;
    }
  }
  return $mlid;
}
3
ответ дан 14 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: