[pmwiki-users-fr] récupérer dans une page des variables des pages d'une catégorie

Petko Yotov 5ko at 5ko.fr
Jeu 1 Aou 01:15:20 PDT 2024


On 31/07/2024 14:34, ooioo wrote:
> J'ai un ensemble de pages décrivant des randonnées.
> Ces pages contiennent des variables contenant la date de la randonnée
> et les coordonnées du point de départ de cette randonnée, par
> exemple :
> [[!Balades]](:Date:2024/07/11:)(:Coord:43.23018,5.43704:)
> 
> Je voudrais afficher une carte avec des marqueurs montrant tous ces
> points.
> Je pensais écrire un bout de code html/javascript avec Openlayers et
> le plugin IGN pour afficher les cartes de l'IGN.
> J'ai donc besoin d'appeler ce code en passant dans l'URL les
> coordonnées de mes points, soit quelque chose comme :
> 
> https://xxxx/wikigdd/visumarqueurs/visu.html?coord=43.23018,5.43704,43.25018,5.33704

Voici une fonction qui ajoute une MarkupExpression {(joinvars)} capable 
de trouver les pages dans une catégorie, d'en extraire une variable 
spécifiée et les joindre avec un séparateur défini.

Dans local/config.php:

   $MarkupExpr['joinvars'] = 'MyJoinVars($pagename, $params)';
   function MyJoinVars($pagename, $params) {
     $opt = ParseArgs($params);
     $list = $vars = [];
     FPLTemplatePageList($pagename, $list, $opt);
     foreach($list as $pn) {
       $var = trim(PageTextVar($pn, $opt['var']));
       if(strlen($var)) $vars[] = $var;
     }
     return implode(strval(@$opt['sep']), $vars);
   }

Dans une page wiki:

   {(joinvars link=Category.Balades var=Coord sep=";")}

Ceci affiche dans la page:

   
52.51551,13.36591;51.50541,-0.07536;48.85638,2.34588;41.90446,12.47483;48.20649,16.36264

Donc on pourrait le placer dans un lien:

   https://xxxx/yyyy/?q={(joinvars...)}

Petko



Plus d'informations sur la liste de diffusion pmwiki-users-fr