[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