la j ai fait la surcharge du composant tags pour afficher l'icone apres le titre des liens. J ai du ruser et procéder comme ci dessous:
jai crée une susbstitution du composant tags > tags
Dans ce fichier il y a une boucle $item qui contient les informations relatives a chaque article devant être affiché. Cette boucle est à la ligne 72 du fichier à modifier
$item->content_id contient l'id de l'article correspondant.
J'ai été cherché la valeur du champ directement dans la table #__fields_values. Cette table contient 3 champs (l'item_id du champ, l'item_id de l'item correspondant (article, utilisateur....) et la valeur de celui ci.
Pour créer l'objet requete sql, j ai ajouté la classe factory au debut du fichier.
Pour créer l'objet db, j ai eu recours à cette ligne $db = Factory::getContainer()->get('DatabaseDriver'); qui crée une connexion à la base de données car le contexte (composant tags) ne permet pas l'utilisation de la procédure standard, à savoir : $db = $this->getDatabase(); . $this contient les informations concernant les tags et non les articles.. De plus, nous ne sommes pas dans un modele .
Sur ce point la documentation est ici https://manual.joomla.org/docs/gener...e/select-data/
Etj ai fait remonter une liste d'objet. J ai associé la valeur remontée avec la variable iconClass . Et je l ais affichée.
Ce code est executé pour chaque item de la liste.
Le fichier à modifier est html > com_tags >tag > default_items.php
A la ligne 18, j ai ajoté la ligne ci dessous:
Ensuite , j ai ajouté le code ci dessous après la ligne 77:
Ety enfin, j ai affiché l'icone en ajoutant les lignes ci dessous après la ligne 107 du fichier:
jai crée une susbstitution du composant tags > tags
Dans ce fichier il y a une boucle $item qui contient les informations relatives a chaque article devant être affiché. Cette boucle est à la ligne 72 du fichier à modifier
Code:
<?php foreach ($this->items as $i => $item) : ?>
J'ai été cherché la valeur du champ directement dans la table #__fields_values. Cette table contient 3 champs (l'item_id du champ, l'item_id de l'item correspondant (article, utilisateur....) et la valeur de celui ci.
Pour créer l'objet requete sql, j ai ajouté la classe factory au debut du fichier.
Pour créer l'objet db, j ai eu recours à cette ligne $db = Factory::getContainer()->get('DatabaseDriver'); qui crée une connexion à la base de données car le contexte (composant tags) ne permet pas l'utilisation de la procédure standard, à savoir : $db = $this->getDatabase(); . $this contient les informations concernant les tags et non les articles.. De plus, nous ne sommes pas dans un modele .
Sur ce point la documentation est ici https://manual.joomla.org/docs/gener...e/select-data/
Etj ai fait remonter une liste d'objet. J ai associé la valeur remontée avec la variable iconClass . Et je l ais affichée.
Ce code est executé pour chaque item de la liste.
Le fichier à modifier est html > com_tags >tag > default_items.php
A la ligne 18, j ai ajoté la ligne ci dessous:
Code:
use Joomla\CMS\Factory;
Code:
<?php $db = Factory::getContainer()->get('DatabaseDriver'); $query = $db->getQuery(true); $query->select($db->quoteName(['field_id', 'item_id','value'])); $query->from($db->quoteName('#__fields_values')); $query->where(('item_id = ' . $item->content_item_id) and ('field_id = 1')); $db->setQuery($query); $results = $db->loadObjectList(); // retourne un tableau d'objet: foreach obligatoire même si un seul résultat if ($results) { // Vérification si $results n'est pas vide foreach ($results as $r) { // ligne de verification à decommenter pour voir ce qui remontes de la base de données // echo "item id: " . $r->item_id . " Valeur: " . $r->value . "<br>"; $iconClass = $r->value; } } ?>
Code:
<?php if (isset($iconClass) && !empty($iconClass)) { ?> <span class="<?php echo $iconClass; ?>" aria-hidden="true"></span> <?php } ?>
Commentaire