Snippet getResources
getResources : le Snippet de MODX qui permet de lister des ressources
  • 21 septembre 2016
  • Steeve

getResources a été ecrit la première fois pas Jason Coward (alias opengeek) le 30 Juin 2009.

Avec les versions précédentes à 1.6.1-pl vous pouviez faire appel au Snippet sans mettre de tpl, vous aviez en retour un tableau avec les données récoltés. Depuis la version 1.6.1-pl il faut ajouter le paramètre « &debug=`1 ` » pour voir le tableau de données.

Avec les versions précédentes à 1.6.1-pl vous pouviez faire appel au Snippet sans mettre de tpl, vous aviez en retour un tableau avec les données récoltés. Depuis la version 1.6.1-pl il faut ajouter le paramètre « &debug=`1 ` » pour voir le tableau de données.

[[getResources? &parents=`chosissez un identifiant ID` &debug=`1`]]

@FILE and @INLINE tpls

Vous pouvez utiliser @FILE et @INLINE dans le paramètre « &tpl » pour utiliser un fichier à la place d’un Chunk classique ou de mettre directement le code Html dans l’appel du Snippet getResources. Plus d’informations dans le tableau des propriétés.

Propriétés de thème :

NomDescriptionValeur par défautAjouté depuis la version
tpl Nom du Chunk qui va servir de code pour afficher le résultat de chaque ressource.
tplOdd Nom du Chunk qui va servir de code pour afficher le résultat de chaque ressource impair (voir la propriété idx).
tplFirst Nom du Chunk qui va servir de code pour afficher le premier résultat de ressource.
tplLast Nom du Chunk qui va servir de code pour afficher le dernier résultat de ressource.
tpl_N Nom du Chunk qui va servir de code pour afficher le n résultat de ressource, par exemple &tpl_4=`tpl4th` pour le quatrième résultat.
tpl_nN Nom du Chunk qui va servir de code pour afficher le n résultat de ressource, par exemple &tpl_n4=`tpl4th` pour les résultats divisible par 4. 1.4.1
tplCondition Définissez le champ de ressource qui va servir a comparer dans le paramètre &conditionalTpls. Ça doit être un champ de ressource, ne fonctionne pas avec des variables de modèle. 1.5.0
conditionalTpls Un objet JSON définissant une carte de valeurs de champ et les Chunks tpl associés à utiliser lorsque le champ défini par &tplCondition correspondant à la valeur : &conditionalTpls=`{"1":"tplA","2":"tplB","3":"tplC"}`
[A NOTER: tplOdd, tplFirst, tplLast, * and tpl_{n} va prendre le dessus sur toute définition conditionnelle ]
1.5.0
tplPath Un répertoire en option pour chercher des morceaux (chunk) à base de fichiers lorsque vous utilisez @FILE assets_path+ "elements/chunks/"
tplWrapper Nom d'un morceau (chunk) servant de modèle de conteneur (Wrapper) pour la sortie [NOTE: Ne fonctionne pas avec deux Placeholders séparés]. L'espace réservé où les articles sont insérés est . 1.6.0
wrapIfEmpty Si cela est vrai, la sortie sera de enveloppé dans un conteneur dans &tplWrapper même si la sortie est vide. false 1.6.0
outputSeparator Une chaîne de cractère(s) optionnelle pour séparer chaque instance tpl. "\n"
toPlaceholder Si elle est définie, sera affectée au résultat à cet espace (placeholder) réservé au lieu d'émettre directement.
toSeparatePlaceholders Si elle est définie, attribuera à chaque résultat à un espace (placeholder) réservé séparé nommé par ce paramètre suffixé avec un numéro séquentiel (à partir de 0). 1.3.0

@FILE- Ce préfixe vous permet de fournir un fichier au lieu d'un Chunk dans la base de données comme tpl. Le chemin et le nom que vous spécifiez par défaut, sauf si vous spécifiez un chemin personnalisé tplPathproperty, rechercher le @FILE tpl par rapport à votre ASSETS_PATH configuré + "elements/chunks/".

