[pmwiki-users-fr] récupérer dans une page des variables des pages d'une catégorie
ooioo
ooioo at free.fr
Jeu 1 Aou 05:36:31 PDT 2024
Merci beaucoup Petko,
ça marche parfaitement, en ignorant les pages où la variable Coord n'est
pas encore définie.
J'ai tout ce qu'il faut pour continuer !
Pierre.
Le 01/08/2024 à 10:15, Petko Yotov a écrit :
> 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