Certains des exemples que nous fournissons ci-dessous ne sont pas complets. D'emblée, nous nous en excusons, bien sûr. Mais pourquoi diable sont-ils incomplets ?
Ils sont incomplets parce que nous y travaillons en ce moment et que plutôt que de vous faire patienter jusqu'à ce qu'ils soient tous terminés, nous avons préféré vous les livrer dans l'état où ils se trouvent pour que vous puissiez vous faire une idée de ce qu'ils illustrent.
Au fur et à mesure de notre avancement, nous ferons les mises à jour idoines. Nous espérons résorber notre retard au plus vite.
title
, le paramètre heading
, le paramètre text
, le paramètre xsl
, LSRegionSubtag, Language Switchers, LSFormEnroll, LSContentsLegal, sitemap, substitution de propriétés, LSSourceFile et LSContentsSourceFile, LSContentsComments, LSContentsCharter, ... (05/11/2013)onload
et onunload
d'une page, Page settings, ... (22/09/2013)LSGeo
dans Vae Soli! 2012-06-20Depuis l'opus "5.0.0003"
Cette nouvelle classe est utilisée dans la version beta de notre utilitaire
d'analyse de page (The Page Anamyzer, 0.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 subsitutions. 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 !
LSPublication
2012-06-30Depuis l'opus "5.0.0003"
Il est désormais possible d'indiquer un referer sur les
pages (<Land>...</Land>
), les archipels
(<Archipelago></Archipelago>
) et les îles
(<Island></Island>
).
Ceci est dû à l'ajout d'un filtre supplémentaire dans la classe
LSPublication
. Un filtre, dans cette classe, c'est tout
simplement un test qui doit être effectué et dont la valeur de retour doit
être un booléen 'vrai' (true
). Par exemple, vous souhaitez
qu'une page ne puisse être visualisée que par les personnes faisant partie
d'un groupe bien déterminé. Voilà un filtre typique ! Autre
exemple : vous souhaitez qu'une île ne soit visualisée que par les
visiteurs partageant une même adresse IP. Ou alors vous souhaitez que la
page ne soit visible qu'à partir d'une date précise. Voilà autant de
filtres !
Nous venons d'ajouter le filtre referer
qui vous permet de
spécifier si une page (<Land>...</Land>
), un
archipel (<Archipelago></Archipelago>
) ou une île
(<Island></Island>
) doit s'afficher si le referer
fait partie d'une liste donnée.
<Land id="/contact.php" group="Utilitaires" inherit="public" referer="latosensu.be;latosensu.net;latosensu.org" href="%geo-path%/contact.pdef.xml"> <Sitemap priority="0.2" frequency="monthly" /> </Land>
Que nous apprend la définition de cette page ? Elle nous enseigne que pour être visualisée, le visiteur DOIT avoir été envoyé par un des sites suivants : latosensu.be;latosensu.net;latosensu.org.
<Land id="/contact.php" group="Utilitaires" inherit="public" referer="!pilou.com;!spammers.com;" href="%geo-path%/contact.pdef.xml"> <Sitemap priority="0.2" frequency="monthly" /> </Land>
Cette fois le visiteur PEUT PAS avoir été envoyé par un des sites suivants : pilou.com ou spammers.com.
LSFootnotes
2012-07-04Depuis l'opus "5.0.0003"
Nous avons déjà décrit comment insérer des notes de bas de page. C'est une fonctionnalité qui date de la version 2.5.0017 (et publié le 17 février 2010). Ce qui est nouveau c'est la possibilité d'insérer une abréviation comme étant la source d'une note de bas de page. Voici comment :
<p> Apportons un peu de précision sans pour autant aller dans le tout détail. RDFA est une norme conforme au <?php $oNotes = new LSFootnotes(); $oAbbrRDF = new LSTag('abbr'); $oAbbrRDF->szText = 'RDF'; $oAbbrRDF->szTitle = "Resource Description Framework"; $this->EchoOB( $oNotes->Add( $oAbbrRDF ) ); ?>. L'idée du RDFa est de donner un sens au contenu des documents, un sens compris par les hommes et par les machines. </p>
Cela peut paraître verbeux mais c'est au contraire très efficace : vous créez une abbréviation ET une note de bas de page. L'insertion des notes de bas de page (c'est-à-dire l'insertion de la liste) se fait comme d'habitude de la manière suivante :
<section class="footnotes"> <h3>Notes de bas de page</h3> <?php $this->EchoOB( $oNotes->Render() ); ?> </section>
LSSourceFile
2012-07-05Depuis l'opus "1.1.0515"
Voilà longtemps que cette classe est disponible dans Vae Soli!. Elle permet d'inclure le contenu d'un fichier, considéré comme fichier source, dans une page. Voici un exemple d'une telle utilisation (exemple réel extrait du site de Lato Sensu Management - nouveau didacticiel HTML5).
$oHTML5_0001 = new LSSourceFile( 'html5-0001.html',true,$this ); $oHTML5_0001->Read(); echo '<pre>' . $oHTML5_0001->Render() . '</pre>'; $oHTML5Reset = new LSSourceFile( 'reset.css',true,$this ); $oHTML5Reset->Read(); echo '<pre>' . $oHTML5Reset->Render() . '</pre>';
LSSourceFile
permet d'inclure n'importe quel type de fichier
texte. Mais il est également possible d'inclure des fichiers de code source
PHP et dès lors d'utiliser la coloration syntaxique. En voici un exemple :
$oFile = new LSSourceFile( 'LSStrings.functions.php',true,null ); $oFile->bSyntaxColoring = true; $oFile->Read(); echo '<pre>' . $oFile->Render() . '</pre>';
Depuis l'opus "5.0.0003"
Vous connaissez le mécanisme 'onfail' du géorama. Par ce mécanisme vous pouvez brancher l'exécution de votre site vers une page bien spécifique si les conditions de rendering de la page ne sont pas remplies. Ce mécanisme est intimement lié à la conditionnalité des pages. Prenons un exemple bien précis. Voici une page fictive définie dans le géorama :
<Land id="/index.php" group="main" creationdate="20081103" inherit="public" condition=".php= return false;" onfail="/legal.php" href="%geo-path%/index.pdef.xml"> </Land>
On voit que la condition, mentionnée comme une expression PHP, retourne
false dans tous les cas (return false
). Et donc dans tous les
cas, il faut brancher l'exécution vers la page /legal.php
.
Voilà un mécanisme en place depuis longtemps au sein de Vae Soli!.
La petite nouveauté de la version 5.0.0003
du framework c'est
de pouvoir mentionner un code d'erreur (code de retour HTTP). Très utile
lorsque vous souhaitez, par exemple, indiquer qu'un
service est temporairement non disponible. Voilà comment faire cela en
Vae Soli!:
<Land id="/index.php" group="main" creationdate="20081103" inherit="public" condition=".php= return false;" onfail="503:Service Unavailable" href="%geo-path%/index.pdef.xml"> </Land>
Dans ce cas, Vae Soli! génèrera une page dont les HTTP headers font usage du code de retour 503 en indiquant clairement que le service est non- disponible.
Imaginons maintenant qu'une page est désormais indisponible parce que vous
l'avez bougée à un autre endroit. C'est la norme de pouvoir indiquer aux
moteurs de recherche que ladite page a été déplacée à un autre endroit. Il
faut utiliser le code 301
(Moved
Permanently). Rien de plus simple grâce à notre petite fonctionnalité.
<Land id="/index.php" group="main" creationdate="20081103" inherit="public" condition=".php= return false;" onfail="301:Moved permanently {*header('Location: http://www.latosensu.be/nouvelle-page.php')*}" href="%geo-path%/index.pdef.xml"> </Land>
Comme il faut indiquer l'endroit auquel les moteurs de recherche doivent se
rendre, vous pouvez alors utiliser le pattern
{*header(…)*}
pour spécifier ce que vous souhaitez, ici,
l'adresse à laquelle se rendre, cad
http://www.latosensu.be/nouvelle-page.php
dans notre cas. Voilà
de quoi gérer simplement l'ensemble de vos redirections.