Tengo un nodo, quiero su menú. Por lo que puedo decir, node_load no lo incluye. Obviamente, es trivial escribir una consulta para encontrarlo en función de la ruta node/nid
, pero ¿hay una forma Drupal de hacerlo?¿Hay alguna forma (distinta de sql) de obtener el mlid para un nid determinado en drupal?
Respuesta
El Menu Node module expone una API para hacer esto. Puede leer la documentación (Doxygen) en el código. Creo que la funcionalidad que necesita es proporcionada por el método de 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.
*/
se devuelve una matriz asociativa de mlid => menu object
. Es probable que sólo necesita el primero por lo que podría parecerse a algo como esto:
$arr = menu_node_get_links(123);
list($mlid) = array_keys($arr);
De lo contrario, se puede probar la sugerencia en un thread in the Drupal Forums:
Uso node/[nid]
como el argumento de la ruta $ para:
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;
}
si el árbol del menú tiene múltiples niveles sql parece una mejor opción. una muestra para Drupal 7 se da abajo donde ruta es algo así como 'nodo/x'
function _get_mlid($path, $menu_name) {
$mlid = db_select('menu_links' , 'ml')
->condition('ml.link_path' , $path)
->condition('ml.menu_name',$menu_name)
->fields('ml' , array('mlid'))
->execute()
->fetchField();
return $mlid;
}
Brillante, gracias. –
- 1. Nodo de impresión Drupal de nid
- 2. ¿Hay alguna forma de obtener el nombre del usuario en Drupal?
- 3. ¿Hay alguna forma de recuperar un conjunto o conjunto de claves para un NSManagedObject determinado?
- 4. ¿Hay alguna forma de comprobar si el texto Unicode está en un idioma determinado?
- 5. ¿Hay alguna forma en Grails de obtener todo el registro?
- 6. ¿Hay alguna forma de filtrar un rastreo de SQL Profiler?
- 7. ¿Hay alguna forma de multirreproducir un SqlDataReader?
- 8. En groovy, ¿hay alguna forma de comprobar si un objeto tiene un método determinado?
- 9. ¿Hay alguna forma de obtener la dirección de un registro?
- 10. Drupal node_save ya no devuelve $ nid, entonces, ¿cómo lo obtengo?
- 11. SQL de PostgreSQL distinta de()
- 12. ¿Hay alguna forma de C para obtener el número de artículo de enum en java?
- 13. ¿Hay alguna forma de serializar el objeto linq para Memcached?
- 14. WPF: ¿Hay alguna forma de obtener valores originales en el método ConvertBack de MultiValueConverter?
- 15. ¿Hay alguna forma de obtener XML de elemento por atributo?
- 16. ¿Hay alguna forma de obtener el recuento actual de ref de un objeto en Python?
- 17. ¿Hay alguna forma de obtener un toque de tres dedos en el simulador de iPhone
- 18. ¿Hay alguna forma de 'resaltar' el código?
- 19. ¿Hay alguna forma de pasar el iPhone?
- 20. ¿Hay alguna forma incorporada para obtener la longitud de un iterable en python?
- 21. SQL SELECT distinta columna
- 22. ¿Hay alguna forma de obtener el cuadro delimitador (en píxeles) de un elemento DOM?
- 23. ¿hay alguna forma de obtener componentes individuales de heroku toolbelt?
- 24. ¿Hay alguna forma no-eval para crear una función con un nombre determinado en tiempo de ejecución?
- 25. ¿Hay alguna forma de obtener el nombre de la unidad actual de un archivo de inclusión?
- 26. ¿Hay alguna forma de obtener una dirección de referencia?
- 27. ¿Hay alguna forma de obtener el número de línea donde se lanzó una excepción?
- 28. En R6RS Scheme, ¿hay alguna forma de obtener el entorno actual para usar con eval?
- 29. ¿Hay alguna forma de pasar el contexto para vincular jQuery?
- 30. ¿hay alguna forma en java para crear un esquema xsd?
parece que lo hará, pero creo que es más fácil sql ... Gracias, sin embargo. – sprugman
No hay problema. De hecho SQL podría ser más fácil. :) – sirhc