Niouzes

< Juillet 2017 >
Lu Ma Me Je Ve Sa Di
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Citation

Attention

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.

2014-08-06 à 17:05:56 par Patrick Boens

Table Of Contents

  1. Template with patterns, Swipe Simply, cahing pages for bots, … (06/08/2014)
  2. Gestion de redirections, Accept-Language, extrapolation de la langue et du pays, LSContainer et le génome, LSInput et les gènes, utilisation de LSCacheDir, création de propriétés dynamiques de LSPage dans le géorama, … (11/10/2013)
  3. Statistiques d'accès, Site Manager, prefetch, prerender, File Explorer, interactions Ajax … (17/06/2013)
  4. LSTag, LSContentsDatetime, LSContentsCountdown, LSContentsStopwatch, threshold et score, configuration vhosts Apache, génération automatique, LSVStrings.js, LSVDates.js, tracing sur XML des îles, Free User Input Zones, multiple credentials, cookie de dernière visite, LSInput et datalist (10/04/2013)
  5. Tour d'horizon des filtres (23/09/2013)
  6. Messages de service (07/01/2014)
  7. Accès aux propriétés des îles, halt.sem, cookies positionnés dans les îles, filtre 'browsertype', contenus alternatifs, expressions PHP sur les href, gestion de l'expiration, filtre de visite, ... (22/09/2013)
  8. Messages de service, ... (30/10/2012)
  9. Config Apache, LSInput, LSForm, ... (13/03/2013)
  10. LSContentsBooking, Browser Danger Rating, User Agent vides (non spécifiés), filtres sur les paramètres, LSBrowser, ... (11/06/2013)
  11. LSTag('img'), auto pages, nouveaux filtres, audio/video, ... (02/11/2013)
  12. LSGeo, LSFootnotes, LSSourceFile, LSPublication, onfail avec codes de retour HTTP (301, 302, ...), ... (27/06/2013)
  13. LSCache, microformat (lupdate), multicontent, LSContentsTagCloud, LSContentsImageGallery, HTML5 (input zones), ... (15/09/2013)
  14. Check Spamhaus, vos settings dans le géorama, LSContentsMicronews, Switch dans le géorama, LSCursor: des records dans les records, ... (04/12/2012)
  15. Campagnes de pub, TODO list (04/12/2012)
  16. Debugging de page, LSTimeline, le fichier de géorama, LSTag, Glossaire IT, Named colors, Codes langue, ... (23/03/2013)
  17. LSCursor: une revue complète de la classe (12/03/2013)
  18. LSForm, LSInput, … (28/01/2013)
  19. LSContentsBusinessCoordinates, redirection de pages, LSTwitterPost, LSContentsTwitterFollowers, LSContentsShare, calendrier, LSContentsContactForm, LSContentsReview et LSReview, droits sur une page, URLs canoniques, LSPaymentOptions et LSContentsPaymentOptions, Offres d'emploi, LSContentsImageTransition, ... (20/09/2013)
  20. Galerie avec vignettes, RSS, partage d'offres d'emploi, partage de citations, diaporama dewslider, horloge flash, footnotes, ... (01/10/2012)
  21. îles préfixées de texte standard, le paramètre 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)
  22. LSContentsLoginLogoff, Utilisation de && dans les conditions des îles, LSWidgetOpeningHours et LSContentsBusinessOpeningHours, inclusion de snippets, image bouton de login/logoff, LSContentsBusinessCoordinates, commentaires dans les îles, doctypes, LSImageTrans, calcul de dates, LSWidgetEmailForm, LSContentsMedia, LSContentsIFrame, onload et onunload d'une page, Page settings, ... (22/09/2013)
  23. Dates et heures de publication et/ou d'expiration, PHP expressions, Blocs XHTML avant et après une île, suite de pages, îles valables par domaine, substitutions, envoyer des fichiers au serveur, templates dynamiques, contenus distants, contenus générés en Java, LSCalculator, Gérer des signets (bookmarks), Pages conditionnelles, îles conditionnelles, désactivations, LSContentsMedia, taille du géorama, partager une page entre sites, LSXHtmlImg, île dans la section …, textes latins, Dublin Core, Utilisation de caches, corrections automatiques, In-Place Editing, LSContentsCitation (03/11/2013)

Tour d'horizon des filtres sur pages, archipels et îles (2013-02-10)

Une série de filtres vous permettent de contrôler l'affichage de contenus divers. Par exemple, vous pouvez décider que tel contenu n'est visible qu'à partur d'une date donnée, et qu'il ne le sera plus à une autre date donnée; autre exemple, vous pouvez décider qu'un contenu n'est visible que pour des utilisateurs faisant partie d'un groupe donné d'utilisateurs. Il existe ainsi de nombreux filtres qui tous peuvent d'additionner (les critères sont cumulatifs).

