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.

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" ...}}
pour correspondre au besoin (documentation ou utiliser le bouton composants lors de la modification d'une page)
3. Identifier l'adresse des YesWiki distants et les formulaires recherchés. Ex:
https://www.example.com/?PagePrincipale
formulaire 4 et
https://www.example.com/trombi2/?PagePrincipale
formulaire 5
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***...***...*** *** ***...
      
      par
      externalselectlistfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***liste***...
      
    • listefiche***...***...*** *** ***...
      
      par
      externalselectentryfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***listefiche***...
      
    • listefiches***...***...*** *** ***...
      
      par
      externallinkedentryfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***listefiches***...
      
    • listefichesliees***...***...*** *** ***...
      
      par
      externallinkedentryfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***listefichesliees***...
      
    • checkbox***...***...*** *** ***...
      
      par
      externalcheckboxlistfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***checkbox***...
      
    • checkboxfiche***...***...*** *** ***...
      
      par
      externalcheckboxentryfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***checkboxfiche***...
      
    • radio***...***...*** *** ***...
      
      par
      externalradiolistfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***radio***...
      
    • tags***...***...*** *** ***...
      
      par
      externaltagsfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***tags***...
      
    • fichier***...***...*** *** ***...
      
      par
      externalfilefield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***fichier***...
      
    • image***...***...*** *** ***...
      
      par
      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="}}
    est
    https://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