Filtre statique sur les contenus

  1. Déclarer un filtre statique
    1. Conditions sur les métadonnées
      1. Conditions simples
      2. Conditions complexes
        1. Conditions complexes sur des métadonnées de type date
  2. Url du flux RSS associé au filtre

Déclarer un filtre statique

Un filtre permet d'afficher des contenus possédant certaines propriétés parmi :

  • zéro, un ou plusieurs types de contenus (article, actualité, offre de formation...)
  • zéro, une ou plusieurs étiquettes (focus, actualités de la page d'accueil...)
  • des métadonnées particulières (date, auteur...).

Un filtre peut être restreint à un contexte, permettant de limiter la recherche:

  • au site courant
  • à tous les sites sauf le site courant
  • à tous les sites
  • aux pages-filles de la page courante (dans ce cas, une profondeur limite peut être spécifiée)

Chaque filtre est lié à une vue pour afficher les contenus correspondants :

  • main
  • abstract
  • link
  • autres vues définies par l'intégrateur

Pour plus de détails sur les vues, vous pouvez consulter la page Déclaration d'un nouveau type de contenu.

Le point d'extension ContentFilterExtensionPoint permet de définir un filtre statique. Il s'agit d'un point d'extension multiple: c'est à dire que plusieurs implémentations de ce point d'extension peuvent être active au même moment.

Un filtre statique doit être définie dans un fichier plugin.xml. Au besoin, vous serez amené à créer un nouveau plugin, suivez alors les instructions de la page Architecture d'un plugin Ametys.

Exemple de déclaration

<extensions>
    <extension point="org.ametys.cms.filter.ContentFilterExtensionPoint"
               class="org.ametys.web.filter.StaticWebContentFilter"
               id="org.ametys.web.article.RSS">
        <title i18n="false">Les articles de mon site</title>
        <description i18n="false">Le flux RSS des articles</description>
        <content-types>
            <type id="org.ametys.web.default.Content.article"/>
        </content-types>
        <tags strict="false" condition="OR">
            <tag key="HOME_NEWS"/>
            <tag key="IMPORTANT_NEWS"/>
        </tags>
        <metadata condition="AND">
            <metadata id="creator">laurence</metadata>
            <metadata id="lastValidationDate" type="date" operator="gte">-7</metadata>
        </metadata>
        <view>abstract</view>
        <context type="current-site"/>
        <max-result>10</max-result>
		<mask-orphan>true</mask-orphan>
		<sort-information>
            <sort metadataId="publication-date" ascending="true"/>
            <sort metadataId="title" ascending="false"/>
        </sort-information>
    </extension>
</extensions>
Elément de configurationDescriptionObligatoire
<content-types>Contient la liste de types de contenus recherchés
Ex: <type id="org.ametys.web.default.Content.article"/>
non
<tags>

Contient la liste des étiquettes que doivent porter les contenus recherchés.

L'attribution "condition" définit le type d'opérateur (OR ou AND) utilisé:

  • La valeur AND veut dire que le filtre remontera les contenus étiquetés avec toutes les étiquettes citées. C'est la valeur par défaut (elle sera utilisée si l'attribut "condition" n'est pas renseigné).
  • La valeur OR veut dire que le filtre remontera les contenus étiquetés avec au moins une des étiquettes

L'attribution "strict" permet d'activer ou désactiver l'autopostage descendant:

  • La valeur true signifie que la recherche sur les étiquette est une recherche stricte, c'est à dire que les contenus remontés seront uniquement ceux portant exactement les étiquettes citées. Il s'agit de la valeur par défaut (en l'absence de l'attribut "strict")
  • La valeur false permet d'activer l'autopostage descendant. Les contenus remontés seront alors les contenus portant les étiquettes citées ou l'une de leurs étiquettes filles.
non
<metadata>

Définit les conditions sur les métadonnées.
L'attribution "condition" définit le type d'opérateur (OR ou AND) utilisé. La condition "AND" est celle par défaut.
Voir le paragraphe "Conditions sur les métadonnées" consacré à cet élément.

non
<view>

Définit la vue utilisée pour l'affichage des contenus.
Si elle n'est pas spécifiée, c'est la vue "main" qui est utilisé par défaut.
La plupart des contenus ont les vues suivantes disponibles : main (vue complète), abstract (vue résumé) et link (vue lien). Il peut en exister d'autres (voir Rendu graphique d'un contenu).

non
<context>

Définit le contexte de recherche:

  • current-site : le site courant
  • other-sites: tous les sites sauf le site courant
  • all-sites: tous les sites
  • child-pages: pages-filles de la page courante
oui
<max-result>Définit le nombre maximum de contenus qui seront remontés par le filtre.
Illimité par défaut.
non
<sort-information> Détermine l'ordre de tri des contenus en fonction des métadonnées
Ex: <sort metadataId="publication-date" ascending="true"/>
non
<mask-orphan>

Si "true", les contenus orphelins, c'est à dire n'étant rattachée à aucune page, sont masqués.
false par défaut.

non

<handle-user-access>

Si "true", le filtre tient compte des droits (sur les pages à accès limités) de l'utilisateur connecté.non

