web-dev-qa-db-fra.com

Charger la vue dans le dossier des vues. $ this-> loadTemplate depuis un nouveau dossier

Pour charger des parties de la vue actuellement ouverte, j'utilise la fonction de chargement de partie de modèle par défaut $this->loadTemplate. $this->loadTemplate('default_cover');

Mais pour faciliter la gestion des vues, je souhaite placer différentes parties de vue dans différents dossiers.

Dans ce cas, j'aimerais savoir s'il est possible de sélectionner le dossier dans lequel charger la vue requise avec la fonction $ this-> loadTemplate

1
user1876234

Il y a la vue addTemplatePath() pour ajouter des chemins de recherche supplémentaires:

$this->addTemplatePath(JPATH_BASE . '/components/com_example/templates/example_view');

Avec cela, le chemin personnalisé est priorisé, ce qui signifie qu'il remplacerait les remplacements de modèles dans les dossiers standard. Pour inverser cela, inversez l'ordre du tableau de $_path['template']:

$this->_path['template'] = array_reverse($this->_path['template']);

Ou, au lieu d'utiliser addTemplatePath(), ajoutez manuellement le chemin:

$this->_path['template'][] = JPATH_BASE . '/components/com_example/templates/example_view';

En outre, si vous souhaitez autoriser la structure personnalisée dans les remplacements de modèle, ajoutez également un dossier de modèle (en tenant compte également de l'ordre de recherche):

$this->addTemplatePath(JPATH_THEMES . '/' . JFactory::getTemplate() . '/html/com_example/example_view');

p.s. Je n'approuve pas l'utilisation de la structure de dossiers personnalisée. Cela ne fait que créer de la confusion chez les utilisateurs qui essaient de faire des remplacements. Peut-être envisager d'utiliser des dispositions à la place

2
Sharky