Sauf indication contraire, les filtres sont actifs sur les pages, les îles et les archipels. Ceci est un comportement essentiel de Vae Soli! qui est enclenché par le biais d'un seul et même objet LSPublication.

Lorsque l'objet LSPublication agit sur un noeud de type <Land>…</Land> (une page), les propriétés des classes parent sont examinées (application de classes de pages définies dans le géaorama). C'est également une fonctionnalité essentielle de Vae Soli! qui par exemple permet de définir une classe "intranet" pour différentes pages qui nécessitent un login. Dans ce cas, il suffira de définir un filtre "memberof" sur la classe et toutes les pages basées sur ladite classe héritent de ce filtre.

L'utilisation de filtres n'est pas prise en compte pour le calcul des caches (cache sur île, cache sur archipel ou cache sur page). Soyez dès lors prudent dans l'application desdits filtres et des caches.

Grâce à Vae Soli!, vous disposez de 29 filtres différents pour décider d'afficher ou non vos pages, archipels et îles. Gageons que vous y trouverez votre bonheur.

Filtre de publication et expiration

<Island id="promo" active="yes" xhtml="yes"
    pubdate="20130210200000" expiry="20130210235959">
    <div>
        <p>Ce contenu est visible du 10 février 2013, 20:00
        au 10 février 2013, 23:59:59</p>
    </div>
</Island>

ou

<Island id="promo" active="yes" xhtml="yes"
    pubdate="20:00" expiry="23:59">
    <div>
        <p>Ce contenu est visible chaque jour de
        20:00 à 23:59:</p>
    </div>
</Island>

Filtre d'appartenance à un groupe

Pour que ce filtre fonctionne, il faut bien évidemment disposer d'une gestion d'utilisateurs. Un utilisateur peut alors appartenir à un groupe donné d'utilisateurs, le groupe "admin" par exemple.

<Island id="manager" active="yes" xhtml="yes"
    memberof="admin">
    <div>
        <p>Ce contenu est visible si vous appartenez
        au groupe des administrateurs</p>
    </div>
</Island>

Filtre sur le "referer"

<Land id="/complaints.php"
      lupdate="auto"
      inherit="public"
      href="%geo-path%/complaints.pdef"
      referer="/techsupp.php">
    <Sitemap priority="0.1" frequency="monthly" />
</Land>

Filtre sur le port

Le filtre port permet de n'afficher les éléments que si le bon numéro de port est mentionné.

Voilà qui est éminemment pratique, par exemple, pour permettre de tester une partie de votre site car en effet il suffit de mentionner dans l'URL le port à utiliser et le contenu ne se montrera QUE si le port en question est utilisé (bien entendu, il faudra aussi vous arranger pour que votre serveur web, Apache par exemple, écoute sur le port en question et que votre virtual host soit correctement configuré).

Exemple :

<Island id="test" active="yes" xhtml="yes" port="8000">
    <p>SALUT</p>
</Island>

Dans l'exemple ci-dessus, le petit mot "SALUT" n'apparaîtra QUE si le port utilisé est "8000". Vous pouvez donc déduire de ceci que vous pouvez créer des contenus qui ne seront visibles qu'à condition de mentionner le bon port. Il vous suffira dès lors de mentionner – mais cela ne reste qu'un exemple d'utilisation – le port à utiliser dans les requêtes pour que votre équipe de test puisse tester la nouvelle version de votre page.

Pour que l'exemple soit complet, voici la configuration Apache nécessaire :

Dans httpd.conf

Listen 80
Listen 8000
Dans httpd-vhosts.conf (fichier de définition des vhosts)

<VirtualHost *:80 *:8000>
    DocumentRoot c:/websites/mydomain/www/httpdocs
    ServerName mydomain.com
    ServerAlias www.mydomain.com
</VirtualHost>

