Insérer code entre article en affichage blog

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

  • [RÉGLÉ] Insérer code entre article en affichage blog

    Bonjour,

    Je ne sais pas si je poste au bon endroit et si un développeur passe par là, je suis prêt à rémunérer quelqu'un qui apporte la solution à mon problème.
    Je m'occupe du site on-mag.fr qui est un média d'info sur les produits audio, vidéo et high tech qui vit de la pub.
    Nous aimerions pouvoir insérer automatiquement entre les articles lorsque l'on est en affichage de type blog comme ici (https://on-mag.fr/index.php/accueil/tous-nos-articles) du code Html. En l'occurrence ce serait des pubs (mais pour ce qui est du code des pubs on maitrise déjà), ce pourrait être également des messages.
    Je mes suis donc attaqué à la surcharge de template, pensant qu'il s'agissait de la bonne méthode. J'arrive à afficher un "Hello World" en dessous de chaque article en éditant blog_item.php de mon template. J'arrive aussi à afficher le message avant le premier article et après le dernier en éditant blog.php. Le souci est que je voudrais pouvoir cibler uniquement 2 ou 3 positions pour afficher mon message (on ne veut quand m^me pas mettre de la pub entre tous les articles). Par exemple : 1er position/pub après le 2ème article, 3ème position/pub après le 5ème article, 3ème position/pub après le 7ème. J'ai beau tourner le problème dans tous les sens, essayer d'utiliser un compteur... je ne trouve pas de solution.
    Est-ce que quelqu'un aurait une idée avec une autre méthode, un plugin existant ???

  • #2
    Salut,
    c'est tout à fait réalisable avec les custom fields (les champs) et une override.

    Je prendrai comme exemple les Articles en vedette.

    1 - dans
    tontemplate/html/com_content/featured/default_item.php
    à la fin du code, tu rajoutes ceci, qui permet d'afficher le Custom field uniquement s'il a été remplii:

    Code:
    <?php endif; ?>
    <!-- code à insérer -->
         <?php if (!empty($this->item->jcfields[22]->rawvalue)): ?>
            <div class="paragraph p-trois">  
              <?php echo $this->item->jcfields[22]->value; ?>
            </div>  
          <?php endif; ?>
    
    <!-- fin du code à insérer-->
    
    <?php // Content is generated by content plugin event "onContentAfterDisplay" ?>
    <?php echo $this->item->event->afterDisplayContent; ?>

    jcfields[22] définit l'ID de ton champ->22

    2 - Via l'admin, tu crées un champ ( Contenu->Champs)
    * dans l'onglet Général->Type, tu choisis Zone de texte (textarea)

    * toujours dans dans l'onglet Général, colonne de droite -> Catégorie, par défaut, il y a "Tout".
    Laisse comme cela, tu affineras après.

    * dans l'onglet Paramètres->Affichage automatique,
    tu choisis Ne pas afficher Automatiquement

    Ce sont des réglages généraux, quand tu connaitras mieux les Custom Fields, tu pourras encore affiner.
    Relève l'ID du champ.

    3 - Corrige le bout de code indiqué plus haut avec l'ID de ton champ nouvellement créé.

    4 - Dans le gestionnaire d'un article (dans ce cas, un Article en vedette), tu verras un nouvel onglet Champs.
    Comme on a choisi un textarea, tu peux rentrer n'importe quel texte .... ou pas.
    Si tu insères du texte, il apparaitra en dessous de l'artcle concerné.
    Sinon, rien n'apparait, comme prévu.

    5 - Style l'affichage avec les CSS

    6 - Attention. Certains templates sont très ... trafiqués.
    Exemple, avec Helix Ultimate, l'affichage est OK
    Avec astroid, de joomdev, c'est pas top. Mais ça se corrige avec les CSS.

    Ton template est de chez Yootheme, je n'ai aucune idée du rendu de cette fonctionnalité sur ce type de template.

    N'hésite pas à poser des questions.


    Merci à Marc woluweb et Christian, nos spécialistes des custom fields. Leurs tutos sont de précieuses sources d'information.
    woluweb aime ceci.
    Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

    Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

    Commentaire


    • #3
      salut ghazal,
      il ne manquerais pas une fonction de compte d'articles (pour en mettre 1 pub en dessous des articles 1,3 et 5 par exemple et uniquement ceux ci) ?

      Commentaire


      • #4
        Non.
        Puisqu'il y a une condition.
        Le custom field est renseigné, ca s'affiche. Sinon, non.
        Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

        Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

        Commentaire


        • #5
          Merci Ghazal pour ta réponse détaillée. Cela me fait déjà très plaisir que quelqu'un ait pris le temps d'essayer de trouver une solution à mon problème.

          Je suis assez mauvais en PHP (j'en suis resté au codage d'il y a quinze), j'avais bien pensé à une solution de ce genre, mais effectivement comme le dit lefabdu51, c'est un compteur qu'il me manque. Il faudrait effectivement qu'un premier custom fields (qui dit par exemple "bonjour") s'affiche sous le troisième article de la liste, qu'un second (par exemple "comment çà va ?") s'affiche sous le 5ème article et qu'un 3ème ("au revoir") apparaisse sous le 7ème article. Cela de façon automatique sans avoir à renseigner la condition dans la config de l'article lui-même.

          En effet sur on-mag.fr j'ai plusieurs milliers d'articles et jusqu'à une dizaine de nouveaux qui arrivent chaque les jours. À un instant "t", Ils ne se classent pas toujours de la même façon dans tous mes affichages blogs. En effet le dernier article sur de la musique peut-être 3ème dans la catégorie des articles en vedette, mais il sera le 1er dans la catégorie "Musique".

          Avec ta solution, je pourrais lancer un script sur la base de donnée qui coche tous les 3 articles à OK pour la condition ou plutôt qui affecte un des trois éléments (bonjour, comment ça va et au revoir). Je pourrais aussi afficher de façon aléatoire une fois sur trois un des trois éléments.
          Mais avec ces méthodes, je ne peux être sûr de l'ordre d'apparition des éléments, ni qu'ils n'apparaissent plusieurs fois (ce qui avec les codes de pubs risquerait de faire un conflit), ou pas du tout ou trop souvent selon la catégorie.

          J'ai donc vraiment besoin de pouvoir compter, ou identifier dans quelle position est l'article dans la liste en cours afin d'y faire apparaitre un élément ou pas.

          J'ai bien trouvé un compteur dans le fichier de template blog.php. J'arrive à afficher le résultat du compteur à chaque boucle "1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10" en haut de la liste des articles ou en bas de la liste des articles. Mais je n'arrive pas à transmettre ce compteur au fichier de template blog-item.php de façon à afficher 1 sous le premier article, 2 sous le deuxième article, 3 sous le troisième... Si j'arrivais à faire çà, j'aurais ma solution (avec ou sans les custom fields d'ailleurs), je pourrais afficher "bonjour" quand le compteur serait à 3, "comment çà va" pour le compteur à 5, et "au revoir" pour le compteur à 7.

          Peut-être aussi que mon problème vient du CSS qui laisse les résultats du compteur en haut ou en bas de ma liste d'article et non en dessous de chacun.

          Commentaire


          • #6
            @ghazal !
            dsl pour ma question stupide...
            Le champ personnalisé est a renseigner pour chaque article... J ai oublié ce detail.
            Je pensait à un module de contenu personnalisé en pensant à cette question dsl.
            `@pierre stremmelin:
            dans le vue blog tu parles du fichier default.php ? c est celui que tu modifies?
            si c est le cas, pour afficher en dessous de chaque article, tu devrais mmettre ton compteur en dessous de l'appel a laffichage de chaque article...

            Commentaire


            • #7
              Bonjour,

              Si le but est d'insérer un contenu à tel et tel article (contenu qui peut être une pub) alors le Custom Field est une piste.

              Mais si le but est d'insérer p.ex. un Module "pub" tous les X articles (sans savoir à l'avance quels seront ces articles et dans quel ordre etc), on peut aussi pour éviter de coder en PHP utiliser Articles Anywhere : https://www.regularlabs.com/extensio...-numbers-every

              Concrètement (je cite) :

              The every-... values are useful to add extra html or a class name for every n. articles.


              Let's say you want to create columns. Then you will need to add extra html or class names to mark the beginning or end of each row.
              For this purpose you can use the every-... value.

              This example shows how to add an extra closing and opening <div> after every 4th article in the output (in html view):
              {if every-4}</div><div>{/if}
              Dernière édition par woluweb à 28/07/2019, 09h20
              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
                Merci ghazal, lefabdu51, woluweb pour vos conseils. En creusant un peu, je crois enfin avoir trouvé la solution.

                J'ai copié le fichier components/com_content/category/views/tmpl qui détermine l'affichage des articles sous forme blog, dans mon template sous html/com_content/category pour faire un surcharge. Je n'avais pas réussi au début car effectivement mon template modifie par défaut ce fichier et je n'y trouvait pas la bonne boucle d'appel des articles.

                Pour la première surcharge j'ai juste mis sous la ligne 105 : echo $counter ;
                Et, youpi, je vois apparaitre sur mon site dans le mode d'affichage blog : "0" après le premier article, "1" sous le deuxième, "2" sous le troisième... "9" sous le dixième article.

                J'en ai aussi profité pour modifier les dernières ligne afin que la pagination s'affiche comme avant.

                Du coup, avec un petit code de vérification, je vais pouvoir insérer ou pas un champ personnalisé (une pub dans mon cas) en dessous de l'article en fonction de son numéro dans la liste.
                Dernière édition par Pierre Stemmelin à 28/07/2019, 21h45
                woluweb aime ceci.

                Commentaire


                • #9
                  Merci pour le retour Pierre Stemmelin
                  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


                  • #10
                    Si le problème est réglé merci de l'indiquer.
                    Pour cela voir l'encadré ci-dessous.
                    Lorsque l'on se cogne la tête contre un pot et que cela sonne creux, ça n'est pas forcément le pot qui est vide.
                    Confucius

                    Commentaire


                    • #11
                      lesoutier, j'attendais un peu de tout bien vérifier avant d'indiquer que la solution a été trouvé. Mais là je confirme, je suis en train de placer les tags Google Ad Manager pour afficher des pubs entre certains articles dans l'affichage blog et çà fonctionne. Je suis trop content que l'on ait trouvé la solution.

                      Commentaire

                      Annonce

                      Réduire
                      Aucune annonce pour le moment.

                      Partenaire de l'association

                      Réduire

                      Hébergeur Web PlanetHoster
                      Travaille ...
                      X