Besoin de votre aide pour un petit plugin

kameakamea Member

Bonjour à toutes et à tous,

Je souhaite ajouter, via un petit plugin, un champ de type "Date" intitulé "Événement" dans la barre latérale de gestion des articles. Ce champ permettrait d'identifier les articles associés à une date d'événement spécifique.

Si un article contient une date d'évènement, il serait alors identifiable et pourrait être affiché séparément sur une page statique dédiée par exemple.Cette dernière, regrouperait tous les événements par date, offrant ainsi une vue organisée et pratique.

J'ai tenté d'utiliser kzChamPlus, mais l'outil ne permet pas d'ajouter simplement une date.

J'ai également essayé le Chaudron à Plugins, mais je n'y arrive pas.

En espérant que ma demande vous intéresse :)

Belle journée à vous tous.

«1

Réponses

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    Bonjour @kamea,

    Je peux regarder pour ajouter un <input type="date"> dans les options possibles de kzChamPlus.

    Mais tu ne dis pas comment tu vas utiliser ce champ.
    Je suppose que tu vas vouloir filtrer les articles selon ce champ, soit côté administration, soit côté site.
    Et là c'est un peu plus complexe.

    Mais il y a peut-être une alternative qui peut te convenir. Tu peux utiliser les catégories par exemple.
    Pa exemple, tu peux inclure dans la catégorie"event-240922" tous les articles en lien avec la journée du 22/09/2024.
    Côté site, tu peux exclure certaines catégories de l'affichage de la liste des catégories ( cf. plxShow::catList() ou côté admininstration )

    On peux aussi utiliser les tags. Mais cela me semble moins souple.

    Ecrire un petit plugin pour cela est toujours possible. Mais il y a plusieurs hooks à gérer.

    Tu as un lien pour le chaudron à plugins ?

  • 19 sept. modifié

    Pour le chaudron à plugins, il s'agit surement : https://pluxopolis.net/developpement-dun-plugin.html
    avec le formulaire pour aider à se construire le squelette dans un zip : https://pluxopolis.net/thecrock

    Effectivement, il est important de bien comprendre comment tu veut ensuite utiliser ce champ , dans quels scenarios et pour quels résultats.
    L'ajout d'un champ seul n'est pas le plus complexe :)

    Cdt


    Cordialement,
    gcyrillus , simple membre du forum et utilisateur de pluxml

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • kameakamea Member
    19 sept. modifié

    Merci pour vos premières réponses :)

    Prenons l'exemple d'une petite association qui organise environ une trentaine d'événements annuels.

    Chaque événement possède :

    1. Une date de début de l'événement,
    2. Un titre,
    3. Une image ou PDF
    4. Une description.

    L'objectif est d'utiliser les articles, car leur structure est déjà parfaitement adaptée.

    Si un article contient un champ "date d'événement" rempli, alors il doit :

    • Toujours apparaître dans la liste des articles (ou pas peut être, je ne sais pas)
    • Être récupérable via un mécanisme qui affichera une liste "cliquable" de tous les articles événementiels sur une page statique dédiée, nommée "Calendrier" ou "Événements" par exemple.
    • Ces articles devront être triés par date événementielle, de la plus proche à la plus éloignée.

    J'essaye d'être le plus clair possible :)

  • 19 sept. modifié

    okay, et ce plugin : https://ressources.pluxopolis.net/banque-plugins/plugins/plnCalendrier-fork.zip ne conviendrait pas ? l'as tu essayer voir ce qu'il faisait et ce qu'il manquait ?


    Cordialement,
    gcyrillus , simple membre du forum et utilisateur de pluxml

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • kameakamea Member
    19 sept. modifié

    @gcyrillus-nomade , merci pour les pistes de plugins déjà existant. Je viens de tester, et il y a des petites erreurs inquiétantes :)

    Pour info j'utilise PHP 8.3.2 (la 8.4 arrive prochainement), et pluXml 5.9.0-rc6 et j'ai testé sur la stable 5.8 même soucis.

    plnCalendrier est positionné avant plnStaticPages comme recommandé dans les explications.

    Voici les erreurs :)

    • Warning: Cannot modify header information - headers already sent by (output started at [...] \www\core\admin\top.php:140) in D:[...] /plugins\plnCalendrier\admin.php on line 127
    • Warning: Undefined variable $aTemplates in .... www\plugins\plnCalendrier\config.php on line 114
    • Warning: Undefined array key "date_update" in [...] www\core\lib\class.plx.show.php on line 1866

    Je pense que juste un champ en plus dans la gestion de l'article me suffirait, plutôt que d'installer 2 plugins de 2020 et 2023 :)

  • 19 sept. modifié

    j'ai ceci :

    PluXml version 5.8.16 (encodage UTF-8)

    Version de PHP : 8.3.4
    Apache/2.4.54 (Win64) OpenSSL/1.1.1b mod_fcgid/2.3.10-dev

    et pas d'erreur chez moi, le plugin est fonctionnel

    pas tester avec les RC (qui ne sont publié qu'a des fins de tests ) , il y a 378 plugins dispos :(

    sinon: admin ligne 147 , c'est <li><a href="#style"><?php $plxPlugin->lang('L_STYLES')?></a></li> et pour $aTemplates c'est le template à prendre pour la page statique dans config, ces deux là sont surement lié à la version en RC qui gére ces trucs différemment.

    Je crois que je n'ai pas mis le nez dans les RC depuis mars ou avril. Il y a un gros chamboulement à venir et si un site fonctionne bien avec ses plugins, il faudra bien réfléchir à la réelle nécessiter de faire une MAJ de PluXml quand une RC passera en stable officielle ou que la version en ligne et la version officielle ont de grosse difference de version :)


    Cordialement,
    gcyrillus , simple membre du forum et utilisateur de pluxml

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • kameakamea Member
    19 sept. modifié

    J'ai réinstallé la version 5.8.16, et cela semble fonctionner. Il est possible qu'un autre plugin cause des interférences ou qu'il y ait peut être un un problème avec le thème.

    Cela dit, plnCalendrier semble intéressant pour d'autres choses, mais il ne correspond pas à mes simples attentes.

    Ce que je souhaite, c'est simplement un champ supplémentaire pour ajouter une date dans l'article, ainsi qu'un moyen d'afficher uniquement la liste des articles ayant une date d'événement, sur une page statique.

    Merci de prendre du temps pour m'aider en tout cas c'est super gentil :)
    .

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    Tu pourrais presque utiliser les tags avec par exemple un tag "event-240922".

    Mais pour un utilisateur lambda cela peut paraître pénible.

    Il faut reprendre l'idée du fichier tags.xml dans le dossier data/configuration/tags.xml où pour le numéro de l'article on associe une date.
    Il y a au moins 3 hooks à gérer :

    • pour la lecture des données avec plxMotor
    • pour afficher le champ de saisie dans article.php
    • pour sauvegarder les données avec plxAdmin

    Et pour afficher la liste de tous les évènements, il faudrait parcourir ce nouveau fichier et afficher les articles comme dans le template tags.php du thème.
    Il y a juste une petite subtilité pour le tri de ce fichier :

    • afficher les événements à venir par date croissante à compter de la date du jour
    • afficher éventuellement les évènements passés

    Il y a peut-être besoin d'afficher dans la page d'accueil le.s prochain.s évènement.s à venir dans un nombre à définir ( un ou quelques uns.

  • kameakamea Member
    19 sept. modifié

    @bazooka07 oui c'est une piste mais complexe je trouve non ?

    Dites moi juste si ça serait possible de faire ce petit ajout d'un champ dans la gestion des articles, via un tout petit plugin. Une fois qu'on sauvegarde aprés avoir renseigné la date, on obtiendrai ce résultat à la fin du fichier de données XML de l'article concerné.

    [...]
    < thumbnail_title><![CDATA[PluXml]]></ thumbnail_title>
    < date_creation><![CDATA[202409191837]]></ date_creation>
    < date_update><![CDATA[202409192156]]></ date_update>
    < date_event><![CDATA[202409192156]]></ date_event>

    Ensuite utiliser une méthode d'affichage simple comme par exemple :

    <?php $plxShow->artEventDate('#num_day #month #num_year(4) #time') ?> (Attention je ne m'y connais pas comme vous en dev, alors j'ai inventé cet exemple en utilisant un code existant ^^)

    Sur une page statique apparaitrait alors la liste des articles triés par dates chronologiques, disposant d'un champ date_event renseigné.

    Titre de l'article 1 / Date de l'évènement
    Le contenu

    Titre de l'article 2 / Date de l'évènement
    Le contenu

    ect ....

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    Le souci est qu'il va falloir analyser tous les articles pour savoir si le champ date_event est valide.
    Si ton site a plusieurs milliers d'articles, cela va prendre du temps.
    On peut contourner le problème de façon biaisée en assignant ces articles à une catégorie particulière. Mais un oubli est vite arrivé.
    Et niveau complexité, c'est presque du même niveau qu'une solution inspirée des tags.

    Patiente un peu. Je regarde cela. Cela me semble pas très compliqué. Faut juste surfer avec les hooks.

    Pour afficher la date de l'évènement dans une boucle d'articles, ce sera plutôt :

    $date_event = $this->plxMotor->plxRecord_arts->f('date_event');
    
  • kameakamea Member
    19 sept. modifié

    @bazooka07 Merci merci merci, je patiente :)

    Pour éviter de devoir parcourir tous les articles, on pourrait simplement ajouter une catégorie "évènement". Ainsi, le tri par date d'évènement (date_event) ne s'appliquerait qu'aux articles classés dans cette catégorie.

    Cela impliquerait 2 actions cocher la catégorie "évènement" et saisir la date de l'évènement. :o

  • krockroc Member

    L'utilisation d'une catégorie "évènement" me semble une bonne solution, couplée avec un champs pour la date de l'évènement. Ce serait même éventuellement possible d'utiliser le champs "date de création" comme date d'événement ?

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    1ère mouture du plugin kzEvent qui doit faire le taf
    Dans l'édition d'une page statique, copier-coller le contenu du fichier sample.php du plugin.

    Télécharger le plugin kzEvent

    Il y a encore quelques trucs à finaliser :

    • suppression d'un article
    • nettoyage après suppression du plugin
    • icône
    • hook kzEvent ?
    • etc...
  • kameakamea Member
    20 sept. modifié

    Première mouture très prometteuse :)

    J'ai effectué un test en créant 5 articles et en ajoutant une date d'événement à 4 d'entre eux. En affichant la page statique, tous les articles apparaissent, alors que l'article "0002" ne devrait pas être visible, puisqu'il n'a pas de date de renseigné.

    <article number="0001" date="202409191837" active="1">2024-09-26</article>
    <article number="0002" date="202409201011" active="1">< /article>
    <article number="0003" date="202409201012" active="1">2024-11-07</article>
    <article number="0004" date="202409201019" active="1">2024-10-05</article>
    <article number="0005" date="202409201026" active="1">2024-11-11</article> 
    
  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    La version 0.1.1 du plugin corrige ce problème, plus quelques autres.
    le fichier sample.php a été modifié (Problème de tri). Mets à jour le contenu de ta page statique.

    Je vais regarder pour que le fichier sample.php soit plus simple en créant un hook kzEvent. Mais c'est un peu plus compliqué.

  • kameakamea Member

    Bonsoir,

    J'ai eu un week-end chargé, je regarde tout ça demain matin, merci :)

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    Bonsoir,

    Avec la version 1.0.0, le plugin a beaucoup progressé.

    • Dans le tableau des articles, la date d'évènement est affichée entre parenthèses
    • Dans l'édition d'un article, cette date est à la suite des autres dates
    • Pour afficher les évènements dans une page statique, regarder l'exemple dans le fichier sample.php du plugin et utiliser le hook kzPlugin. Pour ce dernier, il y a plusieurs options possibles
      • Sans paramètre, il sélectionne les évènements à venir par date croissante
      • avec le paramètre before, il sélectionne les évènements passés par date décroissante
      • avec all tous les évènements, passés ou à venir, sont sélectionnés par date croissante
      • avec une chaine vide, on sélectionne d'abord les prochains évènements par date croissante, puis les évènements passés par date décroissante comme ici

    Je te laisse "jouer" avec ce plugin. N'hésite pas à faire un retour si un trouves un bug.

    Télécharger le plugin kzEvent

  • NonoMNonoM Member
    22 sept. modifié

    Bonjour @bazooka07 , intéressant ton plugin ! ;)
    j'ai voulu tester (avec Pluxml 5.8.16) mais après installation et essai sur un article, je tombe sur une erreur fatale, et bien sur le plugin se voit renommé en "kzEvents-orig"... c'est d'ailleurs fréquent avec certains plugins depuis la dernière version de pluxml, je ne comprends pas...
    An error is occured with the "KZEVENTS" plugin :
    type : 2
    message : Invalid argument supplied for foreach()
    file : kzEvents/kzEvents.php
    line : 154

        See https://www.php.net/manual/en/errorfunc.constants.php about type of error
        ============================================================
        User : 001
        Profil : 0
        PluXml version : 5.8.16
        PLX_DEBUG : false
        PHP version : 7.4.33
    
  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    Oups, tu n'as encore saisi aucune date d'évènement !

    Modifie la ligne n°342 comme suit :

    if(!empty($arts) and !empty($plxAdmin->aEvents)) {
    

    Il y a beaucoup de plugins qui ont besoin d'être mis à jour avec PHP 8. Il y avait déjà des erreurs mais elles passaient en dessous des radars.
    Il faut lister ces plugins pour les corriger au fur et à mesure.

    C'est juste ennuyeux en phase de développement d'un plugin. Je vais y remédier en fonction de PLX_DEBUG.

  • kameakamea Member
    23 sept. modifié

    @bazooka07 Le plugin fonctionne parfaitement avec une version PHP 7.4 mais avec une version 8.3.0 j'ai ce message d'erreur qui apparait n'importe où sur le site lorsque le plugin est activé.

    Deprecated: Creation of dynamic property plxMotor::$aEvents is deprecated in [... ]PluXml-5.8.16\www\core\lib\class.plx.motor.php(115) : eval()'d code on line 24

    L'idée d'ajouter la date à côté de l'article lorsqu'il est marqué comme un événement est très intéressante.

    Merci beaucoup.

  • NonoMNonoM Member

    @bazooka07 , après modification de la ligne 342, j'obtient cette erreur :
    Fatal error :
    type : 2
    message : array_key_exists() expects parameter 2 to be array, null given
    file : /core/lib/class.plx.motor.php(751) : eval()'d code
    line : 19

  • NonoMNonoM Member
    23 sept. modifié

    @bazooka07 "7.4.33" c'est indiqué 5 posts plus haut ! ;)

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    @kamea
    Pour que le plugin soit compatible avec PHP 8.3, j'ai repris son code car on ne peut rajouter à la volée une propriété à plxMotor. Les données sont donc maintenant stockées dans l'objet kzEvents. Mais cela doit être transparent pour l'utilisateur.
    Il y a également un exemple de code à insérer dans le template article.php du thème
    version 1.1.0 du plugin
    Télécharger la dernière version du plugin

    @NonoM
    Je n'ai pas réussi à reproduire ton erreur.
    Voir si l'erreur persiste avec la dernière version du plugin.

  • 23 sept. modifié

    @kamea, j'arrive après la bataille, mais je t'ai fait un exemple à partir d'un squelette du chaudron avec une approche moins experte et quelques explications qui vont avec sur les choix des hook et codes : https://forum.pluxml.org/discussion/7725/plugin-addevents-made-in-thecrock


    Cordialement,
    gcyrillus , simple membre du forum et utilisateur de pluxml

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • NonoMNonoM Member

    Je n'ai pas réussi à reproduire ton erreur.
    Voir si l'erreur persiste avec la dernière version du plugin.

    @bazooka07 , Merci c'est Cool... avec ta dernière version, pas de soucis !
    KzEvents est assez sympa pour l'utilisation que je pourrais en faire, ça reste simple à mettre en oeuvre, faut juste que je continue à faire mumuse avec le codage exemple du "sample.php", afin de modifier les infos affichées (trop pour moi) et la mise en forme de ma page statique (le css affiche mes TITRES en blanc sur fond blanc pour l'instant)

  • kameakamea Member

    @bazooka07 plus d'erreur tout à l'air de bien ronronner :) Bravo et merci beaucoup.

    @gcyrillus-nomade coucou et merci, je t'ai répondu sur ton poste directement :)

    @NonoM Ravi de voir que cela aide d'autres utilisateurs de PluXml dans le domaine de l'événementiel. Il faut dire que, pour des associations ou même d'autres types d'activités, ce plugin risque d'être largement utilisé.

  • NonoMNonoM Member
    24 sept. modifié

    Ravi de voir que cela aide d'autres utilisateurs de PluXml dans le domaine de l'événementiel. Il faut dire que, pour des associations ou même d'autres types d'activités, ce plugin risque d'être largement utilisé.

    Tout à fait @kamea ! ... il y a quelques années j'avais testé le plugin "plnCalendrier", et mis à par afficher un agenda, c'était pas le top pour tout le reste !!!... de toute façon il n'est plus compatible avec Pluxml depuis bien longtemps.

  • @nonoM pour plncalendrier une petite maj à été faites il y a plusieurs mois et il est compatible php8× et plx 5.8.16 :) l'auteur l'avait probablement fait pour un besoin précis et pour afficher un lien dans un calendrier. L'usage est effectivement limité.


    Cordialement,
    gcyrillus , simple membre du forum et utilisateur de pluxml

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • NonoMNonoM Member
    25 sept. modifié

    @gcyrillus-nomade Ah, ok pour plncalendrier... il faudra que je regarde ça à l'occasion mais bon, le widget de google agenda fait l'affaire pour l'instant. En tous cas, Merci... car "addevents" promet et pourrait changer la donne suivant ce que l'on veut obtenir ! ;)
    ça serait cool d'avoir en visuel un mini calendrier du mois (dans la sidebar), avec les jours "colorés" pour chaque date événement...
    et au clic sur une date ou sur le mois en cours, on serait redirigé vers la page gérée par "addevents" qui affiche la liste des événements. (ce n'est qu'une suggestion)
    Enfin, c'est l'idée que je m'en fais car j'ai des "restants"... d'utilisation pendant de longues années sur un composant + module lorsque j'étais encore accro à Joomla !
    ah,ah,ah, mais ça, c'était avant , lol !

Connectez-vous ou Inscrivez-vous pour répondre.