Supongamos que tiene las siguientes páginas en un árbol de menús:
- Proyectos
- Proyecto uno
- Proyecto dos
- Proyecto tres
Estoy buscando una manera de crear una vista que se incrustará en la página Proyecto (principal) que muestre una imagen, título y texto (resumen) de las páginas secundarias.
La relación entre el padre y los hijos se define en el árbol del menú.
Sé que puedo usar la referencia de nodo, pero eso significaría que cada vez que alguien crea una página, tendría que definir la relación de menú y luego la relación de referencia de nodo.
También sé que podría crear otro tipo de contenido, pero creo que esto es excesivo ya que todas las páginas de contenido tienen el mismo aspecto.
Respuestas:
Una solución es usar términos de taxonomía para definir las relaciones y luego usar el módulo del menú de taxonomía para traducir esas relaciones de términos en elementos de menú. Luego puede usar el módulo de Página personalizada y los módulos de Contexto para controlar la información y las regiones en todas las páginas si no desea usar paneles.
fuente
Puede hacer exactamente esto utilizando la API de nodo de menú y los módulos de vistas de nodo de menú .
Cree una vista con el tipo de contenido requerido y elija un filtro contextual de "Menú: ID de enlace de menú" (esto solo está disponible con los módulos anteriores instalados).
En "Cuando el valor del filtro no está disponible", seleccione "Proporcionar valor predeterminado" y elija "Código PHP".
El siguiente fragmento lo hará, luego solo expones un bloque de la vista y estás allí:
fuente
menu_load_object(arg(1))
lugar denode_load()
ahorrar algunos gastos. 2) Debe verificar para asegurarse de que el elemento del menú sea del menú que le interesa. En este momento, solo estás devolviendo el primero$mlid
. Dentro del foreach debes agregar un condicionalif ($data->menu_name == 'my-menu')
para arreglar esto. y 3) Es posible que desee agregar un segundo filtro paramenu: hidden
devolver solo elementos que no están ocultos. Use el mismo fragmento, pero devuelva el en$data->hidden;
lugar del$mlid
.El módulo de jerarquía de nodos permite este tipo de relación, además de proporcionar una integración de vistas.
fuente
Tal vez esto ha cambiado para D7 / Views 3, pero no necesita ningún PHP para lograr el comportamiento deseado:
voila No debería funcionar , pero lo hace.
Funciona bien solo con nodos, pero la ventaja de usar enlaces de menú sobre la jerarquía de nodos es que no está limitado a construir navegación alrededor de nodos. Incluso podría incluir enlaces externos en su vista.
fuente
Hay un módulo relativamente nuevo del menú Vistas del nodo Filtros secundarios que parece hacer exactamente lo que desea:
fuente
¿Ha considerado usar Node Reference para este propósito?
Por lo tanto, puede lograr un resultado similar al que probablemente esté buscando.
fuente
La respuesta de Emile es correcta, pero tuve que pegar el código PHP mencionado en un filtro contextual del tipo " Menú: ID del enlace del menú principal ".
fuente
Si usa la traducción de entidades y el nodo está conectado a diferentes menús, aquí hay una adaptación del código que se filtra en el idioma actual. Debe copiar esto como código PHP para el filtro contextual (identificación del enlace del menú principal) en su vista como se explica en las otras respuestas
fuente
De la cola de problemas de Vistas de nodo de menú tenemos esta buena solución:
ingrese el siguiente código
fuente