Bonjour,
à la suite du JDay de Marseille, j'avais posé cette question sur le forum : ancien post
Il n'avais pas trop remué les foules, mais il me semblait que l'on passe un peu à côté de ces champs personnalisés ...
Cette semaine j'ai eu un cas pratique avec une liste de cours a mettre en avant et je voulais essayer de passer à nouveaux avec ces champs persos et ne pas utiliser d'autre chose que ce qui est en standard.
(la question viendra en fin de post ne vous inquiétez pas )
Je me suis à nouveau battu avec ces satanées champs et cette fois le résultat est assez sympa :
1 - création des différents champs regroupés dans un groupe de champs "infos cours" attribués à une catégorie "cours"
- date / lieu / prof / texte d'intro / image d'intro / etc.
2 - quand on crée un nouveau contenu de catégorie "cours", on se retrouve avec cet onglet "infos cours" qui regroupe tous mes champs.
3 - Pour créer un nouveau cours, on remplit les champs et on met le texte à proprement parler comme d'habitude
// pour la vue en blog :
4 - affichage de la vue en liste : on surcharge les fichiers de la vue en blog avec, dans son template les fichiers blog** xml et php en les renommant cours_**.
- dans le fichier cours.xml, on change le nom du layout en
Ainsi lorsque l'on veut lier un lien de menu vers la liste en blog de la catégorie "cours", il y a un nouveau choix "Liste des cours".
5 - l'affichage des blocs du blog se fait dans le cours_item.php, je remplace l'affichage du bloc par :
les valeurs des " $this->item->jcfields[6]->value" est donc la valeur du champs dont l'ID est 6.
Pour forcer l'apparition du bouton "Lire la suite", j'ai supprimé la condition aux lignes 65 et 78
En gros cela donne :
Je trouve ça sympa et sur la même idée, j'ai pu surcharger la vue en liste en intégrant mes champs persos sous forme :
J'espère que ça pourra aider quelqu'un !
Bon, maintenant, la question !
J'ai pu mettre tout ça en place, mais comme un bourrin (code en dur) et je suis en train d'essayer de peaufiner le truc et je voudrais placer la configuration des différentes options dans le fichier xml de config et je ne trouve pas le moyen de liste les champs persos liés à un catégorie pour les mettre dans la config sous forme :
Pour lister mes champs et pouvoir les sélectionner etc.
Une idée
Olivier
à la suite du JDay de Marseille, j'avais posé cette question sur le forum : ancien post
Il n'avais pas trop remué les foules, mais il me semblait que l'on passe un peu à côté de ces champs personnalisés ...
Cette semaine j'ai eu un cas pratique avec une liste de cours a mettre en avant et je voulais essayer de passer à nouveaux avec ces champs persos et ne pas utiliser d'autre chose que ce qui est en standard.
(la question viendra en fin de post ne vous inquiétez pas )
Je me suis à nouveau battu avec ces satanées champs et cette fois le résultat est assez sympa :
1 - création des différents champs regroupés dans un groupe de champs "infos cours" attribués à une catégorie "cours"
- date / lieu / prof / texte d'intro / image d'intro / etc.
2 - quand on crée un nouveau contenu de catégorie "cours", on se retrouve avec cet onglet "infos cours" qui regroupe tous mes champs.
3 - Pour créer un nouveau cours, on remplit les champs et on met le texte à proprement parler comme d'habitude
// pour la vue en blog :
4 - affichage de la vue en liste : on surcharge les fichiers de la vue en blog avec, dans son template les fichiers blog** xml et php en les renommant cours_**.
- dans le fichier cours.xml, on change le nom du layout en
Code:
<layout title="Liste des cours" option="cours">
5 - l'affichage des blocs du blog se fait dans le cours_item.php, je remplace l'affichage du bloc par :
Code:
<div class="row"> <div class="span3" style="text-align:center;"> <h3>Date(s) du cours</h3> <br> <b><?php echo $this->item->jcfields[1]->value;?></b> <br><br> <br> <?php echo $this->item->jcfields[6]->value;?> </div> <div class="span5"> <h3>Détails du cours</h3> <p><b>Lieu :</b> <?php echo $this->item->jcfields[2]->value;?></p> <p style="text-align: justify;padding:5px;"><?php echo $this->item->jcfields[3]->value;?></p> </div> <div class="span4"> <?php echo $this->item->jcfields[4]->value;?> </div> </div> <br>
Pour forcer l'apparition du bouton "Lire la suite", j'ai supprimé la condition aux lignes 65 et 78
Code:
//if ($params->get('show_readmore') && $this->item->readmore) : ... //endif
Je trouve ça sympa et sur la même idée, j'ai pu surcharger la vue en liste en intégrant mes champs persos sous forme :
Code:
<table class="category table table-striped table-bordered table-hover<?php echo $tableClass; ?>"> <caption class="hide"><?php echo JText::sprintf('COM_CONTENT_CATEGORY_LIST_TABLE_CAPTION', $this->category->title); ?></caption> <thead> <tr> <?php //******************* titre tableau *************************** ?> <th> Cours </th> <th> Date </th> <th> Heure </th> <th>Lieu </th> <?php //******************* fin titre tableau *************************** ?> </tr> </thead> <tbody> <?php foreach ($this->items as $i => $article) : ?> <?php if ($this->items[$i]->state == 0) : ?> <tr class="system-unpublished cat-list-row<?php echo $i % 2; ?>"> <?php else : ?> <tr class="cat-list-row<?php echo $i % 2; ?>" > <?php endif; ?> <?php //******************* lignes tableau *************************** ?> <td> <a href="<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($article->slug, $article->catid, $article->language)); ?>"> <?php echo $this->escape($article->title); ?> </a> </td> <td> <?php echo $article->jcfields[1]->value; ?> </td> <td> <?php echo $article->jcfields[6]->value; ?> </td> <td> <?php echo $article->jcfields[2]->value; ?> </td> <?php //******************* fin lignes tableau *************************** ?> </tr> <?php endforeach; ?> </tbody> </table>
Bon, maintenant, la question !
J'ai pu mettre tout ça en place, mais comme un bourrin (code en dur) et je suis en train d'essayer de peaufiner le truc et je voudrais placer la configuration des différentes options dans le fichier xml de config et je ne trouve pas le moyen de liste les champs persos liés à un catégorie pour les mettre dans la config sous forme :
Code:
... <field name="show_fields_list" type="list" label="JGLOBAL_SHOW_CATEGORY_FIELDS" description="JGLOBAL_SHOW_CATEGORY_FIELDS_DESC" > </field> ...
Une idée
Olivier
Commentaire