una - joomla para principiantes
¿Cómo cambiar el diseño de la carga en la vista de Joomla? (3)
Por defecto parent::display($tpl);
carga components/com_my_component/views/my_component/tmpl/default.php
, pero en algunos casos necesito cargar otro archivo php que está en la misma carpeta cerca de default.php
(por ejemplo components/com_my_component/views/my_component/tmpl/lol.php
). Cómo hacer esto desde view.html.php
.
PD
Intentó cargar los métodos loadTemplate
y setLayout
sin suerte.
Resolvió el problema yo solo. Necesita usar el método setLayout y prestar atención a la sintaxis de entrada
$this->setLayout(''dafault:lol'');
parent::display($tpl);
De forma predeterminada, joomla busca la palabra clave de layout
en la URL para decidir qué diseño mostrar. Si esta variable está vacía o no está presente, se tmpl/default.php
diseño tmpl/default.php
.
Al editar su archivo view.html.php
, puede establecer el diseño predeterminado utilizando la API de JView, por ejemplo, $this->setLayout(''lol'')
hará que la URL example.com/yourview
equivalente a example.com/yourview?layout=lol
.
Sin embargo, este cambio solo dará como resultado que Joomla anule su comportamiento predeterminado para que se ignore la solicitud de layout
. Esto significa que la solicitud example.com/yourview?layout=lmao
también mostrará example.com/yourview
= example.com/yourview?layout=lol
Puede resolver esto fácilmente agregando una condición alrededor de la función setLayout
modo que solo si la palabra clave de layout
no está presente, entonces establecerá el diseño predeterminado en lol
, por ejemplo
<?php # ... function display($tpl = null) { # ... # Edit : Set the default layout to ''lol'' $layout = JRequest::getWord(''layout'', ''''); if (empty($layout)) $this->setLayout("lol"); // Display the view parent::display($tpl); } # ...
Sigo volviendo a esto y todavía no he encontrado una solución satisfactoria.
Lo que sí funciona, desde J1.5 hasta J3.4, para mí siempre ha sido establecer la variable $ tpl en view.html.php
Si $ tpl está vacío o "", tmpl / default.php se muestra de manera predeterminada.
Si cambia $ tpl a una cadena, por ejemplo, $ tpl = "apilador", entonces buscará y mostrará tmpl / default_stacker.php
He visto varias teorías diferentes sobre cómo cambiarlo antes en el MVC para que no necesite el pretexto predeterminado. por ejemplo, tmpl / stacker.php Ninguno me ha funcionado.