LSGeo dans Vae Soli!
Cette nouvelle classe est utilisée dans la version beta de notre utilitaire
d'analyse de page (The Analyzer,v0.3.0000).
Nous avons généralisé l'utilisation de cette petite classe pour l'insérer
directement dans la classe LSPage. Désormais,
LSPage pourra extraire des paramètres supplémentaires du
géorama (ce que nous codons souvent dans un fichier defaults.xml) :
<LSGeoLat>…</LSGeoLat><LSGeoLong>…</LSGeoLong><LSGeoPlace>…</LSGeoPlace><LSGeoRegion>…</LSGeoRegion>
À titre d'exemple, voyez l'extrait de notre fichier defaults.xml qui fait usage de ces nouveaux
paramètres :
<Settings landscape="www.latosensu.be;www.latosensu.org;www.latosensu.net">
<LSDoctype><![CDATA[html5]]></LSDoctype>
<LSXMLSitemap><![CDATA[/sitemap-ls.xml]]></LSXMLSitemap>
<LSGeoLat>50.385200</LSGeoLat>
<LSGeoLong>4.660500</LSGeoLong>
<LSGeoPlace><![CDATA[Vitrival, Namur, Belgium]]></LSGeoPlace>
<LSGeoRegion><![CDATA[BE-WNA]]></LSGeoRegion>
</Settings>
Le fichier meta.xml, le fichier qui contient les
metas nécessaires au site et qui est mentionné comme île dans le géorama,
possède les lignes suivantes :
<meta name="geo.position" content="{{{LATITUDE}}};{{{LONGITUDE}}}" />
<meta name="geo.placename" content="{{{PLACENAME}}}" />
<meta name="geo.region" content="{{{REGION}}}" />
Les parties du meta.xml qui nous intéressent sont
en fait des substitutions (une fonction assez unique de Vae Soli!) ce qui veut
dire que "{{{LATITUDE}}}",
"{{{LONGITUDE}}}",
"{{{PLACENAME}}}" et
"{{{REGION}}}" seront, avant que d'être envoyés
au browser du visiteur substitués par des valeurs de remplacement. Lesquelles ?
Celles définies dans le fichier substitutions pardi ! Ah bon ? Et comment
puis-je indiquer que Vae Soli! doit utiliser un tel fichier de substitutions ?
Par le fameux fichier defaults.xml :
<LSSubstitutions><![CDATA[/web-config/substitutions.xml]]></LSSubstitutions>
… et dans ledit fichier substitutions.xml
nous avons défini les substitutions dont nous avons besoin :
<Data key="{{{LATITUDE}}}" active="yes" editable="yes">
<Value><![CDATA[.php=return $GLOBALS['oApp']->oPage->oGeo->Render( false,array( 'lat' => true ) );]]></Value>
</Data>
<Data key="{{{LONGITUDE}}}" active="yes" editable="yes">
<Value><![CDATA[.php=return $GLOBALS['oApp']->oPage->oGeo->Render( false,array( 'long' => true ) );]]></Value>
</Data>
<Data key="{{{PLACENAME}}}" active="yes" editable="yes">
<Value><![CDATA[.php=return $GLOBALS['oApp']->oPage->oGeo->Render( false,array( 'place' => true ) );]]></Value>
</Data>
<Data key="{{{REGION}}}" active="yes" editable="yes">
<Value><![CDATA[.php=return $GLOBALS['oApp']->oPage->oGeo->Render( false,array( 'region' => true ) );]]></Value>
</Data>
Intéressons-nous à la première substitution, soit {{{LATITUDE}}}.
<Data key="{{{LATITUDE}}}" active="yes" editable="yes">
<Value><![CDATA[.php=return $GLOBALS['oApp']->oPage->oGeo->Render( false,array( 'lat' => true ) );]]></Value>
</Data>
Comme vous le coonstatez, il s'agit d'une expression PHP. Elle demande de
"rendre" le contenu de l'objet oGeo de la page
(oPage) sans tags HTML (c'est cela le false) et en
ne s'intéressant qu'à la latitude (array( 'lat' => true )).
Cela semble compliqué mais cela ne l'est pas tant que cela. Nous vous avons fait l'histoire de manière longue mais vous bénéficiez ainsi d'un mécanisme générique d'indication des géocoordonnées disponible sous la forme de simples substitutions. Ce texte par exemple, fait usage de cette possibilité : les simples "{{{LATITUDE}}}", "{{{LONGITUDE}}}", "{{{PLACENAME}}}" et "{{{REGION}}}" sont ainsi transformés, DIRECTEMENT, dans notre texte par "50.385200", "4.660500", "Vitrival, Namur, Belgium", et "BE-WNA" ! Vous en conviendrez, ce n'est vraiment pas difficile !