@INLINE- Ce préfixe vous permet de fournir un balisage à utiliser pour votre tpl directement dans l’appel du Snippet getResources. Il est recommandé d'utiliser ceci, que lors de la spécification des propriétés tpl * dans un [Set Property], sinon des espaces réservés dans votre ligne de balisage peuvent être évaluées avant que le contenu soit transmis à getResources, puisque les balises imbriquées cacheable dans MODX Revolution sont évaluées avant le traitement contenant des « tag ». Exemple [[*pagetitle]].

NomDescriptionValeur par défautAjouté depuis la version
parents liste délimitée par des virgules des ids à utiliser en tant que parents. Utilisez -1 pour ignorer le parent ayant pour id 1. Si ce champ n'est pas spécifié, getResources liste les enfants de la ressource actuelle. current Resource id
resources Liste séparé par des virgules d'id à inclure dans le résultat. Préfixé un id avec un - (moins) pour l'exclure du résultat.
depth Valeur entière indiquant la profondeur à rechercher des ressources de chaque parent. Premier niveau de ressources sous parent est la profondeur. Exemple 1 pour seulement les enfants, 2 pour lister aussi les petit enfants. 10
tvFilters Peut être utilisé pour filtrer les ressources par certaine valeur de variable de modèle (tv). Ceux-ci sont entrés comme [( nom de la variable de modèle)( operateur)]( valeur). Il y a deux délimiteurs que vous pouvez utiliser pour combiner des conditions de filtre.

Vous pouvez avoir "OU" (OR) filtres en utilisant deux symboles pipe (||). Un filtre OU récupère des ressources qui a l'une des valeurs de variable de modèle (tv) énumérées.

mytv==somevalue||mytv==othervalue

Vous pouvez également utiliser un filtre "ET" (AND) en utilisant une virgule. Cela fera en sorte que toutes les conditions soient remplies.

mytv==somevalue,othertv==othervalue

Pour le filtrage avancé, vous pouvez également regrouper celle-ci. Il est important de savoir que les conditions sont d'abord séparés en fonction du séparateur "OU" (OR) (||), et après que le "ET" (AND) (,) delimiter. Prenons donc cet exemple hypothétique:

mytv==foo||mytv==bar,bartv==3||bartv==1

Cela va filtrer les ressources pour répondre à l'une des conditions suivantes:

  • mytv est égale a foo, ou
  • mytv est égale a bar ET bartv est égale a 3, ou
  • bartv est égale a 1
    Les exemples ci-dessus recherche pour les valeurs exactes. Vous pouvez également utiliser le signe de pourcentage (%) comme joker. Par exemple:
mytv==%a%

Correspond a toutes les ressources qui a un "a" de la valeur de "mytv" la variable de modèle.

mytv==a%

Correspond a toutes les ressources qui ont une valeur de "mytv" la variable de modèle qui commence par un "a"

mytv==%a

Correspond a toutes les ressources qui ont une valeur de "mytv" la variable de modèle qui se termine par un "a".

You can also combine this with the OR (||) and AND (,) delimiters explained above. Vous pouvez également combiner cela avec un "OU" (OR) (||) et "ET" (AND) (,) délimiteurs expliqué ci-dessus.

