Menú MODX multinivel usando Bootstrap. PdoMenu: creación de menús en MODX Menús Modx en páginas específicas
Hoy haremos un menú para nuestro blog usando el fragmento de Wayfinder (documentación del fragmento de Wayfinder). La navegación superior y principal de nuestro blog consta de dos partes:
- Móvil
- Plano
Por lo tanto, haremos la navegación por duplicado). Entonces, dividiremos nuestra navegación principal en partes. De acuerdo con la documentación, debería obtener 4 fragmentos (no olvide eliminar los espacios):
&outerTpl=` wayOuterTpl` - contenedor de fragmentos de la lista principal
&innerTpl=` wayInnerTpl` - contenedor de fragmentos para la lista desplegable
&rowTpl=` wayRowTpl` - fragmento que muestra los elementos de la lista
&parentRowTpl=`wayHasChildTpl` - Fragmento que muestra los elementos de la lista principal
Y aquí está la llamada al fragmento en el fragmento del encabezado:
[ ]
&startId=`0`: establece el inicio del paso del fragmento, en nuestro caso desde la raíz del sitio.
&level=`2` - el número de niveles en nuestro menú.
El siguiente paso es desplegar nuestro menú móvil. El principio es similar al que mencioné anteriormente, aquí también necesitamos 4 trozos.
&outerTpl=`wayOuterMobileTpl` - fragmento contenedor de la lista principal.
&innerTpl=`wayInnerMobileTpl` - fragmento contenedor de lista interna.
[ [+wf.envoltorio] ]
&rowTpl=`wayRowMobileTpl` - Fragmento que muestra los elementos de la lista.
[ [+wf.envoltorio] ]
&innerRowTpl=`wayInnerRowMobileTpl` - Fragmento que muestra los elementos de la lista interna.
[ [+wf.envoltorio] ]
La llamada a Wayfinder se verá así:
[ ]
Todo es igual, solo han cambiado los trozos. Ahora que tenemos navegación móvil, puedes probarla con la herramienta Responsive Web Design Tester para Opera y Chrome.
Aquí está el código completo para el fragmento de encabezado:
Grandes cosas... Paquetes pequeños
¡Nuestra navegación está lista! En el video, también analizamos la creación de un menú de categorías en un blog. Como el principio es el mismo, no lo consideré aquí, mira el video) ¡Nos vemos en las próximas lecciones!
Comencemos la lección 8 de MODx Revolution para principiantes. Les recuerdo que estamos haciendo un sitio para aprender MODx Revolution. En la última lección, analizamos el concepto de fragmentos, que son piezas de código PHP que nos permiten agregar funcionalidad a nuestro sitio web. En este tutorial, veremos un fragmento especial: Wayfinder, y lo usaremos para crear un menú dinámico para nuestro sitio.
¿Qué es Wayfinder?
Orientador es un fragmento que muestra una lista desordenada de enlaces a recursos en el árbol de su sitio, el tipo de salida de la lista depende de la llamada del fragmento y los parámetros de esta llamada. En términos generales, esto significa que cuando realiza una llamada a Wayfinder en su plantilla, comienza a buscar recursos que coincidan con los parámetros proporcionados en ella y devuelve una lista de enlaces a estos recursos en el formato de una lista sin clasificar o en el formato tu específicas.
¿Por qué usar Wayfinder?
Usualmente uso Wayfinder para crear una navegación dinámica del sitio, es decir, un menú. Dado que la mayoría de las plantillas HTML utilizan listas desordenadas para crear menús, Wayfinder es la herramienta perfecta para ello. Al crear un sitio, puede insertar minuciosamente sus URL en el menú de navegación, tal como lo hizo antes en un sitio HTML estático. Al mismo tiempo, cada vez que necesite eliminar o crear una página, debe realizar los cambios apropiados en su menú, cambiar las URL. El uso del fragmento de Wayfinder para generar dinámicamente sus menús evita este dolor de cabeza, ya que detecta automáticamente los cambios y cambia su menú en consecuencia.
Wayfinder es bastante flexible y le permite definir qué recursos incluir o excluir del menú, cuál es la plantilla del menú, qué tan profundo es el menú de su sitio. Sus límites están determinados por su código HTML/CSS.
¿Cómo usar Wayfinder?
Como mencionamos en la lección anterior, la sintaxis para llamar fragmentos se ve así: [[!somesnippet]]
Esta es solo una llamada básica y no es suficiente, aparte de eso, tenemos que definir algunas propiedades de esta llamada. En el caso de Wayfinder, lo mínimo que debe definirse en las propiedades es en qué parte del árbol de recursos Wayfinder debe comenzar a construir la lista de recursos. Por lo tanto, en la llamada del fragmento de Wayfinder, se debe especificar al menos un parámetro: la ID inicial. La llamada básica al fragmento de Wayfinder en este caso se vería así:
Esta llamada le dice a Wayfinder que comience en la raíz del árbol ( IDENTIFICACIÓN 0 significa la raíz del sitio) y muestra todos los recursos que están publicados y no tienen una marca de verificación en la casilla de verificación Hide from Menus (Ocultar del Menú).
Si echamos un vistazo a la plantilla que estamos usando, podemos ver un menú superior con varios elementos y desplegables.
Echemos un vistazo a la plantilla y el código que representa este menú:
Como puede ver, esta es una lista desordenada anidada. Reemplacemos este código con una llamada básica de Wayfinder y veamos qué sucede. Elimine el código anterior y péguelo en su lugar:
[[!¿Camino? &startId=`0` ]]
Si está utilizando la misma plantilla que yo, entonces su código se verá así:
Guarde la plantilla y eche un vistazo a la página de inicio, debería verse así:
¡Fantástico! Puede ver que nuestro menú anterior, que tenía varios elementos, ahora ha sido reemplazado por un menú simple con un solo elemento: Inicio. Esto nos dice que Wayfinder está funcionando como se esperaba y está tomando una página de nuestro sitio y mostrando su título como un elemento del menú.
Vamos a crear un par de recursos más. Voy a agregar una página Acerca de con 3 páginas secundarias (MODx, Tutoriales, Contacto y páginas de preguntas frecuentes). Puede crear cualquier recurso o página para su sitio. El propósito de este ejercicio es crear algunos recursos para que Wayfinder tenga algo que mostrar.
Terminé de crear páginas y el árbol de recursos de mi sitio se ve así:
Ahora que tenemos algunas páginas, veamos cómo llamar a Wayfinder generará un menú para nuestro sitio:
La buena noticia es que todas nuestras páginas han aparecido en el menú y al hacer clic en cada elemento del menú llegamos a la página correspondiente. (Para probar este elemento, agregue texto a cada página, por ejemplo, en la página Acerca de puede agregar "Esta es una página Acerca de" y este mensaje aparecerá cuando se abra la página. Recuerde que necesitamos definir una plantilla para cada página, pero por el momento no me voy a preocupar por eso).
La mala noticia es que el formato del menú no funciona, pero podemos arreglarlo. Haga clic derecho en la página web y mire el código fuente (o use firebug para eso), verá eso ahora Orientador genera HTML como este:
- Hogar
- Acerca de
- CMS MODX
- El teclado de codificación
- El blog
- Los servicios
- Contáctenos
- Tutoriales
- Preguntas más frecuentes
Como puede ver, se parece mucho a nuestro código estático inicial con algunas excepciones. Primero, Wayfinder generó
- elemento sin clase menú sf que se utilizó en nuestro código estático. La plantilla necesita esta clase para trabajar con CSS. También se ve que
- los elementos tienen parámetro durar, que hace referencia a los elementos de texto del enlace en el código estático original y no está presente en el código generado por Wayfinder. Además, nuestro código HTML estático tiene una clase un elemento de página actual, que no está presente en nuestro código de fragmento de Wayfinder. Todas estas piezas faltantes hacen que nuestro menú se vea antiestético.
Cómo personalizar el estilo de salida del fragmento de wayfinder
Mirando cómo Wayfinder genera el código, tenemos una pregunta completamente natural: "¿Cómo agregamos las piezas de código que faltan para que queramos mostrar el menú en la forma que necesitamos?" La respuesta es muy fácil, usamos fragmentos de plantilla para formatear la salida del fragmento de Wayfinder.
Wayfinder es una herramienta flexible y, con la ayuda de parámetros, puede definir la apariencia de la salida. Algunas opciones generales le permiten especificar en qué nivel comenzar a construir el menú, qué elementos excluir del menú, etc. Otras opciones son opciones de plantilla que le permiten configurar el código html de plantilla para su menú, etc. Las descripciones de este último se pueden encontrar en la documentación oficial: http://rtfm.modx.com/display/ADDON/Wayfinder.
Tomar nota: algunas opciones de Wayfinder tienen un valor predeterminado.
Esto explica, por ejemplo, por qué en el menú generado por Wayfinder, el elemento de la página de inicio tiene el nombre de clase " primer activo". Esta es la clase predeterminada, pero podemos anularla definiendo nuestras propias clases en fragmentos de plantilla.
Usaremos algunas opciones de Wayfinder en este tutorial, pero te animo a que las aprendas todas y practiques usándolas tanto como sea posible para tener una idea de todo su potencial. Dado que los parámetros predeterminados de Wayfinder están claramente documentados en el sitio web oficial, sería una tontería hablar de ellos aquí. Los utilizaremos cada vez más a medida que trabajemos con los distintos menús.
Para comenzar con la plantilla de menú, creemos algunas miniplantillas y almacenémoslas en fragmentos. Verás que en estos trozos estamos usando el código HTML pero reemplazando los elementos dinámicos marcadores de posición(o marcadores de posición como también se les llama) cuya sintaxis se ve así: [[+marcador de posición]]. Los marcadores de posición que usamos son específicos del fragmento de Wayfinder y su definición es obvia por el nombre, pero siempre puede consultar la documentación de MODx para obtener ayuda más completa.
Estos son los fragmentos que usaré para crear nuestra plantilla:
7in1menuExterior- contendrá el código HTML para nuestro contenedor ul externo.
Puede ver que he agregado una clase para el ul externo. Una forma alternativa de hacer esto es usar el marcador de posición wf.classes y luego agregar el nombre de la clase a la llamada de wayfinder actual usando el parámetro claseexterna. Pero para simplificar, usemos la primera forma, pero ambas funcionarán bien...
Fila de menú 7 en 1– contendrá el código HTML de los elementos del menú de primer nivel
- [[+wf.linktext]][[+wf.envoltorio]]
- [[+wf.linktext]][[+wf.envoltorio]]
- . No reescribiremos el fragmento, pero cambiar la clase en estilos no es un problema.
- Menú en forma de lista, tabla, imágenes, con iconos, etc.
- menús estáticos
- Menús con varios efectos (desplegables, desplegables, etc.)
- Mapa del sitio
- [[+wf.linktext]][[+wf.envoltorio]]
- wf.classes: muestra las clases tomadas del conjunto de opciones de Wayfinder (incluido el atributo class="")
- wf.classnames - muestra los nombres de las clases (sin class="")
- wf.wrapper - salida de contenido interno (fila).
- wf.classes - salida de clase (incluido el atributo class="")
- wf.classnames - salida de las clases correspondientes (sin class="")
- wf.link - el valor del atributo href="" para el enlace del menú
- wf.title: el nombre del texto del título para el enlace del campo especificado en el parámetro &titleOfLinks
- wf.linktext - texto para el enlace activo especificado en el campo pasado en el parámetro &textOfLinks
- wf.wrapper - salida de contenido interno como submenú
- wf.id - ID de atributo único de salida. Debe especificar el parámetro &rowIdPrefix para que este marcador de posición obtenga un valor. El valor es prefijo + docId.
- wf.attributes: muestra una referencia de atributo para el elemento actual
- wf.docid - la identificación del documento del elemento actual
- wf.description - descripción del elemento actual
- wf.level - nivel de anidamiento actual
- [[+wf.linktext]][[+wf.envoltorio]]
- [[+wf.linktext]] - [[+wf.descripción]] [[+wf.envoltorio]]
[[+wf.título]]
[[+wf.título]]
- [[+título del menú]][[+envoltorio]]
- [[+menutitle]] ([[+niños]]) [[+envoltorio]]` &countChildren=`1` ]]
La idea principal aquí es que agregué la etiqueta al texto del enlace del menú como en el código HTML estático original. También incluí el marcador de posición wf.classes y esto me permitirá definir una clase para la página actual que anulará la clase "activa" predeterminada que tenemos.
7in1menuInterior– contendrá el código HTML de los contenedores ul internos
- [[+wf.envoltorio]]
7in1menuInnerRow– contendrá código HTML para líneas de elementos de niveles internos
Eso es todo, ahora nuestros fragmentos de plantilla están en su lugar, como puede ver (por orden, los puse en una categoría separada):
Ahora podemos modificar la llamada de Wayfinder para que podamos usar estas mini plantillas para la salida de Wayfinder. Si echas un vistazo a la lista de opciones de plantillas (sería útil tener http://rtfm.modx.com/display/ADDON/Wayfinder abierto ante tus ojos o imprimir y mantener cerca de la pantalla), verás que Llamé a mis fragmentos de forma similar a los parámetros de llamada de fragmentos correspondientes. Hice esto por conveniencia, me ayuda a realizar un seguimiento de qué es qué cuando empiezo a construir mi llamada. Agreguemos parámetros y llamemos a nuestros fragmentos. La llamada a Wayfinder ahora se verá así:
[[!¿Camino? &startId=`0` &outerTpl=`7in1menuOuter` &rowTpl=`7in1menuRow` &innerTpl=`7in1menuInner` &innerRowTpl=`7in1InnerRow` &hereClass=`current_page_item` &firstClass=`` &lastClass =`` ]]
El valor del parámetro está encerrado entre apóstrofes (`), no entre comillas simples (').
Bien, echemos un vistazo a este desafío. Puede ver que estamos usando opciones de plantillas para llamar a nuestros fragmentos para que Wayfinder genere el HTML que queremos con las clases correctas. Definí un invocable hereClass parámetro y le dio un valor elemento_pagina_actual para que coincida con la plantilla HTML estática. Puedes ver que dejé los parámetros. primera clase Y última clase vacío. La razón de esto es que mi plantilla HTML no establece una clase para el primer y el último elemento del menú, por lo que, para evitar la superposición, sobrescribí las líneas en blanco en ellas.
Se puede ver que nuestro menú se ve exactamente como queríamos. Los estilos correctos se utilizan en el menú desplegable. Si observa el código fuente, verá que el generado Orientador El código HTML de om ha cambiado más allá del reconocimiento:
Este código coincide con el código estático original de nuestra plantilla, pero se generó llamando Orientador.
Hay muchas otras opciones que puede usar con Orientador para construir sus menús. En los siguientes tutoriales, veremos menús complejos y cómo integrarlos en Wayfinder. En resumen: ahora nuestro sitio ha tomado forma y tenemos un menú funcional y dinámico.
Para crear un menú dinámico, usaremos un fragmento ya hecho Orientador. Un fragmento, como seguramente recordará de los tutoriales anteriores, es un fragmento de código Php que podemos incluir en nuestra plantilla. La diferencia con los fragmentos está solo en el código y el método de llamada. Si llamamos a un fragmento usando llaves dobles, entonces los fragmentos se llaman usando tales [!Snippet_name!]- llamada no almacenada en caché, o tal [[Nombre del fragmento]]- llamada en caché. Cada código de fragmento debe comenzar con pero final ?> . Además, a cada fragmento se le pueden pasar valores de parámetros especiales que procesará. MODx ya tiene varios fragmentos listos para usar que usaremos en el futuro.
retazo Orientador sirve para organizar listas de enlaces para MODx. El menú de nuestro sitio es una lista de dichos enlaces. Primero busquemos un fragmento de código responsable de mostrar nuestro menú. El menú está en un trozo. ENCABEZAMIENTO, aquí lo tienes:
Recortemos este código y escribamos en su lugar:
((MENÚ))
Y pegue el código en un nuevo trozo MENÚ, en la descripción del trozo escribimos menú del sitio. Ahora examinemos este código.
El menú de nuestro sitio web es una lista simple y desordenada, contenida en un contenedor con id="templatemo_menu". Recortemos esta lista del contenedor e insertemos nuestro fragmento de llamada en su lugar:
&startId=`0` es un parámetro con valor 0, que le dice al snippet el ID de la carpeta en la que se encuentran los documentos procesados. Todos nuestros documentos que mostraremos en el menú están en la carpeta raíz, la ID de la carpeta raíz es cero. Veamos qué tenemos.
Nuestro menú está funcionando, solo el elemento activo ya no está resaltado en blanco:
Para entender por qué sucedió esto, debemos mirar el código fuente de la página. En Mozilla Firefox se hace así: Ver >> Código fuente de la página o simplemente presionando el atajo de teclado Control + U. Encontramos el código de nuestro menú:
Preste atención al hecho de que en el código fuente el elemento activo tenía clase = "actual", y nuestro fragmento se asigna automáticamente al elemento activo clase = "activo". También notamos el momento en que en el código fuente se aplicó la clase a la etiqueta
y ahora a la etiqueta
Encontramos en la carpeta C:/xampp/htdocs/site/www/assets/templates/ el archivo plantillamo_style.css y ábralo con Notepad++. Estamos buscando una descripción de la clase actual en este archivo, se encuentra en 198 línea:
#templatemo_menu li .actual(
relleno-izquierda: 40px
color: #ffffff;
}
reemplazar la clase actual en activo, recordando reasignarlo a la etiqueta :
#templatemo_menu li.active a (
relleno-izquierda: 40px
color: #ffffff;
}
Guardamos el archivo. Vamos a ver que pasó.
Nuestro menú funcionó exactamente como lo concibieron los diseñadores. Ahora podemos navegar por las páginas de nuestro sitio utilizando nuestro menú principal. Al agregar otros documentos a la carpeta raíz, se mostrarán automáticamente en nuestro menú. Para evitar que se muestren documentos no deseados en el menú, desmárquelos. Mostrar en el menú. Puede forzar la exclusión de un elemento no deseado utilizando el parámetro &excludeDocs=`lista de documentos de identificación para excluir, separados por comas`.
Para que el menú no muestre los documentos secundarios que crearemos en las próximas lecciones, agreguemos un parámetro a la llamada del fragmento nivel, que determina el número de niveles en el menú, todos los niveles se mostrarán por defecto, lo limitaremos a un solo nivel:
Orientador sirve para organizar listas de enlaces para MODX. Gracias al soporte de plantillas, le permite mostrar listas en cualquier forma necesaria:
&rowTpl=`filaTpl`
&outerTpl=`outerTpl`
&hereClass=`activo`
&rowClass=`eNav_li`]]
Opciones de fragmentos:
&startId- id de la página principal, si especifica 0, será desde la raíz del sitio. El valor predeterminado es el id de la página activa.
&mostrarInicio - mostrar documento con startId en el título del menú, falso por defecto
&nivel- profundidad de anidamiento, por defecto 0 - todos los niveles
&límite- limitar el número de páginas en la salida (predeterminado 0 - sin límite)
&ignorarOculto- ignore la casilla de verificación de la página "Mostrar en el menú", es decir si especifica 1, mostrará todas las páginas. El valor predeterminado es 0. Solo se muestran aquellas páginas que tienen marcada la casilla de verificación "Mostrar en el menú".
&ph - el nombre del sustituto que reemplaza la salida inmediata. El valor predeterminado es 0.
&depurar- modo de depuración (predeterminado 0)
&ocultar submenús - expandir solo el submenú activo (predeterminado 0)
&eliminarNuevasLíneas- elimina el carácter de salto de línea en la salida (predeterminado 0)
&textoDeEnlaces- para el nombre del enlace del menú. Posibles opciones:menutitle, id, pagetitle, descripción, padre, alias, longtitle, introtext . Por defecto título del menú
&títuloDeEnlaces- para el título del enlace del menú Opciones:menutitle, id, pagetitle, descripción, padre, alias, longtitle, introtext. Por defecto Título de la página
&rowIdPrefix- establece id (rowIdPrefix + docId) para cada elemento. Predeterminado 0
&includeDocs- id de los documentos, separados por comas, que se incluirán en el menú (no especificado por defecto)
&excluirDocs - id de los documentos, separados por comas, que serán excluidos del menú (0 por defecto)
&contextos- contexto para la generación de menús. El valor predeterminado es actual.
&startIdContext - Identificador de contexto del que se toman los documentos para formar el resultado.
&config - Archivo PHP externo para almacenar la configuración de Wayfinder (ejemplo: core/components/wayfinder/configs).
&esquema - El formato para generar la URL. Valores posibles (basados en la llamada a la API makeURL):
1: (predeterminado) URL relativa a site_url;
0: ver http;
1: ver https;
completa: URL absoluta que comienza con site_url;
abs: URL absoluta que comienza con base_url;
http: URL absoluta, aplicada en el esquema http;
https: URL absoluta, aplicada en el esquema https.
&Ordenar por - El campo por ordenar. (por defectoíndice del menú)
Opciones:
identificación, título del menú, título de la página, introtexto, índice del menú, publicado, ocultar menú, padre, carpeta, descripción, alias, título largo, tipo, plantilla&Orden de clasificación- Orden de clasificación."ASC" o "DESC". ASC predeterminado
&dónde - Opciones de filtro de estilo JSON (Corresponde a donde en MySQL). Por ejemplo, cuando desee ocultar un blog o una noticia del complemento Artículos: &where=`[("class_key:!=": "Artículo")]`
Ejemplos:
salida solo carpetas: & where = `isfolder = 1
&hereId - Defina el ID actual para usar en el fragmento. Utilice el valor [[*id]] si la plantilla se especifica mediante el parámetro hereTpl y activeRowParentTpl no se aplica correctamente en el elemento de menú. Por defecto, el id actual.
Debe especificarlo solo si el propio script lo determina incorrectamente, por ejemplo, al mostrar un menú de una parte de otro fragmento.
&aquíTpl - La plantilla hereTpl se utiliza cuando el elemento actual se muestra en el menú.
Posibles marcadores de posición:
[[+wf.classes]] - lugar para especificar la clase CSS a usar (incluye class=" ")
[[+wf.classnames]] - contiene solo el nombre de la clase CSS (no incluye class=" ")
[[+wf.link]] - dirección (href) para el enlace
[[+wf.title]] - texto para el título del enlace
[[+wf.linktext]] - texto del título del enlace
[[+wf.wrapper]] - lugar para mostrar el submenú
[[+wf.id]] - muestra un identificador único (id)
[[+wf.attributes]] - mostrar atributos de enlace adicionales
[[+wf.docid]] - ID de documento para el elemento actual
[[+wf.subitemcount]] - el número de elementos en la carpeta
[[+wf.description]] - muestra los valores del campo de descripción
[[+wf.introtext]] - muestra los valores del campo de introtexto
Ejemplo de plantilla:
Opciones de plantilla
Estas opciones especifican fragmentos que contienen patrones que generarán la salida de Wayfinder.
En la versión actual de Wayfinder para MODX Revolution, puede acceder a sus televisores personalizados utilizando marcadores de posición de prefijo wf. , por ejemplo [[+mi_TV]]
Al momento de escribir, solo se devolverán los valores de TV originales; no se formatearán. Por ejemplo, si su televisor es una imagen, un uso típico de dicho televisor dentro de su plantilla devolverá la etiqueta de imagen completa, pero dentro de una plantilla de Wayfinder, solo se devolverá la ruta a la imagen.
Si desea manejar la televisión, puede hacerlo llamando a un fragmento dentro de la plantilla de fila de Wayfinder (&rowTpl . Por ejemplo, su imagen de TV se llama icono y generalmente para la salida en la plantilla, se usa algo como este código:
... ...
Pero como esto no le permitirá manejar la televisión, debe reemplazarlo con:
... ...
Y ahora dentro del fragmento de processTV colocamos el siguiente código PHP:
getObject("modResource", $myId); return $doc->getTVValue($miTV);
Como resultado, se devuelve una imagen de TV completamente procesada.
&exteriorTpl
El nombre del fragmento que contiene la plantilla del contenedor externo.
Marcadores de posición disponibles:
El parámetro &innerTpl contiene el mismo conjunto de marcadores de posición que &outerTpl .
&rowTpl
El nombre del fragmento que contiene la plantilla para los elementos de la fila del menú.
Marcadores de posición disponibles:
Ejemplo de uso:
Otra opción:
Ejemplos
Primer nivel
[[!¿Camino? &startId=`0` &nivel=`1`
&rowTpl=`filaTpl`
&outerTpl=`outerTpl`
&hereClass=`activo`
&rowClass=`eNav_li`]]
código de fragmento de Tpl externo
[[+wf.envoltorio]]
código de fragmento de rowTpl
[[+wf.envoltorio]]
Segundo nivel (en este ejemplo, los elementos del menú y del submenú estaban visualmente en el mismo nivel
[[!¿Camino? &startId=`0` &nivel=`2`
&rowTpl=`rowTplFooterMenu`
&outerTpl=`outerTplFooterMenu`
&innerTpl=`innerTplFooterMenu`
&innerRowTpl=`innerRowTplFooterMenu`
&hereClass=`activo`]]
Código de fragmento de OuterTplFooterMenu
[[+wf.envoltorio]]
código de fragmento de rowTplFooterMenu
[[+wf.envoltorio]]
código de fragmento de menú interiorTplFooterMenu
[[+wf.envoltorio]]
código de fragmento innerRowTplFooterMenu
Fragmento de generación de menú. Puede reemplazar a Wayfinder y permite una mayor flexibilidad en la especificación de parámetros.
Por ejemplo, puede crear un menú a partir de varios padres a la vez, mostrándolos juntos y como ramas separadas.
Da un aumento significativo en la velocidad solo en el primer inicio, luego Wayfinder no es particularmente inferior, gracias al almacenamiento en caché competente.
Opciones
Por defecto, pdoMenu acepta opciones comunes de pdoTools y algunas propias:
Nombre | Por defecto | Descripción |
---|---|---|
&padres | recurso actual | Lista de padres para resultados de búsqueda, separados por comas. si se pone &padres=`0`- la muestra no es limitada. Si la identificación del padre comienza con un guión, tanto él como sus hijos se excluyen de la selección. |
&nivel | 0 (ilimitado) | Nivel de menú generado. |
&recursos | Lista de recursos a mostrar en los resultados, separados por comas. Si la identificación del recurso comienza con un guión, ese recurso se excluye de la selección. | |
&plantillas | Lista de plantillas para filtrar resultados, separadas por comas. Si la identificación de la plantilla comienza con un guión, los recursos con él se excluyen de la selección. | |
&dónde | Una matriz de opciones de selección adicionales codificadas en JSON. | |
&mostrarInicio | 0 | Habilite la visualización de los nodos del menú inicial. Útil cuando se especifica más de un "padre". |
&contexto | Restricción de la selección por contexto de recurso. | |
&mostrarOculto | 0 | Mostrar recursos ocultos en el menú. |
&mostrarNo publicado | 0 | Mostrar recursos no publicados. |
&vista previaInédito | 0 | Habilite la visualización de recursos no publicados si el usuario tiene permiso para hacerlo. |
&ocultar submenús | 0 | Ocultar ramas de menú inactivas. |
&seleccionar | Lista de campos a seleccionar, separados por comas. Puede especificar una cadena JSON con una matriz, por ejemplo &select=`("modResource":"id,título de página,contenido")` | |
&Ordenar por | menuindex | Cualquier campo del recurso a ordenar, incluido el parámetro TV si se especifica en el parámetro &incluirtelevisores, Por ejemplo &sortby=`("nombreTV":"ASC","título de la página":"DESC")`. Puede especificar una cadena JSON con una matriz de varios campos. Para la clasificación aleatoria, especifique &sortby=`ALEATORIO()` |
&sortdir | ASC | Sentido de clasificación: descendente o ascendente. Si deja vacíos los parámetros &sortby y &sortdir, la ordenación se realizará en el orden de los recursos en &recursos. |
&límite | 0 | Limitar el número de resultados de la muestra. |
&compensar | 0 | Omitir resultados desde el inicio. Debe usarse junto con un especificado explícitamente &límite |
&verificarPermisos | Especifique qué permisos verificar para el usuario al mostrar recursos, por ejemplo &checkPermissions=`lista`. | |
&contarNiños | 0 | Contar con precisión el número de recursos secundarios de cada categoría y mostrarlos en el marcador de posición [[+niños]]. Realiza consultas adicionales a la base de datos, por lo que está deshabilitada por defecto. |
&toMarcador de posición | Si no está vacío, el fragmento almacenará todos los datos en un marcador de posición con ese nombre en lugar de mostrarse. | |
&plPrefijo | wf. | Prefijo para marcadores de posición expuestos. |
&Mostrar registro | 0 | Muestra información adicional sobre el trabajo del fragmento. Solo para aquellos autorizados en el contexto "mgr". |
&modo rápido | 0 | Modo de procesamiento rápido de fragmentos. Se eliminarán todas las etiquetas sin procesar (condiciones, fragmentos, etc.). |
&cache | 0 | Almacenamiento en caché de los resultados del fragmento. |
&Tiempo de Cache | 3600 | Tiempo de caducidad de la memoria caché, en segundos. |
&esquema | -1 | El esquema de generación de URL se pasa a modX::makeUrl(), por lo que se necesitan las opciones. El tipo de uri especial sustituye el valor de uri del recurso, sin ejecutar una función. |
&useWeblinkUrl | 1 | Genera un enlace dada la clase del recurso. |
&rowIdPrefix | Prefijo id="" para establecer el identificador en el fragmento. | |
&hereId | id del recurso actual para el menú generado. Debe especificarlo solo si el propio script lo determina incorrectamente, por ejemplo, al mostrar un menú de una parte de otro fragmento. | |
&incluirtelevisores | Lista de parámetros de TV a seleccionar, separados por comas. Por ejemplo &includeTVs=`acción,tiempo` dará marcadores de posición [[+action]] y [[+time]] . | |
&prepararTV | Lista de opciones de TV, con archivos de fuentes de medios para los que desea generar rutas completas. Si está configurado &prepareTVs=`1`, todos los televisores especificados en el &incluirtelevisores. | |
&procesoTVs | Lista de parámetros de TV que se procesarán y mostrarán según su configuración en el administrador del sistema. Si está configurado &processTVs=`1`, todos los televisores especificados en &incluirtelevisores. Ralentiza el trabajo. | |
&tvPrefijo | Prefijo para la configuración de TV. |
Opciones de plantilla
Estas opciones establecen fragmentos que contienen plantillas para generar menús.
Nombre | Descripción |
---|---|
&tplExterior | Diseño de fragmentos de todo el bloque de menú. Predeterminado: @INLINE
|
&tpl | Trozo de diseño de elemento de menú. Si no se especifica, el contenido de los campos de recursos se imprimirá en la pantalla. Predeterminado: @INLINE |
&tplAquí | Trozo de decoración del elemento de menú actual. |
&tplInicio | Trozo del diseño del elemento raíz, siempre que esté habilitado &mostrarInicio. Predeterminado: @INLINE [[+título del menú]][[+envoltura]] |
&tplfilaprincipal | Fragmento de decoración de un padre con hijos que no coincide con las condiciones de &tplCategoryFolder . Por ejemplo: @EN LÍNEA |
&tplParentRowHere | Fragmento del estilo del documento actual si contiene elementos secundarios. |
&tplParentRowActive | Trozo de decoración de padres con hijos en la rama del menú activo. |
&tplCategoríaCarpeta | Trozo de diseño de categoría especial. Una categoría es un padre con hijos que tiene una plantilla vacía o rel="category" en el campo link_attributes. |
&tplInterior | Trozo para el diseño de todo el bloque de subelementos del menú. Si está vacío, se usará &tplExterior. Por ejemplo: @EN LÍNEA |
&tplfilainterna | Fragmento para diseñar un subelemento de menú. Por ejemplo: @EN LÍNEA |
&tplInteriorAquí | Fragmento para el subelemento de menú activo. |
Opciones de clase CSS
Estos parámetros establecen el valor de los marcadores de posición [[+classnames]] y [[+classes]] para los distintos elementos del menú. El marcador de posición [[+classnames]] muestra solo el nombre de la clase sin el atributo clase="", a diferencia del marcador de posición [[+classes]].
Ejemplos
La salida habitual del menú desde la raíz del sitio a un nivel:
[]
Salida con padres específicos excluidos y permisos de usuario verificados:
[]
Mostrando el menú de dos padres a la vez, mostrando los puntos raíz:
[]
Mostrando dos niveles de recursos, contando el número de anidados:
[]` &tplParentRow=`@INLINE