Importer et afficher des horaires

Description de la question

Comment importer correctement des horaires et les afficher dans la fiche détail ?

Status Résolu
Catégories
  • Fiche détail
  • Import
Réponse

Pour importer des horaires, ceux-ci doivent respecter le format JSON suivant :

{"Mo":"08:30-12:00,13:30-16:00","Tu":"08:30-12:00,13:30-16:00","We":"08:30-12:00","Th":'',"Fr":'',"Sa":'',"Su":''}

S'il s'agit d'un import dynamique, il suffit de mapper le champ avec "Horaires d'ouverture (format GoGoCarto)".

Dans le cas d'un import statique en CSV, c'est un peu différent :

  • le champ des horaires doit être mappé non pas avec "Horaires d'ouverture (format GoGoCarto)" mais avec un autre attribut de votre création, par exemple "Horaires" (solution temporaire, l'inconvénient est que les horaires ne sont pas éditables).
  • ce mode d'import traitant chaque donnée comme une simple chaîne de caractères, il vous faudra convertir vos horaires en objet JSON. Ceci peut être aisément fait en ajoutant dans l'onglet "Modifier les données en exécutant du code" le code PHP suivant :
foreach ($data as $key => $row) {
    $data[$key]['Horaires GoGoCarto'] = json_decode($row['Horaires GoGoCarto']);
}

où "Horaires GoGoCarto" est l'entête de la colonne des horaires dans le fichier CSV.

Vous pouvez désormais afficher vos horaires dans la fiche détail à l'aide du filtre nunjucks {{ Horaires|gogo_openhours }}.

Pour pousser la personnalisation, vous pouvez également afficher les horaires d'un jour en particulier : {{ Horaires.Mo }}

Exemple d'affichage personnalisé des horaires :

{% if Horaires %}
## Horaires d'ouverture
<div class="field field-openhours">
    <div class="row">
        <strong class="col s3 day">Lundi</strong>
        <span class="col s9 openHours {% if Horaires.Mo %} "> {{ Horaires.Mo | replace("-", " - ") | replace(",", " / ") | replace(":", " h ") }} {% else %} halfHidden">Fermé {% endif %}</span>
    </div>
    <div class="row">
        <strong class="col s3 day">Mardi</strong>
        <span class="col s9 openHours {% if Horaires.Tu %} "> {{ Horaires.Tu | replace("-", " - ") | replace(",", " / ") | replace(":", " h ") }} {% else %} halfHidden">Fermé {% endif %}</span>
    </div>
    <div class="row">
        <strong class="col s3 day">Mercredi</strong>
        <span class="col s9 openHours {% if Horaires.We %} "> {{ Horaires.We | replace("-", " - ") | replace(",", " / ") | replace(":", " h ") }} {% else %} halfHidden">Fermé {% endif %}</span>
    </div>
    <div class="row">
        <strong class="col s3 day">Jeudi</strong>
        <span class="col s9 openHours {% if Horaires.Th %} "> {{ Horaires.Th | replace("-", " - ") | replace(",", " / ") | replace(":", " h ") }} {% else %} halfHidden">Fermé {% endif %}</span>
    </div>
    <div class="row">
        <strong class="col s3 day">Vendredi</strong>
        <span class="col s9 openHours {% if Horaires.Fr %} "> {{ Horaires.Fr | replace("-", " - ") | replace(",", " / ") | replace(":", " h ") }} {% else %} halfHidden">Fermé {% endif %}</span>
    </div>
    <div class="row">
        <strong class="col s3 day">Samedi</strong>
        <span class="col s9 openHours {% if Horaires.Sa %} "> {{ Horaires.Sa | replace("-", " - ") | replace(",", " / ") | replace(":", " h ") }} {% else %} halfHidden">Fermé {% endif %}</span>
    </div>
    <div class="row">
        <strong class="col s3 day">Dimanche</strong>
        <span class="col s9 openHours {% if Horaires.Su %} "> {{ Horaires.Su | replace("-", " - ") | replace(",", " / ") | replace(":", " h ") }} {% else %} halfHidden">Fermé {% endif %}</span>
    </div>
</div>
{% endif %}