est important de savoir que cette fonction regarde la valeur brute d'une variable de modèle pour une ressource spécifique. Cela signifie que la valeur a été explicitement définie pour la ressource, et qu'il n'a pas été traité par un type de variable modèle de sortie( ou est la valeur par défaut dans les versions antérieures à 1.4.2-pl; cette version ajoute le support pour le filtrage qui comprend les valeurs par défaut ). Donc, si vous avez une "Balise automatique" (tv), cela signifie que la valeur brute est une liste délimitée par des virgules, et il ne peut être séparer dans les balises comme vous le voyez dans le gestionnaire.
Nouveau opérateur de filtre depuis la version 1.4.2-pl
Depuis la version 1.4.2-pl de getResources, il y a un certain nombre de nouveaux opérateurs de comparaison pour une utilisation lors de la création des conditions de filtrage. En outre, lorsque vous utilisez beaucoup de ces nouveaux opérateurs, les valeurs de comparaison numériques sont automatiquement casté (CAST) la valeurs de la variable de modèle numérique à avant la comparaison. Voici une liste des opérateurs valides:
Filtre d'opérateurOpérateur SQLCASTs numeriquesNotes
<=> <=> Yes NULL safe equals
=== = Yes
!== != Yes
<> <> Yes
== LIKE No
!= NOT LIKE No
<< < Yes
<= <= Yes
=< =< Yes
>> > Yes
>= >= Yes
=> => Yes
sortby Tous les champs de ressources (hors variables de modèles. Voir ci-dessous pour la propriété 'sortbyTV'). Certains champs communs à trier sont publishedon, menuindex, pagetitle etc..., mais voir la documentation de ressources pour tous les champs. Spécifiez les champs avec le nom, et non en utilisant la syntaxe de la balise. Notez que lors de l'utilisation des champs tels que template, publishedby et le "likes" pour trier, elle sera triée sur les valeurs brutes, de sorte que le modèle ou l'ID utilisateur et pas leurs noms.

Vous pouvez également trier au hasard en spécifiant RAND (), comme suit:

&sortby=`RAND()`

Depuis la version 1.3.0, cela peut aussi être un tableau JSON à trier sur plusieurs champs, par exemple

&sortby=`{"publishedon":"ASC","createdon":"DESC"}`

Pour trier dans un ordre spécifique, spécifiez une ressource liste d'id, exemple

&sortby=`FIELD(modResource.id, 4,7,2,5,1 )`

La même chose est possible si vous mettez les ID triés dans une variable de modèle, comme ceci:

&sortby=`FIELD(modResource.id,)`

Dans certains cas, vous devez (un peu contre-intuitif) spécifier la direction de tri ainsi:

&sortby=`FIELD(modResource.id, 4,7,2,5,1 )` &sortdir=`ASC`

createdon
publishedon Modifié depuis la versio, 1.3.0
sortbyAlias alias de requête pour le champ sortby
sortbyEscaped Échappe le nom du champ spécifié dans sortby
sortdir Direction de tri (ascendant ou descendant) DESC
sortbyTV La variable de modèle pour trier 1.2.0
sortdirTV Direction de trie (ascendant ou descendant) quand vous utilisez une variable de modèle DESC (descendant) 1.2.0
sortbyTVType Spécifiez le type de données de la TV sortby. Les valeurs possibles sont string, integer, decimal, datetime string 1.3.0
limit Limite le nombre de ressources renvoyé. Utiliser `0` un résultat illimité. 5
offset Un décalage des ressources retournées. 0
where Une expression JSON style de critères pour construire une des clauses supplémentaires où. Voir ci-dessous pour un exemple. Voir xPDOQuery
context Liste des clés de contexte pour limiter les résultats délimité par des virgules; si elle est vide, les contextes pour tous les parents spécifiés seront utilisés (tous les contextes si 0 est spécifié).

Autres propriétés

