Ajout des champs personnalisés dans la vue liste des articles d'une catégorie

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Ajout des champs personnalisés dans la vue liste des articles d'une catégorie

    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
    Code:
    	<layout title="Liste des cours" option="cours">
    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 :

    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>
    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

    Code:
    //if ($params->get('show_readmore') && $this->item->readmore) :
    ...
    //endif
    En gros cela donne :

    Cliquez sur l'image pour l'afficher en taille normale

Nom : champs_perso1.jpg 
Affichages : 1 
Taille : 32,8 Ko 
ID : 1824931

    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 :
    Cliquez sur l'image pour l'afficher en taille normale

Nom : champs_perso2.jpg 
Affichages : 1 
Taille : 14,0 Ko 
ID : 1824932
    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>
    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 :

    Code:
    ...
    <field 
          name="show_fields_list" 
          type="list"
          label="JGLOBAL_SHOW_CATEGORY_FIELDS"
          description="JGLOBAL_SHOW_CATEGORY_FIELDS_DESC"
    >
    
    </field>
    ...
    Pour lister mes champs et pouvoir les sélectionner etc.

    Une idée

    Olivier
    Dernière édition par krak69 à 01/10/2017, 22h23

  • #2
    Re : Ajout des champs personnalisés dans la vue liste des articles d'une catégorie

    Bonjour Olivier,

    J'ai eu ce type de souci pour un module (Lomart va encore dire que je fais une fixation, c'est sur le module Isotope).

    Pour récupérer les "fields", je suis passé par une requête SQL comme suit:

    <field
    name="displayfields"
    type="sql"
    multiple="true"
    label="SSISO_FIELDS"
    description="SSISO_FIELDSDESC"
    query="select f.id as id, f.title as value from #__fields f where f.context like 'com_content%' and f.state > 0"
    key_field="id"
    value_field="value"
    />
    Cela récupère tous les fields de type Contenu qui sont publiés. Dans ton cas, il faudra rajouter une condition sur la catégorie.

    Pascal
    If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

    Commentaire


    • #3
      Re : Ajout des champs personnalisés dans la vue liste des articles d'une catégorie

      Warf ... je ne pensais pas que l'on pouvait inclure du sql dansles fichiers xml ...

      Super et merci

      Commentaire


      • #4
        Re : Ajout des champs personnalisés dans la vue liste des articles d'une catégorie

        Lomart va encore dire que je fais une fixation, c'est sur le module Isotope).
        C'était une taquinerie. Au contraire, je trouve que c'est une très bonne idée
        UP, le plugin universel à découvrir sur https//up.lomart.fr
        bgMax
        , AdminOrder, MetaData, Zoom, ArtPlug, Custom, Memo, Filter, ... sur http://lomart.fr/extensions

        Commentaire


        • #5
          Re : Ajout des champs personnalisés dans la vue liste des articles d'une catégorie

          Envoyé par lomart Voir le message
          C'était une taquinerie.
          Je sais, je suis un peu taquin aussi par moment...

          Bonne fin de weekend,

          Pascal
          If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

          Commentaire


          • #6
            Bonjour, je me permets de relancer ce post.
            Mon problème concerne l'override du lien de menu blog
            j'ai bien fait comme expliqué ci-dessus ( copié tous les fichiers blog.php, blog.xml, blog_children.php, blog_item.php et blog_links.php que j'ai renommé en bp.php,pb.xml,.......et placé dans /templates/montemplate/html/com_content/category
            j'ai modifié le fichier pb.xml comme suit : <layout title="Projets BP" option="bp">

            puis dans ma catégorie j'ai choisi bp comme type de mis en page.

            or lorsque je modifie le fichier bp.php ou pb_item.php ( j'ai d'ailleurs supprimé le contenu du fichier ) il n'y a aucun changement dans la présentation de la page.
            aurais-je manqué une étape ? cela fait plusieurs heures que je suis la-dessus et je suis totalement désarmé :-(
            Si l'un d'entre vous pouvais m'aider ce serait vraiment top !!!!

            Merci
            Laurent

            Commentaire


            • #7
              mmh, avec 2-3 captures d'écran on pourrait plus facilement t'aider

              Exemples :

              "puis dans ma catégorie j'ai choisi bp comme type de mis en page" : ah, moi c'est dans le Menu que je change le type de mise en page
              "or lorsque je modifie le fichier bp.php ou pb_item.php" : si l'un s'appelle bp et l'autre pb, forcément ça marche pas

              Bref, c'est peut-être juste une typo dans le post sur le forum, mais sans capture d'écran c'est dur de vérifier si tout est effectivement OK ou s'il y a "autre chose"
              Présentations : slides.woluweb.be | Coordonnées complètes : www.woluweb.be

              Un message d’erreur sur votre site Joomla... ayez le reflexe de consulter la base de connaissance : https://kb.joomla.fr

              Ce forum, vous l'aimez ? Il vous a sauvé la vie ? Vous y apprenez régulièrement ? Alors adhérer à l'AFUJ, l'Association Francophone des Utilisateurs de Joomla : https://www.joomla.fr/association/adherer

              Commentaire


              • #8
                Envoyé par woluweb Voir le message
                mmh, avec 2-3 captures d'écran on pourrait plus facilement t'aider

                Exemples :

                "puis dans ma catégorie j'ai choisi bp comme type de mis en page" : ah, moi c'est dans le Menu que je change le type de mise en page
                "or lorsque je modifie le fichier bp.php ou pb_item.php" : si l'un s'appelle bp et l'autre pb, forcément ça marche pas

                Bref, c'est peut-être juste une typo dans le post sur le forum, mais sans capture d'écran c'est dur de vérifier si tout est effectivement OK ou s'il y a "autre chose"
                Merci, j'avais tout fait correctement je m'acharnais juste a vouloir modifier le lien de menu alors qu'i fallait juste que je créé un nouveau lien pour voir apparaître mon bp dans la liste des menu proposés....
                Pour le bp et le pb juste une faute de frappe dans mon post ( on me dit souvent que je suis dyslexique !)

                Merci

                Commentaire

                Annonce

                Réduire
                Aucune annonce pour le moment.

                Partenaire de l'association

                Réduire

                Hébergeur Web PlanetHoster
                Travaille ...
                X