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
    JoomlaDay FR 2018 - 18/19 Mai 2018 ! J'y étais ... et vous ?

    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
        Un message d’erreur sur votre site Joomla, consultez la base de connaissance https://kb.joomla.fr
        ---
        UP, un plugin "couteau suisse" à 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
          JoomlaDay FR 2018 - 18/19 Mai 2018 ! J'y étais ... et vous ?

          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, ...
              Custom Fields / Automatiser la restauration de ses sites / Lightning Talks / Toutes les nouveautés au fil des sous-versions de Joomla! 3.x / Devenir un testeur Joomla / Akeeba Backup & Amazon S3 / Acymailing & ElasticEmail / ...
              Coordonnées complètes : www.woluweb.be

              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
                1 sur 2 < >

                C'est [Réglé] et on n'en parle plus ?

                A quoi ça sert ?
                La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                Comment ajouter la mention [Réglé] à votre discussion ?
                1 - Aller sur votre discussion et éditer votre premier message :


                2 - Cliquer sur la liste déroulante Préfixe.

                3 - Choisir le préfixe [Réglé].


                4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                2 sur 2 < >

                Assistance au forum - Outil de publication d'infos de votre site

                Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                UTILISER À VOS PROPRES RISQUES :
                L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                Problèmes connus :
                FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                Installation :

                1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                Archive zip : https://github.com/AFUJ/FPA/zipball/master

                2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                et remplacer www. votresite .com par votre nom de domaine


                Exemples:
                Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                Télécharger le script fpa-fr.php dans: /public_html/
                Pour executer le script: http://www..com/fpa-fr.php

                Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                Télécharger le script fpa-fr.php dans: /public_html/cms/
                Pour executer le script: http://www..com/cms/fpa-fr.php

                En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                Voir plus
                Voir moins
                Travaille ...
                X