NomDescriptionValeur par défautAjouté depuis la version
showUnpublished Si cela est vrai, montrera également des ressources si elles ne sont pas publiées. 0
showDeleted Si cela est vrai, montrera également des ressources, peu importe si elles sont supprimées. 0
showHidden Si cela est vrai, va montrer des ressources, peu importe si elles sont cachées dans les menus. 0
hideContainers Si elle est définie, ne montrera pas des ressources marquées comme un conteneur (isfolder). 0
includeContent Indique si le contenu de chaque ressource doit être retourné dans les résultats 0
includeTVs Indique si les valeurs de variable modèle devraient être inclus dans les propriétés disponibles pour chaque modèle de ressource. 0
includeTVList Une liste optionnelle délimitée par des virgules de variables de modèle pour inclure explicitement si includeTVs est égale a 1. 1.4.0
prepareTVs Prépares les variables de modèle dans la requette. 1 1.5.0
prepareTVList Limite les TV qui sont préparés à ceux spécifiés par leur nom dans une liste délimitée par des virgules 1.5.0
processTVs Indique si les valeurs TemplateVar doivent être rendus comme ils le feraient sur la ressource résumée. TemplateVars doit être inclus (voir includeTVs / includeTVList) à traiter. 0
processTVList Une liste optionnelle délimitée par des virgules des noms TemplateVar pour traiter explicitement. Modèle Vars spécifiés ici doivent être inclus via includeTVs/includeTVList 1.4.0
tvPrefix Le préfixe pour les TemplateVar tv.
idx Vous pouvez définir l'indice de départ (idx) à partir des ressources, qui est une propriété qui est incrémenté que chaque ressource est renvoyé. 1
first Défini la valeur de idx représentant la première ressouce 1
last Défini la valeur de idx représentant la dernière ressource. Par défaut est # des ressources étant résumé + premier - 1
totalVar Définir la clé d'un espace réservé fixé par getResources indiquant le nombre total de ressources qui serait choisi sans tenir compte de la valeur limite. total
debug Si cela est vrai, va renvoyer la requête SQL dans le journal MODX. false

Placeholders (espaces réservés) disponibles

Les espaces réservés disponibles à vos getResources Chunks de mise en forme sont principalement tributaires des ressources que vous itérez.

Voir : Tous les Tags sur la page des Tags de modèle couramment utilisé, cette page liste les propriétés disponibles pour toutes les ressources.

Si votre ressource a des variables de modèle, ceux qui auront des espaces réservés correspondants (rappelez-vous les placeholders (espace de noms) vont utiliser le préfixe défini par le paramètre &tvPrefixparameter).

En outre, il y a les variables suivantes :

Placeholder (espace de nom)Description
[[+idx]] Augmente à chaque itération, en commençant par 1 (ou la valeur définie par le paramètre &idx).

Exemples

Voir aussi les exemples de sous section de la documentation officiel pour des exemples plus détaillés et des tutoriels.

Affiche une liste des enfants Ressources de la ressource en cours, en utilisant le chunk « myRowTpl » :

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

Affiche toutes les ressources sous la ressource ayant l'ID « 5 », à l'exception des ressources 10, en utilisant le chunk « myRowTpl » :

[[!getResources? &parents=`5` &resources=`-10` &tpl=`myRowTpl`]]

Affiche uniquement la ressource spécifiée, en utilisant le chunk « myRow Tpl » :

[[!getResources? &parents=`-1` &resources=`10,11,12` &tpl=`myRowTpl`]]

Affiche le top 5 dernières ressources publiées sous la ressource avec l'ID « 5 », avec tpl « blogPost », et inclut le champ contenu des ressources renvoyés :

[[!getResources? &parents=`5` &limit=`5` &tpl=`blogPost` &includeContent=`1`]]

Affiche une liste des ressources enfants de la ressource actuelle, ayant pour id de modèle de page « 8 » et utilisant le chunk « myRowTpl » :

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

Affiche une liste des ressources enfants de la ressource actuelle, ayant pour id de modèle de page 1 ou 2 :

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

