Action {{bazarliste}} : afficher les données d'autres YesWiki
L'action {{bazarliste}} permet d'afficher les données des formulaires.
Il est possible d'afficher les données d'autres YesWiki en même temps que les données locales.
Cette fiche de documentation correspond à une action en cours de développement uniquement utilisable avec la version doryphore à partir de 2021-05-12.
Cette fiche de documentation correspond à une action en cours de développement uniquement utilisable avec la version doryphore à partir de 2021-05-12.
Il est possible d'afficher les données d'un autre site YesWiki.
1. Mettre à jour le YesWiki et le distant pour avoir la version Doryphore après 2021-05-12-24
2. Définir l'action
{{bazarliste id="1" template="map" ...}}
3. Identifier l'adresse des YesWiki distants et les formulaires recherchés. Ex:
https://www.example.com/?PagePrincipale
https://www.example.com/trombi2/?PagePrincipale
5. remplacer pour l'action bazarliste id par
id="1,https://www.example.com/?PagePrincipale|4,https://www.example.com/trombi2/?PagePrincipale|5,6"
6. Sauver la page et enjoy
Explications:
- chaque formulaire est séparé par une virgule
- un formulaire local est uniquement représenté par un nombre. Dans l'exemple, nous avons les formulaires 1 et 6
- un formulaire distant est représenté par son url suivi de
|
suivi du numéro de son formulaire. Dans l'exemple, nous avons deux formulaires distants. - S'il faut plusieurs formulaires distants d'un même YesWiki, il faut à chaque fois répéter l'url devant
|
Rafraichir les données locales:
Il y a un système de cache des requêtes externes dont la durée est paramètrable par les variables baz_external_service_time_cache_for_entries et baz_external_service_time_cache_for_forms (voir config.yaml). Pour forcer un rafraîchissement des données, il faut être connecter et ajouter à la fin de l'url :
&refresh=1
Pour aller plus loin, et avoir des couleur différentes par formulaire (entre données du formulaire local et distants):
Sur la base du fonctionnement colorfield="id_typeannonce" (voir ActionBazarliste section color), definir un ID pour le formulaire externe n'existant pas en local (999 par exemple) de la manière suivante
id="5,http://www.exemple.com/?PagePincipale|1->999" color="green=5, blue=999"
NB : Dans l'exemple ci-dessus l'id du formulaire local est 5 et celui du formulaire distant 1
Pour aller plus loin, pour les personnes connaissant les fields:
- pour configurer l'affichage des données sur le site local, il faut plutôt créer un formulaire qui ressemble au formulaire distant (même nom de champs) mais avec vos adaptations
- noter le numéro de ce formulaire en local (A pour l'exemple)
- noter le numéro du formulaire distant (B pour l'exemple)
- entrer dans id ceci
id="http://www.exemple.com/?PagePincipale|B->A"
- Tout se joue avec l'association de B vers A.
Pour lier à un template custom fiche-x.tpl.html:
x étant le numéro du formulaire local concerné
- 1. dupliquer le formulaire distant sur le YesWiki local en utilisant la fonctionnalité d'importation disponible en bas de la page BazaR
- 2. copier le fichier fiche-x.tpl.html dans le dossier local custom/templates/bazar/ avec le nom fiche-y.tpl.html où y est le numéro du formulaire dupliqué en local
- 3. modifier le formulaire y en local en mode code en remplaçant, z étant le numéro du formulaire distant
-
liste***...***...*** *** ***...
externalselectlistfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***liste***...
-
listefiche***...***...*** *** ***...
externalselectentryfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***listefiche***...
-
listefiches***...***...*** *** ***...
externallinkedentryfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***listefiches***...
-
listefichesliees***...***...*** *** ***...
externallinkedentryfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***listefichesliees***...
-
checkbox***...***...*** *** ***...
externalcheckboxlistfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***checkbox***...
-
checkboxfiche***...***...*** *** ***...
externalcheckboxentryfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***checkboxfiche***...
-
radio***...***...*** *** ***...
externalradiolistfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***radio***...
-
tags***...***...*** *** ***...
externaltagsfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***tags***...
-
fichier***...***...*** *** ***...
externalfilefield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***fichier***...
-
image***...***...*** *** ***...
externalimagefield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***image***...
-
Dans l'exemple:
- le formulaire concerné est
https://www.example.com|z
- la formule entrée dans le paramètre id de
{{bazarliste id="}}
esthttps://www.example.com|z->y
Si dans votre formulaire local vous voulez un comportement correct pour les liens, inspirez-vous des externalfields, comme par exemple :
- pour les urls vers les fiches
$fiche['url']
- pour les urls vers les fiches avec un handler
$fiche['url'] . '/pdf'
- pour savoir si la fiche est externe
isset($fiche['external-data'])
- pour avoir l'url de base du site distant pour les fiches externes
$fiche['external-data']['baseUrl']
documentation doryphore