Conditions sur les métadonnées

Le bloc "metadata" représente les conditions à remplir par les contenus pour être remontés par le filtre. Chaque balise "metadata" dans le bloc indique une condition sur une métadonnée des contenus.

L'attribut "condition" sur le bloc "metadata" représente l'opérateur entre les différentes conditions :

  • La valeur AND veut dire que le filtre remontera les contenus dont les métadonnées remplissent toutes les conditions déclarées. C'est la valeur par défaut (elle sera utilisée si l'attribut "condition" n'est pas renseigné).
  • La valeur OR veut dire que le filtre remontera les contenus dont les métadonnées remplissent au moins une condition.

Les conditions peuvent être simples (test d'égalité sur des valeurs textuelles) ou complexes (test de type "supérieur", "inférieur" sur des valeurs de date).

Conditions simples

Une condition simple est un test d'égalité sur une valeur textuelle. Le nom de la métadonnée est indiqué dans l'attribut "id" et la valeur testée dans le contenu de la balise. Pour remonter les contenus dont la métadonnée "creator" possède la valeur "laurence", on écrit donc :

<metadata>
    <metadata id="creator">laurence</metadata>
</metadata>

Le bloc de condition suivant retournera les contenus dont le créateur est "laurence" et dont le titre est "Actualité".

<metadata condition="AND">
    <metadata id="creator">laurence</metadata>
    <metadata id="title">Actualité</metadata>
</metadata>

Le bloc de condition suivant retournera les contenus dont le créateur est soit "laurence" soit "nicolas".

<metadata condition="OR">
    <metadata id="creator">laurence</metadata>
    <metadata id="creator">nicolas</metadata>
</metadata>
Conditions complexes

Les conditions complexes permettent de représenter des tests plus poussés. Pour définir une condition complexe, il faut spécifier les attributs "type" et "operator" sur la balise "metadata".

  • L'attribut "type" spécifie le type de la métadonnée.
  • L'attribut "operator" spécifie l'opérateur de la condition. Les valeurs possibles de celui-ci dépendent du type de la métadonnée.

Actuellement, seules des conditions complexes de type "date" sont supportées.

Conditions complexes sur des métadonnées de type date

Les conditions complexes portant sur des dates permettent d'effectuer des tests du type "la date de début est à partir d'hier" ou "la publication date de moins de 7 jours".

Les opérateurs disponibles sont :

  • L'opérateur "eq" pour remonter les contenus dont la métadonnée est égale à la date spécifiée.
  • L'opérateur "gte" pour remonter les contenus dont la métadonnée est après ou égale à la date spécifiée.
  • L'opérateur "gt" pour remonter les contenus dont la métadonnée est strictement après la date spécifiée.
  • L'opérateur "lte" pour remonter les contenus dont la métadonnée est avant ou égale à la date spécifiée.
  • L'opérateur "lt" pour remonter les contenus dont la métadonnée est strictement avant la date spécifiée.

Les valeurs peuvent être spécifiées de plusieurs façons :

  • Soit "today" ou "now" pour indiquer la date du jour.
  • Soit un jour précis représenté au format année-mois-jour, par exemple "2013-11-24" pour le 24 novembre 2013.
  • Soit un jour relatif à la date du jour, représenté par un chiffre positif pour un nombre de jours après la date du jour, ou négatif pour un nombre de jours avant la date du jour. Par exemple, "-1" représente hier et "7" représente "dans 7 jours".

Par exemple, le bloc de condition suivant retournera les contenus qui ont été publiés dans les 7 derniers jours.

<metadata>
    <metadata id="lastValidationDate" type="date" operator="gte">-7</metadata>
</metadata>

Le bloc de condition suivant retournera les contenus dont la date de début (métadonnée "start-date") est comprise entre hier et dans 3 jours.

<metadata condition="AND">
    <metadata id="start-date" type="date" operator="gte">-1</metadata>
    <metadata id="start-date" type="date" operator="lte">3</metadata>
</metadata>

Le bloc de condition suivant retournera les contenus dont la date de début (métadonnée "start-date") est comprise entre aujourd'hui et le 5 septembre 2013.

<metadata condition="AND">
    <metadata id="start-date" type="date" operator="gte">today</metadata>
    <metadata id="start-date" type="date" operator="lte">2013-09-05</metadata>
</metadata>

Url du flux RSS associé au filtre

Chaque filtre est associé à un flux RSS. Il existe 2 sortes d'url pour le flux RSS d'un filtre :

  • si le filtre nécessite le contexte de page :

    http://[server_name]/plugins/web/[site_name]/[language]/[page_path]/filter/[filter_id]/rss.xml

    Exemple : http://monserver.com/plugins/web/default/fr/universite/campus_et_sites/filter/org.ametys.web.article.RSS/rss.xml
  • si le filtre ne nécessite pas le contexte de page :

    http://[server_name]/plugins/web/[site_name]/[language]/filter/[filter_id]/rss.xml

    Exemple : http://monserver.com/plugins/web/default/fr/filter/org.ametys.web.article.RSS/rss.xml