Affiche une liste des ressources enfants de la ressource actuelle, ayant pour id de modèle de page est 1, 2 ou 3 (vous ne pouvez pas utiliser le même nom de clé plus d'une fois) :

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

Afficher un message lorsque aucun résultat n’est trouvé :

[[!getResources:default=`No results found`? &parents=`[[*id]]` &tpl=`myRowTpl`]]

Exemple avec un Tpl en ligne (@INLINE) :

[[!getResources? &tpl=`@INLINE <li title="[[+longtitle]]">[[+pagetitle]]</li>`]]

Envelopper un getResources dans un autre espace de nom (comme un &outerTpl propriété, qui n'existe pas pour getResources depuis la version 1.6.0, vous pouvez toujours le faire comme ça ou utiliser la propriété &tplWrapper).

[[getResources? ... &toPlaceholder=`results`]] [[+results:notempty=`<ol>[[+results]]</ol>`]]

Affichage des variables de modèles avec getResources

Pour réduire le temps de récupération, getResources ne reçoit pas les valeurs de TV's par défaut. Si vous souhaitez afficher les téléviseurs, vous devez inclure les paramètres suivants :

&includeTVs=`1` &processTVs=`1`

Vous devez également soit préfixer toutes les variables de modèle avec tv. Ou utiliser ce paramètre dans votre appel pour le modifier :

&tvPrefix=``

Dans le chunk Tpl vous utilisez pour afficher la sortie de getResources, utiliser une balise d'espace réservé comme celui-ci (mais avec le nom de votre TV) :

[[+tv.my_tv]]

Utilisation de getPage pour la Pagination

Lorsqu'il est combiné avec getPage, getResources vous permet de faire un système de pagination puissant et flexible sur vos pages.

Exemples :

Prenez 10 premières ressources - trié par publié - en dessous de l'ID de ressources « 17 », pas plus de 2 niveaux de profondeur, avec les tpl 'bloglistPost', y compris les variable de modèle et le contenu des ressources :

[[!getPage? &elementClass=`modSnippet` &element=`getResources` &parents=`17` &depth=`2` &limit=`10` &pageVarKey=`page` &includeTVs=`1` &includeContent=`1` &tpl=`blogListPost` ]]
    [[!+page.nav]]

Et le chunk blogListPost :

<div class="blogPost">
	<div class="date">[[+publishedon:strtotime:date=`%b %d %Y`]]</div> 
	<h2><a href="[[~[[+id]]]]" title="[[+pagetitle]]">[[+pagetitle]]</a></h2> 
	<p class="author">
		<strong>Author:</strong>
		<span class="author">[[+createdby:userinfo=`username`]]</span>
	</p>
	<p class="summary">[[+introtext]]</p>
	<p class="readmore">
		<a href="[[~[[+id]]]]"><span>Lire la suite</span></a>
	</p>
	<div class="clear"></div>
</div>
<hr/>

Dépannage (debugging)

Rien ne se passe ?

Avant d'aller cogner la tête sur un mur, avez-vous vérifié pour vous assurer que ce supplémentaire est réellement installé sur votre site ?


Vous avez un tableau de résultat à la place d’une belle mise en forme ?

Vous avez oublié d'inclure le paramètre « &tpl ». Sans le paramètre &tpl, le Snippet récupère les ressources spécifiées, mais ne sait pas comment les formater. Assurez-vous d'inclure le paramètre &tpl dans votre appel Snippet.
Ou vous avez mal nommé le nom du « tpl » ou oublié de créé le dit « tpl ».
Ou vous avez oublié de mettre le « & » devant un des paramètres.


Tout fonctionne mais vous ne voyez pas le contenu de la ressource affiché ?

Vous avez oublié de mettre le paramètre &includeContent=`1`


Vous avez d’autres problèmes non listés ici ? N’hésitez pas à poser la question sur le forum Français de MODX ou a poser la question ici je ferais mon possible pour vous aider.

N’hésitez pas à partager ou commenter, ça fait toujours plaisir d’avoir des retours ;-)

Partagez cet article

A propos de l'auteur

Steeve

Passionné d’informatique, de Design, de développement d'application et du Web en général (participation au start-up weekend, hackathon, dev Var, formation Google...), j’ai créé ce site afin de partager mes connaissances sur mon système de gestion de contenu préféré MODX. En espérant participer au développement de la communauté.

Commentaires (0)





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