We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 14463
    • 11 Posts
    Bonjour à tous !

    Voici une astuce qui vous permettra d’utiliser le snippet DittoCal comme un agenda.

    Pré-requis :

    • Maîtriser l’utilisation des variables de modèles [+TV+].
    • Maîtriser les appels à Ditto
    • Avoir déjà utiliser DittoCal
    • ditto version: 2.02
    • DittoCal version : 1.2

    Rappel : DittoCal est un Snippet qui vous permet d’afficher les documents (ou posts) que vous avez créés dans 1 calendrier.
    Exemple : Imaginez que nous sommes le 15 août 2007 et que vous avez créer des documents (ou posts) le 5, 10 et 15 août 2007. Le snippet DittoCal va alors créer un calendrier dans lequel figurera des liens aux dates 5, 10 et 15 août 2007 vers les documents ou posts que vous avez créer.

    L’astuce que je vous propose permet d’utiliser le snippet DittoCal comme un agenda.

    Prenons un exemple !
    Vous êtes responsable d’un site de football et vous souhaitez utiliser DittoCal pour afficher les dates des prochains matchs.
    Vous avez déjà un répertoire Match (avec l’id 64 par exemple) et des fiches de matchs ( fiche1(id=65), fiche2 (id=66), fiche3 (id=67)).
    Chacune de ses fiches contient différentes informations (titre, sous titre, introtext...), des variables de modèles...


    Procédure pour utiliser DittoCal comme un agenda :

    1) Créez une variable de modèle comme suit :

    Variable Name: [*date_match*] (vous donnéez le nom que vous voulez!)
    Input Type: Date
    Widget: Unixtime

    et "lier" cette variable au template qui gère vos fiches de matchs

    2) Installez et utilisez le snippet DittoCal en suivant les instructions.
    Note : adaptez l’appel au snippet au cas que que vous souhaitez traiter. Dans notre exemple l’appel a été adapté pour traiter les fiches de matchs. A ce stade (sans jeux de mot), nous sommes encore dans une utilisation "normale" du snippet.

    C’est maintenant que les choses sérieuses commencent :
    3) Éditez le fichier situé dans assets/snippets/ditto/formats/json.format.inc.php et remplacez les [+json_createdon+] par [+json_date+]. Il y a deux occurrences je crois !
    4) Modifiez votre appel au snippet DittoCal de la façon suivante :
    [!Ditto?startID=`64` &summarize=`100` &format=`json`  &dateSource=`date_match` &dateFormat=`[+date_match+]` &sortDir=`desc`!]


    Explication sur l’appel au snippet :
    &dateSource=`date_match` récupère la valeur contenue dans la variable de modèle [*date_match*]. Cela signifie que DittoCal prendra en compte non plus la date de création du document mais la date du match.
    &dateFormat=`[+date_match+]` récupère le format de la variable de modèle [*date_match*] c.a.D date et unixtime. C’est cette ligne qui est très importante pour que le snippet fonctionne correctement.

    Résultat :
    Imaginez que nous sommes le 15 août 2007 et que vous ayez renseigner vos fiches de matchs le 15 août 2007 :

    fiche1 contient la date du match 1 le 23 août 2007,
    fiche2 contient la date du match 2 le 24 août 2007
    fiche3 contient la date du match 3 le 27 août 2007

    DittoCal vous affiche dans le calendrier des liens vers les du 23, 24 et 27 août 2007 et non plus un lien vers la date de création du fichier (dans l’exemple le 15 août).

    J’espère avoir été clair dans mon explication et que cette astuce vous sera utile !
    N’hésitez pas à me faire part de vos commentaires (c’est la première fois que je poste un message sur un forum)


    Je voudrais remercier toute la communauté de Modx pour tout ce qu’elle fait pour ce formidable CMF qu’est MODx ! ! ! ! Et sans qui je n’aurais pu partager cette astuce.

    JohannB
      Slow, But Sure
      • 23050
      • 1,842 Posts
      Merci pour cette astuce (que je découvre quelques jours après sa création grin )