Syntaxes possibles

  • Egalité : port="value" (e.g. port="8000")
  • Non égalité : port="!value" ou port="!=value"(e.g. port="!8000")
  • Plus grand que : port="&gt;value" (e.g. port="&gt;80") (le caractère '>' n'est pas acceptable !)
  • Plus grand ou égal : port="&gt;=value" (e.g. port="&gt;=80") (le caractère '>' n'est pas acceptable !)
  • Plus petit que : port="&lt;value" (e.g. port="&lt;80") (le caractère '>' n'est pas acceptable !)
  • Plus petit ou égal : port="&lt;=value" (e.g. port="&lt;=80") (le caractère '>' n'est pas acceptable !)
  • Valeur dans une liste de valeurs : port="$value[,...]" (e.g. port="$80,8000")

Le filtre de publication connectTime

Le filtre connectTime permet de s'assurer qu'une personne est connectée depuis un certain temps (au moins, ou au plus). C'est évidemment une fonctionnalité qui intéresse les sites extrêmement dynamiques. Voici une île XHTML qui fait usage de cette nouvelle possibilité.

<Island id="contest" active="yes" xhtml="yes" connectTime="600">
    <p>Any visitor that stays more than 10 minutes on our site can
       take part to our <a href="/contest.php">contest</a>.</p>
</Island>

L'attribut connectTime peut être exprimé de 4 manières différentes indiquant ainsi le type d'opération souhaité :+600, +=600, -600 ou -=600 ou 600 indique le nombre de secondes.

  • - : le temps de connexion doit être inférieur à celui indiqué
  • -= : le temps de connexion doit être inférieur ou égal à celui indiqué
  • + : le temps de connexion doit être supérieur à celui indiqué
  • += : le temps de connexion doit être supérieur ou égal à celui indiqué (opération par défaut)

Si vous n'avez pas indiqué un type d'opération (+, +=, - ou -=, alors c'est comme si vous aviez indiqué += (opération par défaut).

Nous avons été obligés d'en passer par - et + en lieu et place de < et > pour éviter les conflits de tagging XML.

Le filtre de publication loginTime

Ce qui est vrai avec le temps de connexion (connectTime) est également vrai avec le temps de login (loginTime). Nous appliquons strictement la même syntaxe. Voici un exemple qui parlera de lui-même :

<Island id="contest" active="yes" xhtml="yes" loginTime="600">
    <p>A member that stays more than 10 minutes on our site can
       take part to our <a href="/contest.php">contest</a>.</p>
</Island>

Les filtres day, month, week, date et/ou year

Imaginons par exemple que vous souhaitiez qu'une île ne soit affichée que les lundis, mercredis et vendredis. Voici comment réaliser la chose :

<Island id="test" active="yes" xhtml="yes" day="1;3;5">
    <p>JOUR IMPAIR: lundi, mercredi ou vendredi</p>
</Island>

Nous avons utilisé le filtre day et avons donné les jours de la semaine qui nous conviennent : 1 pour les lundis, 3 pour les mercredis et 5 pour les vendredis.

Le même raisonnement s'applique aux mois, aux semaines et aux années. Voici des exemples de chaque cas :

<Island id="test" active="yes" xhtml="yes" month="1;3;5;7;9;11">
    <p>MOIS IMPAIR</p>
</Island>
<Island id="test" active="yes" xhtml="yes" week="30-50">
    <p>BONNE SEMAINE: de la semaine 30 à la semaine 50</p>
</Island>

Avec une petite particularité liée à notre exemple qui spécifie une fourchette de semaines : de la 30ème à la 50ème semaine !

<Island id="test" active="yes" xhtml="yes" year="2000-2010;2012">
    <p>C'EST LA BONNE ANNEE: de 2000 à 2010 et aussi 2012</p>
</Island>

Et avec une nouvelle particularité liée à notre exemple qui spécifie une fourchette d'années et l'année 2012 en sus : de 2000 à 2010, ou 2012 !

Comme les exemples le laissent supposer, les fouchettes ET les dates précises sont possibles dans le même filtre MAIS si vous utilisez les deux en même temps, les fourchettes DOIVENT TOUJOURS PRÉCÉDER les dates (et vous ne pouvez utiliser qu'une seule fourchette). Par exemple day="1-3;5;7" est valable mais pas day="5;7;1- 3" !

À présent, voici un exemple avec le filtre date qui correspond au jour du mois, donc a priori avec des valeurs de 1 à 31.

<Island id="test" active="yes" xhtml="yes" date="15;eom">
    <p>Seulement le 15 et le jour de fin de mois</p>
</Island>

Nous avons pensé au jour de fin de mois, jour variable : parfois 30, parfois 31, parfois 28 et même parfois 29. Ce jour vous le coderez avec la valeur "eom".

NOTA BENE : ces cinq filtres sont évidemment cumulables (comme le sont d'ailleurs tous les filtres) ! Ainsi, l'île suivante est affichée les lundis et jeudis de septembre à décembre :

<Island id="test" active="yes" xhtml="yes" day="1;4" month="9-12">
    <p style="font-size:5em;color:red;font-weight:bold;">SALUT TOI</p>
</Island>

Les filtres get, post, cookie et server

Souhaitez-vous n'activer une île QUE si un paramètre de l'URL vaut une certaine valeur ? Rien de plus simple : il vous suffit de définir le filtre get (par analogie à $_GET). Exemple :

<Island id="warning" xhtml="yes" get="warning=on">
    <h2 style="color:#600;">Attention</h2>
    <p style="color:#900;">
        Certains des exemples que nous fournissons ci-dessous ne
        sont pas complets. D'emblée, nous nous en excusons, bien
        sûr.
    </p>
</Island>

Il est possible de mentionner plusieurs filtres get avec la syntaxe suivante : get="var1=value;var2=value;var3...". Voici un exemple où $_GET['warning'] doit être égal à on et $_GET['id'] doit être égal à 18 :

<Island id="warning" xhtml="yes" get="warning=on;id=18">
    <h2 style="color:#600;">Attention</h2>
    <p style="color:#900;">
        Certains des exemples que nous fournissons ci-dessous ne
        sont pas complets. D'emblée, nous nous en excusons, bien
        sûr.
    </p>
</Island>

Si vous souhaitez tout simplement tester l'existence de la variable $_GET, utilisez la syntaxe suivante : get="var". Voici par exemple comment tester la présence de la variable $_GET['warning'] :

<Island id="warning" xhtml="yes" get="warning">
    <h2 style="color:#600;">Attention</h2>
    <p style="color:#900;">
        Certains des exemples que nous fournissons ci-dessous ne
        sont pas complets. D'emblée, nous nous en excusons, bien
        sûr.
    </p>
</Island>

Si vous avez compris comment fonctionne le filtre get, alors vous n'aurez aucun mal avec les filtres post, cookie et server : ils sont similaires en tous points, sauf qu'ils butinent du côté du $_POST, du $_COOKIE, ou $_SERVER ! Exemple :

<Island id="warning" xhtml="yes" post="warning=true">
    <h2 style="color:#600;">Attention</h2>
    <p style="color:#900;">
        Certains des exemples que nous fournissons ci-dessous ne
        sont pas complets. D'emblée, nous nous en excusons, bien
        sûr.
    </p>
</Island>

Résumé des syntaxes possibles

  • Egalité : filtre="var=value" (e.g. get="warning=on")
  • Non égalité : filtre="var!=value" (e.g. get="warning!=on")
  • Plus grand que : filtre="var&gt;value" (e.g. get="warning&gt;4") (le caractère '>' n'est pas acceptable !)
  • Plus grand ou égal : filtre="var&gt;=value" (e.g. get="warning&gt;=on") (le caractère '>' n'est pas acceptable !)
  • Plus petit que : filtre="var&lt;value" (e.g. get="warning&lt;4") (le caractère '<' n'est pas acceptable !)
  • Plus petit ou égal : filtre="var&lt;=value" (e.g. get="warning&lt;=on") (le caractère '<' n'est pas acceptable !)
  • Valeur dans une liste de valeurs : filtre="var$value1,value2[,...]" (e.g. get="warning$on,true,yes")
  • Existence : filtre="var" (e.g. get="warning")
  • Non existence : filtre="!var" (e.g. get="!warning")

… mais songez également aux contenus alternatifs !

Revenons un instant à la notion de paramètre comme filtre (get=…). Comme indiqué, vous pouvez activer une île spécifique si le paramètre a la bonne valeur. Par contre, vous pouvez également vous baser sur la valeur du paramètre dans la recherche du bon contenu (paramètres storage ou alt-storagede l'île) (ceci n'étant qu'un rappel de l'utilisation des contenus alternatifs). Prenez l'exemple suivant :

<Land id="/interclub.php"
      group="{main}"
      inherit="public">
    <Description title="Interclubs" h1="Interclubs" lang="en;fr;nl">
        <ExtendedDesc><![CDATA[Interclubs]]></ExtendedDesc>
    </Description>

    <Defaults>
        <Settings>
            <!-- Overwrites the default settings of a page -->
            <LSGuid><![CDATA[CS-6c55ca56-8031-49b4-87e7-d2d0a897d64e]]></LSGuid>
            <LSKeyword><![CDATA[interclubs]]></LSKeyword>
            <LSExpirationHeader><![CDATA[access plus 2 days]]></LSExpirationHeader>
        </Settings>
    </Defaults>

    <Contents id="contents">
        <Archipelago id="content" active="yes" category="Q-body">
            <Island id="contents" active="yes" class="LSContents">
                <role-mapping role="editor" groups="%editors%" />
                <param name="storage"><![CDATA[%islands%/{page->id}-{get=filter}.php]]></param>
                <param name="alt-storage"><![CDATA[%islands%/{page->id}.php]]></param>
            </Island>
        </Archipelago>
    </Contents>
    <Sitemap priority="0.1" frequency="monthly" />
</Land>

Que nous enseigne cet exemple ? Il nous apprend que nous pouvons indiquer un storage dont le nom est variable en fonction de la valeur du paramètre $_GET['filter']. Dans le cas où la page appelée est "http://www.casteleynsquash.com/interclub.php?filter=eredivisie women", Vae Soli! cherchera un contenu dont le nom est "%islands%/interclub-eredivisie women.php" (quelle que soit la valeur de %islands%, simple variable du géorama) : "{page->id}" étant remplacé par "interclubs" et "{get=filter}" par "eredivisie women". Par contre, si ce storage "%islands%/interclub-eredivisie women.php" n'était pas trouvé, alors on s'en remettrait en storage alternatif au fichier "%islands%/interclub.php".

Quelques exemples choisis

<Island id="warning" xhtml="yes" post="warning$true,on,yes">
    <h2 style="color:#600;">Attention</h2>
    <p style="color:#900;">
        Certains des exemples que nous fournissons ci-dessous ne
        sont pas complets. D'emblée, nous nous en excusons, bien
        sûr.
    </p>
</Island>
<Island id="warning" xhtml="yes" cookie="last-visit&lt;20120501">
    <p style="color:#900;">
        Nous sommes heureux de vous revoir !
    </p>
</Island>
<Island id="warning" xhtml="yes" cookie="last-visit">
    <p style="color:#900;">
        Welcome back !
    </p>
</Island>
<Island id="warning" xhtml="yes" post="!txtDate">
    <p style="color:#900;">
        Nous rencontrons un problème avec votre formulaire car nous ne trouvons
        pas la zone Date (txtDate).
    </p>
</Island>

Filtre sur la langue

Le filtre lang permet de n'afficher une île, un archipel ou même une page QUE SI la langue courante est satisfaite par les valeurs mentionnées dans le filtre (plusieurs valeurs peuvent être mentionnés si on les sépare par , ou ;).

<Island id="frenchies" class="LSContents" lang="fr">
    <param name="storage">/islands/frenchies-message.php</param>
</Island>

Filtre device

Le filtre device est basé sur l'objet LSBrowser contenu automatiquement dans l'objet LSApplication. Grâce à ce filtre vous pouvez circonscrire vos contenus à un type de device bien spécifique. Voici comment :

<Island id="iphone-content" xhtml="yes" device="iphone">
    <p>
        Ce contenu ne sera affiché que sur iPhone.
    </p>
</Island>

Filtre model

Le filtre device est complété par le filtre model, tous deux basés sur l'objet LSBrowser contenu automatiquement dans l'objet LSApplication. Grâce à ce filtre vous pouvez circonscrire vos contenus à un type de modèle bien spécifique. Voici comment :

<Island id="samsung-content" xhtml="yes" device="samsung" model="galaxy s ii">
    <p>Ce contenu ne sera affiché que sur Samsung Galaxy S II.</p>
</Island>

Il est à noter que dans l'exemple ci-dessus, le filtre device n'est pas indispensable.

Filtre mobility

Il est possible de restreindre l'affichage d'une île à un type d'itinérance spécifique (desktop, mobile, tablet ou phone en l'état actuel de la classe LSBrowser – au 10/02/2013 15:49:19). Voici comment :

<Island id="my-island" xhtml="yes" mobility="tablet">
    <p>Ce contenu ne sera affiché que sur tablette, quelle qu'en soit la marque.</p>
</Island>

Filtre relation

Le filtre relation n'est disponible qu'avec l'utilisation d'une gestion d'utilisateurs compatible Quitus (cfr. LSLoginQuitus). Ce filtre suppose que l'ensemble des types de relations entretenues avec l'utilisateur soit populé dans son profil (ex. client, fournisseur, ami, membre, …). Dans ce cas, il est possible de restreindre l'affichage de contenu à des personnes qui entretiennent avec vous un certain type de relation (par exemple, uniquement les membres).

Attention, la gestion des relations est une notion complètement distincte de la gestion des groupes (application du filtre memberof). Les deux notions sont apparentées mais distinctes.

Si vous ne disposez d'une gestion des relations à la mode Quitus, vous pouvez quand même vous servir de ce type de filtre, à charge pour vous de populer correctement la propriété szRelations de l'objet LSUser.

<Island id="iphone-content" xhtml="yes" relations="mem;cus">
    <p>
        Ce contenu ne sera affiché que pour les visiteurs authentifiés avec
        lesquels une relation de membre (mem) ou client
        (cus) est entretenue.
    </p>
</Island>

Filtre sur la qualité du visiteur : user-rating

Ce filtre implique une authentification de l'utilisateur et aussi que son rating soit stocké dans son profil. Si ces deux conditions ne sont pas rencontrées, l'île (ou la page ou encore l'archipel) ne se montrera pas.

<Island id="services" active="yes" class="LSContents"
    user-rating="A,B">
    <param name="storage"><![CDATA[/services.php]]></param>
</Island>

L'exemple ci-dessus suggère que l'île ne se sera activée que si le rating octroyé au visiteur soit A ou B. Le rating est issu de la propriété szRating de l'objet LSUser. Le rating est une notion issue de notre gestion d'entreprise, Quitus : un client est catégorisé en A, B, C ou D. L'objectif marketing sous-jacent est de tenter de promouvoir un certain nombre de clients d'une catégorie inférieure à une catégorie supérieure sur base annuelle.

Filtre sur la date de naissance du visiteur : user-birthdate

Ce filtre implique une authentification de l'utilisateur et aussi que sa date de naissance soit stockée dans son profil. Si ces deux conditions ne sont pas rencontrées, l'île (ou la page ou encore l'archipel) ne se montrera pas.

<Island id="services" active="yes" class="LSContents"
    user-birthdate="19591118">
    <param name="storage"><![CDATA[/services.php]]></param>
</Island>

L'exemple ci-dessus suggère que l'île ne se sera activée que si la date de naissance du visiteur est le 18 nov 1959. En soi, cela ne semble pas très utile … du moins si c'était là le seul format disponible, mais heureusement Vae Soli! propose une variété de formats :

  • YYYYMMDD = Année - Mois - Jour (ex: 19591118)
  • YYYY-MM = Année - Mois (ex: 1959-11)
  • MM-DD = Mois - Jour (ex: 11-18)
  • dDD = Jour (ex: d18)
  • mMM = Mois (ex: m11)
  • yYYYY = Année (ex: y1959)
  • a[[+-]=]999 = Âge (ex: a53 ou a+53 ou a+=53 ou a-53 ou a-=53)

Avec autant de formats différents, on peut anticiper tous les types de cas où la date de naissance du visiteur peut jouer le rôle de filtre de contenu. Vous avez ainsi la possibilité de souhaiter un bon anniversaire à qqn avec le format MM-DD, la possibilité de présenter un contenu pour les visiteurs âgés d'au moins 18 ans (a+=18), etc.

Filtre sur le pays du visiteur : user-country

Ce filtre implique une authentification de l'utilisateur et aussi que son pays d'appartenance soit stocké dans son profil. Si ces deux conditions ne sont pas rencontrées, l'île (ou la page ou encore l'archipel) ne se montrera pas. Attention : Vae Soli! ne possédant pas de gestion d'IP localisée (pays, région, ville, …) (du moins au moment où nous écrivons ces lignes, soit le 10/02/2013 16:12:45), il s'agit donc bien de comparer le pays à ce qui est contenu dans votre gestion d'utilisateurs.

<Island id="services" active="yes" class="LSContents"
    user-country="FR;BE;UK">
    <param name="storage"><![CDATA[/services.php]]></param>
</Island>

L'exemple ci-dessus suggère que l'île ne se sera activée que si le pays d'appartenance du visiteur est la France, la Belqique ou le Royaume-Uni.

Filtre sur le genre du visiteur : user-gender

Ce filtre implique une authentification de l'utilisateur et aussi que son sexe soit stocké dans son profil. Si ces deux conditions ne sont pas rencontrées, l'île (ou la page ou encore l'archipel) ne se montrera pas.

<Island id="female-products" active="yes" class="LSContents"
    user-gender="F;?">
    <param name="storage"><![CDATA[/female-shoes.php]]></param>
</Island>

L'exemple ci-dessus suggère que l'île ne se sera activée que si le visiteur est de sexe féminin ou non connu.

Les valeurs possibles du filtre sont F, M ou ?.

Le filtre de voyage : trip

Vae Soli! permet de filtrer les contenus sur base de la visite courante de l'utilisateur. Ce feature permet de ne présenter un certain contenu, une île par exemple, que si l'utilisateur est passé par certaines pages, lesquelles font justement l'objet du filtre. On pense bien évidemment à ces pages où certains contenus peuvent varier en fonction de la visite de l'internaute, des contenus de promotions ou d'offres par exemple.

Par exemple, une page propose une île de contenu (type xhtml) QUE SI vous êtes passés par la page help. Dans ce cas le message suivant sera affiché: "Vous êtes passés par la page help. Merci de votre visite". Voici la définition de l'île :

<Island id="my-island" xhtml="yes" trip="/help.php">
    <div style="border:3px solid silver;margin:15px auto;padding:10px;font-size:1.5em;font-weight:bold;">
        <p>Vous êtes passé par la page help. Merci de votre visite.</p>
    </div>
</Island>

Il est utile de préciser que Vae Soli! fait une distinction claire entre ce qu'on appelle le voyage et la visite. Le filtre trip c'est le voyage. Quelle est la différence entre le voyage et la visite ?

Le voyage implique un parcours dont l'ordre n'a aucune importance. Si on imaginait par exemple un filtre trip="/help.php;/legal.php", il importe peu que le visiteur ait parcouru le site en se rendant de /help.php à /legal.php ou même en étant passé par d'autres pages entretemps. Ce qui importe c'est qu'il soit passé par ces deux pages durant sa session, peu importe l'ordre.

La visite, quant à elle, est plus stricte. Il s'agit de filtrer les contenus sur base d'enchaînements bien précis. Le filtre visit n'est PAS implémenté dans Vae Soli! à l'heure où nous écrivons ces lignes, soit le 10/02/2013 16:24:02. C'est un développement prévu mais qui n'est pas encore disponible.

Notez que les données du trip sont aussi accessibles depuis LSPage->WhereHaveYouBeen().

Le filtre occurrences

Ce filtre permet de n'afficher un contenu qu'un certain nombre de fois au visiteur courant. Pour sa prise en compte, le contenu doit être identifié par un guid (sinon, cela ne fonctionne tout simplement pas).

Les visites de l'utilisateur sont enregistrées dans sa session. Pour chaque contenu visé par le filtre occurrences, un compteur de visualisation est incrémenté. Le filtre occurrences est donc comparé au compteur. Par exemple :

<Island id="warning" guid="samples-warning" html5="yes" occurrences="15"><![CDATA[
    <div style="border:3px solid silver;margin:15px auto;padding:10px;font-size:1.5em;font-weight:bold;">
    <h2 style="color:#600;">Attention</h2>
    <p style="color:#900;">

        Certains des exemples que nous fournissons ci-dessous ne
        sont pas complets. D'emblée, nous nous en excusons.

    </p>
    </div>]]>
</Island>

Le filtre land

Ce filtre permet de n'afficher un contenu que si la page courante appartient au groupe de pages mentionnées dans le filtre ou si au contraire, la page courante n'appartient PAS au groupe mentionné. Bien que les deux syntaxes sont possibles, elles s'exluent mutuellement : soit on teste un appartenance, soit on teste une exclusion.

Ce filtre est particulièrement utile lorsque vous créé des georamas basés sur des classes comme le suggère l'extrait suivant :

<Classes xmlns:xi="http://www.w3.org/2001/XInclude" version="5.0">
    <Class id="public" group="main" lupdate="auto" active="yes" editable="yes">
        <Contents>
            <Archipelago id="validate" active="yes" category="validate">
                <xi:include href="validate.xml" />
            </Archipelago>
            <Archipelago id="language-switchers" active="yes" category="Q-ls">
                <Island id="language-switchers" active="yes" class="LSContentsLanguageSwitchers">
                    <param name="languages"><![CDATA[fr;nl;en;de;it;pt]]></param>
                </Island>
            </Archipelago>
            <Archipelago id="animation" active="yes" category="Q-anim">
                <Island id="animation" active="yes" class="LSContents">
                    <param name="storage"><![CDATA[%q-islands%/{archipelago->id}-{page->lang}.php]]></param>
                </Island>
            </Archipelago>
            <Archipelago id="headline" active="yes" category="Q-headline">
                <Island id="headline" active="yes" class="LSContents">
                    <param name="storage"><![CDATA[%q-islands%/{archipelago->id}-{page->lang}.php]]></param>
                    <param name="with-div">false</param>
                </Island>
            </Archipelago>
            <Archipelago id="font-sizer" active="yes" category="Q-fs">
                <Island id="fontsizer" active="yes" class="LSContentsFontSizer" />
            </Archipelago>
            <Archipelago id="silos" active="yes" category="Q-silos">
                <Island id="silos" active="yes" class="LSContents">
                    <param name="storage"><![CDATA[%q-islands%/{archipelago->id}-{page->lang}.php]]></param>
                </Island>
            </Archipelago>
            <Archipelago id="footer" active="yes" category="Q-footer">
                <Island id="footer" active="yes" class="LSContents">
                    <param name="storage"><![CDATA[%q-islands%/{archipelago->id}-{page->lang}.php]]></param>
                </Island>
            </Archipelago>
            <Archipelago id="sysmenu" active="yes" category="Q-smenu">
                <Island id="sysmenu" active="yes" class="LSContents">
                    <param name="storage"><![CDATA[%q-islands%/{archipelago->id}-{page->lang}.php]]></param>
                </Island>
            </Archipelago>
            <Archipelago id="social" active="yes" category="social">
                <xi:include href="social-networks.xml" />
            </Archipelago>
            ...
        </Contents>
    </Class>

    <!-- ==[Classes Projets]========================================= -->
    <!-- ============================================================ -->
    <Class id="projects" inherit="public" group="{projects}">
        <Defaults>
            <Settings>
                <LSKeyword><![CDATA[projects]]></LSKeyword>
            </Settings>
        </Defaults>
        <Contents>
            <Archipelago id="mission" active="yes" category="mission">
            </Archipelago>
        </Contents>
    </Class>
</Classes>

… et qu'ensuite vous créiez vos page sur base des classes définies comme par exemple :

<Land id="/quitus.php"
      lupdate="auto"
      inherit="projects"
      href="%geo-path%/{land->id}.pdef.xml">
</Land>

Dans ce cas, la page /quitus.php est basée sur la classe pojects elle-même basée sur la classe public. Dès lors, tous les archipels contenus dans la classe public (et les îles qu'ils contiennent) seront automatiquement inclus dans la page /quitus.php par le jeu de l'héritage des pages.

C'est ici que le filtre land s'avère bien utile car bien qu'une île fasse partie d'une classe supérieure (et sera donc incluse automatiquement), elle peut être méprisée si on le souhaite. Voici les syntaxes permises :

<Island id="promo" active="yes" xhtml="yes"
    land="/services.php;/products.php">
    <div>
        <p>Ce contenu ne se montre que sur les pages
        /services.php et /products.php</p>
    </div>
</Island>

ou

<Island id="promo" active="yes" xhtml="yes"
    land="!/services.php;/products.php">
    <div>
        <p>Ce contenu se montre sur TOUTES les pages
        sauf sur /services.php et /products.php</p>
    </div>
</Island>

Le filtre keywords

Le filtre keywords permet de filtrer les contenus qui ne correspondaient pas aux mots-clés de la page courante. C'est une notion qui fera l'objet de développements plus détaillés dans les prochaines versions de Vae Soli! notamment pour comparer lesdits mots-clés à ceux enregistrés dans le profil du visiteur. C'est également une notion très intime des développements entrepris dans la racinisation des mots et la capacité qu'à Vae Soli! de qualifier une page [1] .

<Island id="advert-1" active="yes" class="LSContents" keywords="sportwear">
    <param name="storage"><![CDATA[sportwear-fr.html]]></param>
</Island>

Notez qu'à ce stade les mots-clés d'une page sont codés de manière statique dans la section <Description><Keywords>…</Keywords></Description> de la définition de la page :

<Land xmlns:xi="http://www.w3.org/2001/XInclude"
      xmlns:html="http://www.w3.org/1999/xhtml">
    <Description title="Vae Soli! - Framework web (PHP), Framework EAI (C) h1="Exemples" lang="fr">
        <ExtendedDesc><![CDATA[Différents exemples, des trucs et astuces, etc.]]></ExtendedDesc>
        <Keywords><![CDATA[sportwear,shoes,watches]]></Keywords>
    </Description>
    …
</Land>

Vous aurez noté nos deux mises en évidence et surtout celle inhérente à la langue puisqu'effectivement les mots-clés sont assignés PAR langue.

Les développements en cours sur Vae Soli! permettent d'envisager la mise en place de mots-clés dynamiques pour le courant de l'année 2013. Grâce à ce nouvel apport, Vae Soli! sera en état de calculer les mots-clés d'une page de manière automatique et de les réduire à leur racine intrinsèque. C'est notamment ce qui est en vue avec la qualification des pages :

<Description title="Références" h1="Références" lang="fr">
    <ExtendedDesc><![CDATA[Les références de
    Lato Sensu Management]]></ExtendedDesc>
    <Keywords qualify="yes"><![CDATA[portfolio,
        références,clients]]></Keywords>
</Description>

Dès ce moment, la page est qualifiée une fois jour et les mots-clés sont alors assignés de manière dynamique. Nous n'en sommes malheureusement pas encore là et il vous faudra vous contenter des mots-clés statiques pour l'heure.

Et efin le filtre général de condition : condition

Si malgré tous les filtres inclus nativement dans Vae Soli! vous n'arriviez pas à établir VOTRE condition d'affichage, il vous reste le filtre généraliste, le filtre condition. Ce filtre exécutera le code PHP que vous aurez vous-même spécifié et codé.

<Island id="promo" active="yes" xhtml="yes"
    condition=".php= return MyFunction();">
    <div>
        <p>Ce contenu est visible si
        MyFunction() renvoit true</p>
    </div>
</Island>

Notes de bas de page

[1] … La racinisation - lemmatization des contenus est un développement en cours dans l'équipe de Vae Soli!

Précédent Suivant