Tout sur MODx : Lancez-vous facilement avec le CMS MODx.

getResources

Snippet indispensable pour lister les ressources

Tout sur MODx » Extensions » getResources : snippet indispensable pour lister les ressources
getResources : snippet indispensable pour lister les ressources

getResources : snippet indispensable pour lister les ressources

Le snippet getResources permet de lister des éléments avec MODx. Vous pouvez par exemple afficher un sommaire (listant tous les titres de ressources d'une catégorie) ou bien une liste d'articles avec le titre et le contenu de chaque ressource.

Eléments recquis

MODx Revolution 2.0.0-beta5 et plus récent

Histoire

getResources a d'abord été développé par Jason Coward (opengeek) et publié le 30 Juin 2009.

Téléchargement

Vous pouvez télécharger getResources à partir du manager de MODx Révolution via la catégorie "Système", "Gestion des paquets", "Télécharger des extras".

Utilisation

getResources est un snippet, il doit donc être appelé en utilisant la variable [[!getResources]].
A cette variable, vous pouvez ajouter de nombreuses propriétés afin de personnaliser votre liste d'éléments, sinon cela affichera une liste par défaut. Pour afficher les propriétés il suffit d'ajouter &nompropriete=`valeurdelapropriete` à la variable de cette manière : [[!getResources? &nompropriete=`valeurdelapropriete`]].
Voici une liste des ces propriétés :

Liste des propriétés concernant la mise en page de la liste
NomDescriptionValeur par défautAjouté dans la version
tplNom du chunk servant à afficher chaque élément de la liste. A chaque ressource trouvé, le snippet affichera le code HTML de ce chunk
tplOddNom du chunk servant à afficher les ressources qui possèdent un id impair
tplFirstNom du chunk servant à afficher le premier élément de la liste
tplLastNom du chunk servant à afficher le dernier élément de la liste
tpl_NNom du chunk servant à afficher la Nème ressource. Par exemple &tpl_4=`tpl4th` prendra le chunk tpl4th pour afficher la ressource avec l'id 4
outputSeparatorPermet de rajouter une chaîne optionnelle qui sépare chaque élément de la liste. Cette chaîne de caractère devra être ajouté dans un chunk"\n"
toPlaceholderSi toplaceholder est activé, le resultat sera assigné dans le placeholder au lieu de le retourner directement. Un placeholder est une variable qui contiendra la liste des ressources. La valeur sera le nom de cette variable. Pour afficher le résultat, il suffit d'appeler la variable de cette manière : [[+nomvariable]]
toSeparatePlaceholdersSi toSeparatePlaceholders est activé, le résultat sera assigné dans plusieurs variables contenant le nom que vous avez défini suivi par un nombre de 0 à n. Pour afficher l'élément 0 il suffit d'écrire , pour l'élément 1, il faut écrire la variable .1.3.0
Autres propriétés
NomDescriptionValeur par défautAjouté dans la version
parentsTous les ressources filles des ressources dont l'id a été indiqué avec cette propriété seront affichées dans la liste. Séparez les ids par une virguleid de la ressource en cours
resourcesPermet d'exclure une ressource en affichant un "-" devant l'id de la ressource à exclure. Ex: &resources=`-1,-2`. La liste n'affichera pas les ressources avec les ids 1 et 2
depthProfondeur de recherche des ressources. Valeur numérique.10
tvFiltersPeut être utiliser pour filtrer les ressources en fonction des valeurs de certaines variables de modèles (TV). Les valeurs doivent être saisies de cette manière nomTV == valeur. Pour ajouter plusieurs valeurs, il existe deux séparateurs différents.
Vous pouvez utiliser le séparateur "||" (ou), les ressources possédant une de ces valeurs seront listées. maTV==unevaleur||maTV==autrevaleur L'autre sérateur et la virgule "," (et). Les ressources devront rassembler les deux conditions pour être affichés.
maTV==unevaleur,maTV==autrevaleur Vous pouvez également rassembler plusieurs conditions pour un filtre avancé de vos ressources. La seule chose qu'il faut savoir est que le "ou" (||) a priorité sur le "et"(,).
maTV==1||maTV==2,autreTV==3||autreTV==1 Avec cet exemple, seules les ressources qui ont la variable de modèle maTV qui est égale à 1 ou 3 et la variable autreTV qui est égale à 3 ou 1 seront affichées.

Dans la valeur de la TV vous pouvez également utiliser le signe pourcentage.
Pour l'exemple ci-dessous, toutes les ressources pour lesquels la variable maTv possède un a seront affichées.
maTV==%a%
Pour l'exemple ci-dessous, toutes les ressources pour lesquels la variable maTv commence par un a seront affichées.
myTV==a%
Pour l'exemple ci-dessous, toutes les ressources pour lesquels la variable maTv finie par un a seront affichées.
myTV==%a
Vous pouvez également combiner le signe % avec les séparateurs "et" (,) et "ou" (||).
sortbyChamp de tri. L'élément choisi sera utilisé pour trier les ressources. Si vous voulez trier en fonction d'une variable de modèle, voir sortbyTV.

Vous pouvez utilisez un tri au hasard de cette manière : &sortby=`RAND()`.

Depuis la version 1.3.0, vous pouvez également trier sur plusieurs champs : &sortby=`{"publishedon":"ASC","createdon":"DESC"}`.

Trier avec une liste d'ids de ressources est également possible : &sortby=`FIELD(modResource.id, 4,7,2,5,1 )`.

Vous pouvez aussi ajouter la liste des ids dans une TV : &sortby=`FIELD(modResource.id,)`
sortbyAliasPermet de spécifier la classe à utiliser comme alias pour la propriété du sortBy. Valeurs : modDocument, modStaticResource, modSymLink ou modWebLink
sortdirOrdre de triDESC
sortbyTVChamp de tri en fonction d'une variable de modèle.
sortdirTVOrdre de tri lorsque vous triez en fonction d'une variable de modèle.DESC
sortbyTVTypeSpécifie le type de la variable de modèle définie dans la propriété sortbyTV. Les valeurs possibles sont string, integer, decimal, datetimestring1.3.0
limitLimite le nombre de ressources affichées5
wherePermet d'ajouter une condition supplémentaire. Ex: &where=`{"template:=":8}`
contextSpécifie le contexte qui doit être cherché. Par défaut, le web-context.
showUnpublishedPermet d'afficher ou non les ressources qui ne sont pas publiées. Valeur 1 pour les afficher sinon 0.0
showDeletedPermet d'afficher ou non les ressources supprimées. Valeur 1 pour les afficher sinon 0.0
showHiddenPermet d'afficher ou non les ressources cachées dans le menu. Valeur 1 pour les afficher sinon 0.0
hideContainersPermet de cacher ou non les ressources qui sont considérées comme dossiers. Valeur 1 pour les cacher sinon 0.0
includeContentIndique si le contenu de la page peut être affiché ou non dans la liste des ressources. Valeur 1 pour autoriser sinon 0.0
includeTVsIndique si les TVs de la ressource peuvent être affichées ou non dans la liste des ressources. Valeur 1 pour autoriser sinon 0.0
processTVsPermet d'afficher tous les paramètres des TVs comme le chemin relatif pour une image. Sinon il affichera seulement le champ de la TV. Valeur 1 pour autoriser l'affichage sinon 0.0
tvPrefixSpécifie le préfixe pour afficher les variables de modèle. Si le préfix est tv. la variable sera affiché [[+tv.nomvariable]] dans le chunk associé au getResourcestv.
idxPermet de définir l'id de la ressource de départ. Mais au lieu de lister les répertoires, l'id sera incrémenté de 1 à chaque ressource. Ce qui signifie que si on met l'id 3 à cette catégorie, même si la ressource avec l'id 3 à une page fille avec l'id 6, le getResources prendra la ressource avec l'id 4 puis l'id 5 et ensuite l'id 6 jusqu'au dernier id ou jusqu'à l'id défini comme dernière ressource.1
firstDéfini l'id de la ressource qui représentera la première ressource1
lastDéfini l'id de la ressource qui représentera la dernière ressource. Par défaut le getResources listera toutes les ressources correspondants aux propriétés
totalVarIndique le nombre total des ressources qui seraient sélectionnés sans tenir compte de la valeur limite lorsque l'on affiche les résultats dans un placeholder (une variable).total
debugSi true, la requête SQL est envoyée dans le journal MODx.false

Quelques Exemples

Le 1er exemple va lister toutes les ressources qui ont pour parent la page en cours et qui utilise le chunk "monChunk" pour afficher ces ressources.

[[!getResources? &parents=`[[*id]]` &tpl=`monChunk`]]

Le 2ème exemple va lister toutes les ressources qui ont pour parent la ressource avec l'id 5, qui utilise le chunk "monChunk" pour afficher ces ressources mais on n'affichera pas la ressources avec l'id 6.

[[!getResources? &parents=`5` &tpl=`monChunk` &resources=`-6`]]

Le 3ème exemple va lister toutes les ressources qui ont pour parent les ressources avec les ids 5 et 10, qui utilise le chunk "articleBlog" pour afficher ces ressources. Il faudra également pouvoir afficher le contenu de la ressource.

[[!getResources? &parents=`5,10` &tpl=`articleBlog` &includeContent=`1`]]

Le 4ème exemple va lister toutes les ressources qui ont pour parent la ressource en cours, qui ont pour template le template avec l'id 2 et qui utilise le chunk "monChunk".

[[!getResources? &parents=`[[*id]]` &tpl=`monChunk` &where=`{"template:=":2}`]]

Le 5ème exemple va lister toutes les ressources qui ont pour parent la ressource en cours, qui ont pour template le template avec l'id 2 ou l'id 3 et qui utilise le chunk "monChunk".

[[!getResources? &parents=`[[*id]]` &tpl=`monChunk` &where=`{"template:=":2, "OR:template:=":3}`]]

Le 6ème exemple va lister toutes les ressources qui ont pour parent la ressource en cours, qui ont pour template le template avec l'id 2, 3 ou 4 et qui utilise le chunk "monChunk".

[[!getResources? &parents=`[[*id]]` &tpl=`monChunk` &where=`{"template:IN":[2,3,4]}`]]

Le 7ème exemple va lister toutes les ressources qui ont pour parent la ressource en cours et qui ne sont pas des dossiers. On veut également pouvoir afficher le contenu des ressources et des variables de modèle en utilisant le chunk "articleBlog". On veut également lister les ressources qui sont cachés dans le menu et on veut lister les ressources en fonction de son id de manière décroissante.

[[!getResources? &parents=`[[*id]]` &hideContainers=`1` &includeContent=`1` &includeTVs=`1` &sortby=`menuindex` &sortdir=`DESC` &tpl=`articleBlog` &where=`{"template:IN":[2,3,4]}`]]

Le 7ème exemple va lister toutes les ressources qui ont pour parent la ressource en cours en utilisant le chunk "monChunk". S'il n'y a aucun résultat, on afficher le message "Aucun résultat trouvé.".

[[!getResources:default=`Aucun résultat trouvé.`? &parents=`[[*id]]` &tpl=`monChunk`]]

Comment écrire vos chunks avec getResources

Le code que vous devez mettre dans vos chunks pour un getResources est un peu différent.

Pour afficher les variables déjà définies par MODx comme la variable pagetitle ou id, il faut remplacer "*" par un +.

[[+pagetitle]] [[+id]] [[+description]]

Pour afficher les variables de modèle, il faut donc mettre également un "+" mais il faut également ajouter le préfixe défini par le getResources qui est par défaut "+tv"

[[+tv.mavariable]] [[+tv.illustration]] [[+tv.ville]]
Exemple de chunk

Le chunk ci-dessous affiche un article avec une image, un titre et le contenu de l'article

<article> <img src="[[+tv.illustration]]"/> [[+pagetitle]]
[[+content]] </article>

Toutes les ressources listées seront donc affichées à la suite sous forme d'articles.

N'hésitez pas à me contacter si vous avez la moindre question sur le snippet getResources.

Source en Anglais

Laissez un commentaire





Tags autorisés : <b><i><br>Ajouter un nouveau commentaire :


Commentaires (2)

  1. Laura:
    oct. 14, 2011 at 11:53

    Ditto permet déjà de faire ce genre de choses, non ?

    1. manuelgobeaut:
      oct. 15, 2011 at 01:00

      En fait ditto est plutôt utilisé pour MODx Evolution. getResources remplace ditto pour la version Révolution de MODx