Comment afficher les champs personnalisés d'un subform

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

  • Comment afficher les champs personnalisés d'un subform

    Bonsoir
    J'ai commencé à intégrer des custom fields d'un subform dans un site que je suis entrain de mettre à jour vers j!4.1
    Mais celui-ci comportait une surcharge de la présentation de l'article.
    Comment faire une boucle pour afficher tous les champs remplies de ce subform?
    Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

  • #2
    'faut lire le Magazine

    Spoiler alert: there is a challenge for you at the end of this article and if I get enough answers there will be an ultimate article about Custom Fields in the Magazine.
    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


    • #3
      Bonjour woluweb
      Je l'avai lu superficiellement à la sortie, puis relue (et même le seul à voter;-) ). En y revenant de manière plus approfondie, je n'ai pas trouvée la solution.
      Le contexte est la refonte d'un site joomla 3 (clibre.ei) qui utilise abondemment les customs fields.
      Voici ce que je faisais car il me semble que nous avions une approche différente

      Sous joomla 3
      1/ J'avai dupliqué le fichier initial dans le fichier /templates/shaper_helixultimate/html/com_content/article/clibre.php

      2/ Puis j'ai affecté ce fichier à la mise en page de l'onglet paralètres de l'ément de menu blog, ce qui a pour effet de mettre les custom fields avec la mise en page et .. où je veux

      3/ j'ai injecté mon code après la ligne 136
      Code PHP:
      <div itemprop="articleBody"><?php // **************** DEBUT MODIF HD 16/10/20 **************** ; ?>  
      ...
      <?php if (!empty($this->item->jcfields[1]->value)): ; ?>
      <br /><div class="encadre">
      <div>
      <h3><?php echo $this->item->jcfields[1]->label ;/*type log. libre, case*/ ?></h3>
      <div><?php echo $this->item->jcfields[1]->value?></div>
      </div>
      </div>
      <?php endif; ?>

      <?php if (!empty($this->item->jcfields[22]->value)): ; ?>
      <br /><div class="encadre">
      <div>
      <h3><?php echo $this->item->jcfields[22]->label ;/*équivalent libre, liste*/ ?></h3>
      <div><?php echo $this->item->jcfields[22]->value?></div>
      </div>
      </div>
      <?php endif; ?>

      Sous joomla 4
      Tout s'affiche correctement joomla 4.1!, je n'ai pas ajoutté de blbliothèque ou autre.
      Je voudrai afficher sur une même ligne un champ url, liste, calendar et texte.
      J'ai essayé plusieurs pistes en reprenant mon code lié à un champ mais qui logiquement ne fonctionne pas dans ce cas.
      J'adapte aussi ce que j'ai compris de tes tutos mais la syntaxe est différente.
      Comment faire?

      Code PHP:
      .
      <div><?php foreach ($items as $item) {
      ..echo
      '<li>TEST<ul>'.
      '<li>' . ( $item['33'] ?? '' ) . '</li>' .
      '<li>' . ( $item['34'] ?? '' ) . '</li>' .
      '</ul></li>';
      }
      ?></div>
      Dernière édition par herve à 11/03/2022, 15h23
      Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

      Commentaire


      • #4
        tu m'as perdu :
        - il n'y a pas de champ subform dans J3
        - il n'y a plus de champ répétable dans J4
        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


        • #5
          ah je crois que j'ai compris l'ambiguité, j'enlève un mot car le site fait avec joomla 3 n'a jamais utilisé de champ répétable.
          remaj du précédent post en essayant d'être plus clair
          j'ai passé le site en joomla 4.1 et mes champs simples qui s'affichent correctement avec le code mentionné.
          Le problème est l'ajout de ces champs du champ subform dans joomla 4. Les voici
          nom / type / id
          Url / url / 33
          Type de site / list / 34
          date / calendar / 40
          note / text / 41
          Sites et sources d'infos / subform / 35
          Dernière édition par herve à 11/03/2022, 15h24
          Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

          Commentaire


          • #6
            J'ai pas l'impression que tu fais une boucle sur ton CF de type subform.

            As-tu déjà essayé d'afficher la rawvalue de ton CF de type subform pour voir ce qu'elle contient ?
            (cfr point "Step 6 - Alternate Layout - version 1 - the rawvalue" du premier article)
            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


            • #7
              Si c'est ce que j'ai troué et essayé de faire différents tests.
              Après ce que je disais c'est que je ne pense pas utiliser la même méthode que toi. J'espère employer les bons termes anglais (car je trouve cela un peu complexe ces niveaux de surcharges).
              Toi tu parles de:
              "Alternate Layout" (or "Alternative Layout").

              This is a two-step process:
              1. first rename that "render.php" file into something explicit. Examples: marc.php, carousel.php or in this case rawvalue.php. Note that dashes are allowed in the filename (but not underscores afaik)
              2. then edit the chosen Custom Field and go to Tab Options > Render Options > Layout. There you find a dropdown which lists all available Alternate Layouts. Select the newly created & renamed file
              Moi sous joomla 3, j'avai dupliqué le fichier initial joomla3 dans le fichier /templates/shaper_helixultimate/html/com_content/article/clibre.php cf 1/
              C'est bien une surcharge d'article (override) ?
              Toi tu utilises
              Code PHP:

              $items 
              json_decode($rawvaluetrue);

              foreach (
              $items as $item) { echo '<li>Slide<ul>''<li>' . ( $item['field1'] ?? '' ) . '</li>' '<li>' . ( $item['field2'] ?? '' ) . '</li>' '<li>' . ( $item['field3']['imagefile'] ?? '' ) . '</li>' '</ul></li>'; } 
              Moi pour un champ "simple"
              Code PHP:
              <?php echo $this->item->jcfields[22]->value?>
              a/ Avant tout, est-ce que je dois changer ma syntaxe pour être conforme à 4.x?
              b/ Est-ce que je dois aller dès maintenant vers le thème enfant pour cette surcharge d'article avec ces customs fields dont subform ? mais pas encore vu de tuto la dessus
              Voilà je plonge rarement dans le code et à chaque fois je m'y perds !
              Dernière édition par herve à 11/03/2022, 17h45
              Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

              Commentaire


              • #8
                Bonjour
                Nouvelle tentative et cela fonctionne avec
                Code PHP:
                <?php
                echo $this->item->jcfields[35]->value;
                foreach (
                $items as $item) {
                echo
                '<ul>'.
                '<li>' . ( $item['33'] ?? '' ) . '</li>' .
                '<li>' . ( $item['34'] ?? '' ) . '</li>' .
                '<li>' . ( $item['40'] ?? '' ) . '</li>' .
                '<li>' . ( $item['41'] ?? '' ) . '</li>' .
                '</ul>';
                }
                ?>

                Voici ma conclusion provisoire de ce que je comprends maintenant, mon ancienne surcharge avec des champs personnalisés (faites sous j3) + cet ajout pour un subform (sous j4) fonctionne correctement et je n'ai pas compris non plus a quoi sert
                • cette notation :
                  Code:
                  ?? ''
                  ?
                • de ton code pour un subform
                  Code PHP:
                  $items json_decode($rawvaluetrue); 
                  ?
                Enfin j'ai déplacé ma question du thème enfant sur https://forum.joomla.fr/forum/joomla...rtir-de-la-4-1


                Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

                Commentaire


                • #9
                  Bonjour
                  @woluweb
                  En mettant le rapport d'erreur maximum, je vois sur le site de production suite à une erreur :

                  Code:
                  Notice: Undefined variable: items in /home//templates/shaper_helixultimate/html/com_content/article/clibre.php on line 211
                  Warning: Invalid argument supplied for foreach() in /home//templates/shaper_helixultimate/html/com_content/article/clibre.php on line 211
                  la ligne 211 = foreach ($items as $item)
                  Code PHP:
                  <?php
                  echo $this->item->jcfields[35]->value;
                  foreach (
                  $items as $item) {
                  echo
                  '<ul>'.
                  '<li>' . ( $item['33'] ?? '' ) . '</li>' .
                  '<li>' . ( $item['34'] ?? '' ) . '</li>' .
                  '<li>' . ( $item['40'] ?? '' ) . '</li>' .
                  '<li>' . ( $item['41'] ?? '' ) . '</li>' .
                  '</ul>';
                  }
                  ?>
                  une idée ?

                  Je repose ma question précédente sur
                  Code:
                  Code PHP:
                  ?? '' 
                  A quoi ça sert?
                  Dernière édition par herve à 24/03/2022, 09h52
                  Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

                  Commentaire


                  • #10
                    ben il y a visiblement une erreur sur le foreach.
                    $items, tu es sûr qu'il est défini plus haut ?
                    Et tu as fermé la boucle du foreach ?

                    pour ?? '', je pense que ça veut juste dire "si la valeur est vide/non définie alors afficher '' soit rien"
                    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


                    • #11
                      Exemple de code fonctionnel mis dans une substitution de la vue article:

                      Code PHP:

                      // field9 est l'id du champ utilisé dans le subform
                      $id 1// Id du custom field de type subform
                      $cf $this->item->jcfields;

                      $json json_decode($cf[$id]->rawvalue);
                      foreach(
                      $json as $field):

                      echo 
                      $field->field9;

                      endforeach; 

                      Commentaire


                      • #12
                        Bonjour
                        Bon finalement j'ai viré le foreach et tout fonctionne bien
                        Il reste
                        Code PHP:
                        echo $this->item->jcfields[35]->value
                        simple cela me va bien
                        altacrea aime ceci.
                        Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

                        Commentaire


                        • #13
                          @Nioupixel
                          Je viens de voir ton code qui fonctionne bien et qui ressemble a celui initial de woluweb
                          Tant mieux si cela fonctionne. 2 façons de faire si on est dans le même cas de ficgure d'afficher le contenu d'un subform dans la surcharge d'un article, mais finalement je préfère la mienne s'il n'y a pas d'effets de bord
                          Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

                          Commentaire


                          • #14
                            Envoyé par herve Voir le message
                            @Nioupixel
                            Je viens de voir ton code qui fonctionne bien et qui ressemble a celui initial de woluweb
                            Tant mieux si cela fonctionne. 2 façons de faire si on est dans le même cas de ficgure d'afficher le contenu d'un subform dans la surcharge d'un article, mais finalement je préfère la mienne s'il n'y a pas d'effets de bord
                            l'avantage du mien c'est que tu peux derrière vraiment faire la mise en page que tu veux avec des divs etc, après si ta solution correspond à ton besoin reste comme ça
                            herve aime ceci.

                            Commentaire

                            Annonce

                            Réduire
                            Aucune annonce pour le moment.

                            Partenaire de l'association

                            Réduire

                            Hébergeur Web PlanetHoster
                            Travaille ...
                            X