Comment afficher le nom de l'auteur qui a modifié un article ?

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

  • Comment afficher le nom de l'auteur qui a modifié un article ?

    Bonjour

    Tout est dit dans le sujet: Comment afficher le nom de l'auteur qui a modifié un article dans les détails d'un article ?

    Actuellement :
    Détails Écrit par : nom1 prenom1 Publié le : 10 Octobre 2024 Mis à jour : 3 Décembre 2024​

    J'aimerais avoir :
    Détails Écrit par : nom1 prenom1 Publié le : 10 Octobre 2024 Mis à jour : 3 Décembre 2024​ par nom2 prenom2

    Je ne parviens pas à trouver, comment insérer la variable modifiedby (si c'est bien cela)

    Je ne sais pas, si c'est lié au template ou pas, mais j'utilise un template créé par template-creator et non celui par défaut de joomla 5.

    Les modifications CSS que j'ai faite
    Code:
    /* info article sur une ligne */
    .tck-article-details {
    display: inline-flex;
    color: #514f4b;
    text-transform: uppercase
    }
    /* marge entres les informations article */
    .createdby.tck-article-detail-author, .create.tck-article-detail-createdate, .published, .article-info-term, .modified.tck-article-detail-modifydate {
    padding-right: 10px !important;
    }
    /* présentation générale des informations "article" */
    .article-info.text-muted.tck-article-details {
    color: #c47732;
    margin-top: 10px;
    font-size: 0.6rem;
    padding-left: 2px;
    padding-right: 2px;
    }​




    Merci
    Dernière édition par carabao à 04/12/2024, 17h31
    Cordialement,
    carabao

    Site dédié à la caravane & au camping: www.caravane-camping.be

  • #2
    bonsoir, je ne sait pas si cette info est visible dans un article Il me sembles qui l n y a que la date de derniere modification qui est disponible. Je te ferais un retour lundi a ce sujet

    Commentaire


    • #3
      Merci. A part, peut-être par une surcharge, mais là, je ne les maitrise pas du tout.
      Cordialement,
      carabao

      Site dédié à la caravane & au camping: www.caravane-camping.be

      Commentaire


      • #4
        la donnée que je recherche n'est pas disponible nativement. La date de modif oui, mais par qui l'info n'est pas disponible.

        Commentaire


        • #5
          Merci d'avoir regardé.

          Dans la table: xxx_history, il est fait mention dans

          paramètre version data : modified_by: "idutilisateur".


          Maintenant, peut-on afficher ce paramètre en frontend, tout en transformant l'ID en nom ?
          Cordialement,
          carabao

          Site dédié à la caravane & au camping: www.caravane-camping.be

          Commentaire


          • #6
            bon, bah va falloir intégrer une requete sql en prime dans tout ca... un truc du genre select * from #__history where id = id article, pour faire au plus simple.
            Merci je vais voir plus loin.

            https://docs.joomla.org/Using_Content_History_in_your_Component

            Dans la table hist
            ory les champs item_id​, editor_user_id

            on as aussi un index de champs sql
            idx_ucm_item_id
            directement sur la colonne item_id.
            Dernière édition par lefabdu51 à 10/12/2024, 17h26

            Commentaire


            • #7
              Dans Joomla, l'information concernant l'auteur de la dernière modification d'un article est stockée dans la table #__content. Voici les colonnes pertinentes dans cette table :
              • modified_by : contient l'ID de l'utilisateur qui a modifié l'article.
              • modified : contient la date et l'heure de la dernière modification de l'article.
              ​Pour récupérer le nom de l'utilisateur associé à l'id, Joomla utilise généralement la table #__users :
              • #__users :
                • id : correspond à l'ID utilisateur.
                • username : contient le pseudonyme de l'utilisateur.
                • name : contient le nom complet de l'utilisateur (si besoin).
              ​La solution pour intégrer le pseudonyme de l'utilisateur ayant modifié l'article c'est de créer une surcharge.

              Étape 1 : Créer une surcharge de mise en page
              1. Allez dans le backend de votre site Joomla.
              2. Rendez-vous dans Système > Templates du site > Détails et fichiers ( Sélectionnez le template que vous utilisez en frontend ).
              3. Cliquez sur l'onglet Créer des substitutions.
              4. Dans la liste des composants, cherchez com_content et sélectionnez la vue article.
              5. Joomla va créer une surcharge pour le fichier default.php de la vue article, dans le répertoire suivant :
              ​templates/nom_du_template/html/com_content/article/default.php

              Étape 2 : Modifier la surcharge
              1. Ouvrez le fichier default.php dans un éditeur de code (ou depuis le backend de joomla - affichage editeur ).
              2. Repérez l'endroit où vous souhaitez afficher l'information
              3. Ajoutez le code suivant :
              Code PHP:

              <?php // Vérifiez si l'article a été modifié
              if ($this->item->modified_by && $this->item->modified !== $this->item->created) :
              // Chargez l'utilisateur qui a modifié l'article
              $modifiedBy Factory::getUser($this->item->modified_by);
              echo 
              '<p class="last-modified">Last modified by ' htmlspecialchars($modifiedBy->username) . '</p>';
              endif;
              ?>




              Pour info, j'utilise Factory et non JFactory à condition d'avoir le namespace php au début du code (ce qui est le cas ligne 13 nativement avec la surcharge dans cassiopeia :
              use Joomla\CMS\Factory;

              Par défaut, l'auteur et le nom de la modification reste le même. L'id change uniquement si un autre utilisateur intervient sur l'article.

              Pour faire évoluer le code, on peut également créer une clé supplémentaire pour gérer la traduction de "Last modified by", donc que l'on ajoute :
              COM_CONTENT_LAST_MODIFIED_BY="Dernière modification par %s le %s" ​incluant date et auteur de la modification mais commençons déjà par valider cette modification.

              Merci en retour d'indiquer si les explications sont assez claires, on pourra ensuite intégrer cela dans la base de connaissance ( https://kb.joomla.fr ) dans un premier temps puis
              dans un nouveau template avec un paramétrage en backend.


              Dernière édition par daneel à 10/12/2024, 18h45
              lefabdu51 et Terreco aiment ceci.
              Joomla User Group (JUG) Lille : https://www.facebook.com/groups/JUGLille/

              Commentaire


              • #8
                Bonjour

                Je vous remercie.

                Merci pour ce tuto très complet.

                Premiers retours :
                • Le code est fonctionnel.
                • La ligne "use Joomla\CMS\Factory;" pour mon template se trouve ligne 15
                • Toutefois, la position proposée affiche l'information tout en haut de l'article.

                J'espérais trouver les balises <dd></dd> apparaissant dans le code HTML pour y mettre l'information à la suite des autres, mais je ne les situe pas.

                Elles apparaissent dans les fichiers dans /html/com_content/content/info_block/...

                J'ai essayé d'ajouter le code à la fin du fichier "..../html/layouts/content/info_block/modify_date.php"


                Code:
                <dd class="modifiedby tck-article-detail-modifiedby">
                <?php // Vérifiez si l'article a été modifié
                if ($this->item->modified_by && $this->item->modified !== $this->item->created) :
                // Chargez l'utilisateur qui a modifié l'article
                $modifiedBy = Factory::getUser($this->item->modified_by);
                echo '<span>Last modified by ' . htmlspecialchars($modifiedBy->username) . '</span>';
                endif;
                ?>
                </dd>​
                Mais rien ne s'affiche.
                Dernière édition par carabao à 10/12/2024, 20h06
                Cordialement,
                carabao

                Site dédié à la caravane & au camping: www.caravane-camping.be

                Commentaire


                • #9
                  non, c'est un peu plus compliqué...

                  ok, on efface la surcharge précédente et on repart sur ces nouvelles indications :

                  tu créé la substitution de
                  Affichage > Joomla > Content

                  ce qui va te permettre d'avoir le fichier : info_block.php
                  ‎/templates/cassiopeia/html/layouts/joomla/content/info_block.php

                  en ligne 13 ajoute :

                  Code PHP:

                  use Joomla\CMS\Factory


                  puis selon ton choix, tu positionne le code suivant dans info_block.php :​

                  Code PHP:
                  <?php
                  if (!empty($displayData['item']->modified_by) && $displayData['item']->modified !== $displayData['item']->created) :
                  $modifiedBy Factory::getUser($displayData['item']->modified_by);
                  if (
                  $modifiedBy) {
                  $modifiedByUsername htmlspecialchars($modifiedBy->username ?? ''ENT_QUOTES'UTF-8');
                  ?>
                  <dd class="last-modified">
                  <span class="icon-user icon-fw" aria-hidden="true"></span>
                  <?php echo Text::sprintf('COM_CONTENT_LAST_MODIFIED_BY'$modifiedByUsername); ?>
                  </dd>
                  <?php
                  }
                  endif;
                  ?>



                  Dans système > Substitution de traduction, on clique sur le bouton nouveau pour ajouter manuellement


                  Chaîne de traduction : COM_CONTENT_LAST_MODIFIED_BY
                  Texte : Dernière modification par %s​
                  Le résultat avec un 2ème utilisateur qui a modifié l'article créé par le 1er :



                  note : on peux définir un fichier à part mais la surcharge du fichier infoblock étant indispensable,
                  c'est plus facile d'intégrer le code directement. J'ai tenu compte également du balisage dd avec une classe css spécifique ainsi que l'icône présente sur la ligne auteur.
                  Dernière édition par daneel à 10/12/2024, 20h39
                  carabao aime ceci.
                  Joomla User Group (JUG) Lille : https://www.facebook.com/groups/JUGLille/

                  Commentaire


                  • #10
                    Super , c'est parfait. Cela fonctionne parfaitement

                    Il est temps que je me lance dans la lecture de tutos sur la substitution sous joomla. Cela semble tellement puissant pour manipuler l'affichage.

                    Cliquez sur l'image pour l'afficher en taille normale  Nom : Copie d'écran_20241210_210426.png  Affichages : 0  Taille : 9,8 Ko  ID : 2066712


                    Code:
                    /* marge entres les informations article */
                    .createdby.tck-article-detail-author, .create.tck-article-detail-createdate, .published, .article-info-term, .modified.tck-article-detail-modifydate, .parent-category-name.tck-article-detail-parentcategory {
                    padding-right: 10px !important;
                    }
                    /* présentation générale des informations "article" */
                    .article-info.text-muted.tck-article-details {
                    color: #c47732;
                    margin-top: 10px;
                    font-size: 0.6rem;
                    padding-left: 2px;
                    padding-right: 2px;
                    }​
                    Fichiers joints
                    Dernière édition par carabao à 10/12/2024, 21h19
                    Cordialement,
                    carabao

                    Site dédié à la caravane & au camping: www.caravane-camping.be

                    Commentaire


                    • #11


                      et sur celui tu tu a la doc officielle pour tout le reste
                      Arabic, Hebrew and some others are right to left(RTL) languages which means that the user interface is typically mirrored.

                      Commentaire


                      • #12
                        Rebonjour,

                        Cet après-midi, en modifiant un peu les CSS de mon template et particulièrement la couleur des informations articles (modification, auteur..), les modifications, faites hier, avaient disparu du fichier info_block.php. Coïncidence ou pas ? Comment peut-on éviter cela ?

                        Je suis impressionné du nombre de fichier de "substitution" se trouvant dans les différents sous-répertoires de template/xxx/html. Comment garder que les essentielles ?

                        Exemple pour le répertoire joomla (extrait)

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

Nom : Copie d'écran_20241211_141023.png 
Affichages : 19 
Taille : 64,3 Ko 
ID : 2066727

                        Fichiers joints
                        Dernière édition par carabao à 11/12/2024, 14h11
                        Cordialement,
                        carabao

                        Site dédié à la caravane & au camping: www.caravane-camping.be

                        Commentaire


                        • #13
                          ok on dérive un peu du sujet mais pourquoi pas ?
                          les surcharges ne sont jamais écrasées donc pas de risque de perte.

                          En fait, la premier est véritablement un clone de fichier portant le même nom puis à chaque fois que l'on génère une substitution (donc une surcharge), il ajoute une suite de chiffre dans le nom de fichier dont la date (20241210) en suffixe. Dans le paramétrage, il est possible parfois de définir quelle surcharge et de l'associer à l'extension ou la catégorie.

                          Plusieurs surcharges pour une même vue, c'est le résultat du plusieurs essais donc oui on peut supprimer ces essais et choisi un seul.

                          Tu peux laisser celui par défaut ou une autre version que tu auras choisie dans les paramètres de l'extension.




                          Joomla User Group (JUG) Lille : https://www.facebook.com/groups/JUGLille/

                          Commentaire


                          • #14
                            les fichiers nommés _default sont les fichiers utilisés par défaut. les fichiers que tu as crés sont au format _default-horodatage.php
                            Tu peux choisir les fichiers que tu a crées pour la vue blog par exemple. Ils apparaissent dans les onglets du menu /module /composant >parametre du composant / module / menu et ensuite "choisir une mise en page".

                            . sinon c est le fichier sans horodatage qui est utilisé.

                            Et si le fichier n existe pas alors c est celui du dossier composant/views/tmpl qui est utilisé .
                            Je te conseille en outre de regarder du côté des templates enfants. c est très puissant ce que tu peut faire avec.

                            Le principe est de toujours créer le fichier sous un autre nom et de choisir ou l'appliquer.
                            Si il doit être modifié partout ou ill est utilisé, alors tu modifies le fichier default.php
                            Dernière édition par lefabdu51 à 11/12/2024, 15h01

                            Commentaire


                            • #15
                              Je vous remercie

                              Les différentes surcharges avec un horodatage ne dépendent pas de mon template et des règles CSS personnelles ? Je peux les supprimer sans risque de perdre mes règles CSS ?

                              Si oui, je ne m'explique pas pourquoi, la modification, avec le nom du dernier auteur qui a modifié un article, a disparu.
                              Cordialement,
                              carabao

                              Site dédié à la caravane & au camping: www.caravane-camping.be

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X