Tengo un elemento de menú para una vista específica en un componente personalizado. Adjunto a este elemento del menú tengo otro Template Style
seleccionado, no la plantilla estándar. Acceder a la vista a través del menú funciona bien, ya que se adjunta a la URL Itemid
.
Ahora quiero vincular, usando JRoute, una vista con otra, sin embargo, JRoute no está generando la URL deseada.
echo JRoute::_('index.php?option=com_example&view=reporting');
/index.php?option=com_example&view=reporting
JRoute
no agregará el Itemid a la URL, haciendo que el estilo de plantilla seleccionado para el elemento del menú no funcione.
¿Hay alguna manera de "calcular" el Itemid (además de hacer una consulta en la tabla jos_menu
de la columna link
) y adjuntarlo a JRoute?
joomla-2.5
jroute
Valentin Despa
fuente
fuente
Respuestas:
Aquí hay una técnica que utilicé (no recuerdo dónde la encontré).
Esto ha funcionado de maravilla para mí.
fuente
la salida de JRoute dependerá de lo que alimente.
podría devolver algo más que
De hecho, si tiene una lista de blog de categoría de elemento de menú para catid = 5, este último puede proporcionarle la url de menú (no he probado esta url exacta). Pruebe con diferentes parámetros get para obtener resultados diferentes (a veces muy incorrectos, como dijo @Fedik)
fuente
La clave aquí es configurar el archivo router.php de sus componentes (que debe encontrarse en la carpeta raíz de su componente en la parte frontal) con una lógica que buscará y seleccionará el elemento de menú apropiado. Me encantaría ver que esto suceda automáticamente, pero que yo sepa, este no es el caso.
Probablemente sería mejor trabajar este bloque de código en algún tipo de función auxiliar que pueda usarse para encontrar automáticamente el elemento de menú que mejor se ajuste al contenido.
Aquí está el código que he usado en varios de mis componentes personalizados para obtener el elemento de menú que mejor se ajusta:
Todo esto es un desastre (¡y me encantaría las mejoras si alguien las tiene!), Pero hace el trabajo. Si el elemento del menú actual es la mejor coincidencia, siempre se mantendrá con eso.
De lo contrario, debería encontrar la mejor coincidencia según el nombre del componente -> nombre de la vista -> nombre del diseño -> valor de id. ¡Cuanto más a la derecha coincida, mejor lo consideraré!
fuente
Afaik JRoute tomará el activo
Itemid
(y también el activooption
) si no se proporciona ninguno. Si eso no funciona, significa que la llamada a su código viene sin Itemid para empezar. Si es así, lo más fácil sería agregar el Itemid a la llamada inicial.Si necesita buscar el elemento del menú, no haría una consulta directa, sino que usaría JMenu.
fuente
JRoute::_('index.php?option=com_example&view=reporting&Itemid=10')
JRouter puede devolver/current-path?view=reporting&Itemid=10
... ¿hay algunas cosas específicas?