web-dev-qa-db-fra.com

Obtenir l'image d'introduction de la catégorie dans le fichier index.php

Je veux afficher l'image d'introduction de mes catégories sur la page des catégories.

J'ai un remplacement de modèle pour le blog de catégorie.
À cause de la disposition, je dois placer le code en dehors de la substitution - dans le fichier index.php.

À l'intérieur de la présentation du blog, il est possible de charger l'image d'introduction avec le code suivant:

<?php if ($this->category->getParams()->get('image')) : ?>
   <?php echo $this->category->getParams()->get('image'); ?>
<?php endif; ?>

Lorsque je mets ceci dans le fichier index.php, l'erreur suivante apparaît:

Notice: Undefined property: JDocumentHtml::$category in C:\xampp\htdocs\PATHTOTEMPLATE\index.php on line 101

Fatal error: Call to a member function getParams() on null in C:\xampp\htdocs\PATHTOTEMPLATE\index.php on line 101

Est-ce même possible de le charger comme ça? Ou doit-il être dans la vue catégorie?

2
zenbormi

En savoir un peu plus sur le cycle de vie de demande-réponse de joomla aidera ici. Joomla s'exécute dans l'ordre suivant: 1. bootstrap l'application 2. routeur 3. composant (y compris vos propres modifications de présentation)) 4. modules 5. modèle

Divers objets tels que jsession et jinput vous permettent d’obtenir et de définir des variables au cours du cycle de vie. Ainsi, si vous définissez le code HTML de votre image à partir du remplacement de la présentation de catégorie dans une variable jinput, vous pouvez le récupérer dans n’importe quel module ou modèle php. Notez que l’utilisation du filtre RAW lors de la récupération de la valeur est obligatoire, sinon votre code HTML sera probablement supprimé.

Cela irait dans votre mise en page de catégorie

JFactory::getApplication()->input->set('category_image_html',$this->category->getParams()->get('image'));

cela peut être dans n'importe quel module ou template php

echo JFactory::getApplication()->input->get('category_image_html', 'default_value_if_you_want_one', 'RAW');
2
jamesgarrett

Premièrement, le seul code qui devrait être inséré dans index.php est le code qui devrait apparaître sur chaque page. Ce que vous voulez faire est sur la vue catégorie, donc votre code doit aller dans le remplacement de la vue catégorie.

Il est possible d’obtenir quelque chose comme ça dans index.php, mais ce serait totalement une mauvaise chose à faire, donc je ne vais pas suggérer comment vous pourriez le faire.

"Je souhaite afficher l’image d’introduction de mes catégories sur la page des catégories."

Quel est le problème? Attribuez une image à votre catégorie et Joomla l'affichera dans la vue des catégories. Cela fonctionne hors de la boîte, donc je ne comprends pas pourquoi vous devez faire quoi que ce soit.

1
Seth Warburton