J'ai écrit cette action pour m'aider dans la réalisation de ce site.
J'utilise souvent l'action jcontent_in_content sur ce site pour afficher des petits textes explicatifs. J'avais besoin de connaitre les utilisations de ces textes pour les remanier ou les supprimer en toute sécurité.
Comme elle permet également de rechercher tout type de contenu, j'ai décidé de l'inclure dans la version de base de UP
L'action permet un copier-coller ou une impression avec l'action printer
{up upsearch=action1,action2 | regex=... | module}
Mots-clés pour template
##id## ##title## ##title-link## ##subtitle## ##cat## ##date-crea## ##date-modif##
##text## : résultat recherche
Critères de recherche
- upsearch: liste des actions (ou synonyme) séparées par des virgules
- regex: motif de recherche dans le shortcode ou dans tout le contenu si shortcode vide
- cat: liste id des categories d'articles, séparateur:virgule. vide = toutes
- module: pour recherche dans le champ 'params'. vide = tous, partie du nom du module
- no-published (no_published): 1 recherche dans tous les articles archivé, non publié, a la corbeille
Mise en forme du résultat
- sort-by = title: tri pour article: title, ordering, created, modified, publish_up, id, ... ou text pour contenu recherche
- sort-order = asc: ordre de tri : asc, desc
- only-one: 1 : afficher un seul resultat par article
- maxlen: nombre de caractères maxi pour le resultat
- template (item-template) = [p]##id## ; ##title-link## ; "##text##"[/p]: modèle pour retour. titre article et texte trouve pour tableau
- date-format = %Y-%m-%d: format pour les dates
- target = _blank: pour le lien sur article
Style CSS
- id: identifiant
- class: classe(s) pour bloc
- style: style inline pour bloc
- css-head (base-css): style ajouté dans le HEAD de la page
un exemple simple
Le shortcode
{up upsearch=qrcode}
Le résultat
165 ; qrcode ; "{up qrcode=url | url=https://up.lomart.fr}"
Ce shortcode retourne l'ID, le titre et un lien vers l'unique article de ce site contenant l'action qrcode. Le shortcode complet est également retourné.
L'argument principal peut être le nom 'officiel' (table_by_rows), sa version avec des tirets (table-by-rows) ou un synonyme (table-par-lignes)
Toutes les variantes du nom de l'action sont recherchées.
Il est possible d'indiquer plusieurs actions en séparant les noms par des virgules.
Paramétrer la recherche
Limiter la longueur du résultat
only-one : affiche uniquement le premier résultat de chaque article
maxlen : le nombre maxi de caractères. 3 points sont ajoutés en fin pour signaler la troncature.
Le shortcode
{up upsearch=counter | only-one | maxlen=50}
Le résultat
133 ; counter ; "{up counter=0,250}"
2 ; Présentation ; "{up counter=0,{up sql=content | select=count(id) | ..."
317 ; random ; "{up counter=0,{up random=100-9999}"
Réduire le champ de recherche
L'option regex permet de limiter les résultats. Comme son nom l'indique, il est possible d'indiquer une expression régulière.
L'exemple ci-dessous est identique au précédent hormis que l'on retourne uniquement le shortcode counter qui contient le mot sql
Pour une action
Le shortcode
{up upsearch=counter | regex=sql | only-one | maxlen=50}
Le résultat
2 ; Présentation ; "{up counter=0,{up sql=content | select=count(id) | ..."
Pour une recherche simple
Si on ne précise pas d'action comme option principale, le motif regex recherchera dans la totalité du texte d'un article.
Pour la démonstration, nous allons rechercher le texte en gras à la fin de la phrase précédente. Notez qu'il trouve aussi le code et le shortcode de la démo.
Le shortcode
{up upsearch | regex=#regex.*article#U | maxlen=50}
L'option regex peut contenir un texte simple ou une expression régulière délimitée par un de ces caractères : #/@~$
Un texte simple sera compris comme #texte simple#i
, soit une recherche non sensible min/maj.
Si cela ne correspond pas à votre besoin, il suffit d'indiquer une regex.
L'option cat permet d'indiquer une liste des ID catégories (séparées par des virgules) pour la recherche. Exemple : cat = 2,8
Pour reprendre l'exemple de la recherche de l'action counter qui est utilisé sur la page d'accueil et sa démo, ajouter cat=2
permet de rechercher uniquement dans la catégorie principale.
Le shortcode
{up upsearch=counter | cat=2}
Le résultat
2 ; Présentation ; "{up counter=0,{up sql=content | select=count(id) | where=catid=8 and state=1}"
Par défaut, seuls les articles et modules publiés sont inclus dans la recherche, en ajoutant l'option no-published, on recherche également les dépubliés ✖, les archivés ▤ et les poubellisés 🗑. Le symbole correspondant est ajouté devant le titre.
Et les modules
Pour rechercher dans tous les modules, il suffit d'ajouter l'option module sans argument.
Pour limiter la recherche à un type de module, on peut indiquer une partie de son nom. Exemple : module=custom
recherchera dans les modules mod_custom et mod_lmcustom
La recherche est réalisée (pour l'instant) dans les champs content et params. Cet emplacement est indiqué en gras avant le résultat.
Le shortcode
{up upsearch=donation | module=custom | only-one | maxlen=50}
Le résultat
213 ; donation ; "{up donation=
142 ; Module : Donation ; "content: {up donation=
166 ; Module : Menu footer ; "params[item_last]: {up donation=
La mise en forme
Pour une recherche rapide, on peut se contenter de la présentation de base. Le template par défaut est conçu pour un affichage par l'action csv2table.
{up table-sort | pagination=10 | pagination-class=btn btn-primary }
{up csv2table | model=blue | header=ID;Titre article;résultat recherche;date modif | col=5-25-60-10}
{up upsearch=jcontent_in_content
| no-published
| template=[p]##id## ; ##title-link## ; "##text##" ; ##date-modif##[/p]}
{/up csv2table}
{/up table-sort}
ID | Titre article | résultat recherche | date modif |
---|---|---|---|
107 |
csv2list | {up jcontent_in_content=181} | 2022-11-16 |
58 | filter | {up jcontent_in_content=139} | 2023-01-03 |
146 | jcategories-by-tags | {up jcontent_in_content=145} | 2022-11-22 |
146 | jcategories-by-tags | {up jcontent_in_content=148} | 2022-11-22 |
136 | jcontent-by-categories | {up jcontent_in_content=145} | 2023-10-11 |
136 | jcontent-by-categories | {up jcontent_in_content=148} | 2023-10-11 |
236 | jcontent-by-subcat | {up jcontent_in_content=145} | 2024-08-10 |
236 | jcontent-by-subcat | {up jcontent_in_content=148} | 2024-08-10 |
147 | jcontent-by-tags | {up jcontent_in_content=145} | 2023-10-11 |
147 | jcontent-by-tags | {up jcontent_in_content=148} | 2023-10-11 |
137 | jcontent-in-content | {up jcontent_in_content=140} | 2023-10-11 |
137 | jcontent-in-content | {up jcontent_in_content=140} | 2023-10-11 |
137 | jcontent-in-content | {up jcontent_in_content=145} | 2023-10-11 |
137 | jcontent-in-content | {up jcontent_in_content=148} | 2023-10-11 |
61 | jcontent-list | {up jcontent_in_content=145} | 2022-11-17 |
312 | jcontent-metadata | {up jcontent_in_content=145} | 2023-10-30 |
312 | jcontent-metadata | {up jcontent_in_content=148} | 2023-10-30 |
130 | Références | {up jcontent_in_content=151} | 2023-05-07 |
179 | upactionslist | {up jcontent-in_content=275} | 2022-11-29 |
La table ci-dessus me permet de savoir quels articles utilisent l'action jcontent_in_content et pour quel contenu ! Le tri et la recherche facilitent l'analyse.
L'ajout de la colonne date-modif au template me permet de voir rapidement si l'article a été modifié récemment. Notez que le mot-clé est entre guillemets doubles pour éviter qu'un point-virgule dans le résultat perturbe la lecture du CSV.
Une variante
Pour une vérification / correction qui peut s'étendre sur plusieurs jours, j'aime bien avoir une liste papier pour suivre et noter mes modifs.
Voici le shortcode que j'utilise :
{up printer= ⎙ Imprimer la liste ci-dessus | class=btn btn-primary}
{up upsearch=jcontent_in_content
| sort-by=id | no-published | only-one
| module
| template=[p]##id## = ##title-link## (##date-modif##) ##text## [/p]
| class=box-grisPale mh2}
{/up printer}
Notez que j'ai indiqué l'ordre de tri pour les articles avec l'option sort-by. le template est adapté pour une sortie papier
58 = filter (2023-01-03) {up jcontent_in_content=139}
61 = jcontent-list (2022-11-17) {up jcontent_in_content=145}
107 = csv2list (2022-11-16) {up jcontent_in_content=181}
130 = Références (2023-05-07) {up jcontent_in_content=151}
136 = jcontent-by-categories (2023-10-11) {up jcontent_in_content=145}
137 = jcontent-in-content (2023-10-11) {up jcontent_in_content=140}
146 = jcategories-by-tags (2022-11-22) {up jcontent_in_content=145}
147 = jcontent-by-tags (2023-10-11) {up jcontent_in_content=145}
179 = upactionslist (2022-11-29) {up jcontent-in_content=275}
236 = jcontent-by-subcat (2024-08-10) {up jcontent_in_content=145}
312 = jcontent-metadata (2023-10-30) {up jcontent_in_content=145}
Les mots-clés disponibles
Comme à son habitude, UP utilise des mots-clés et du bbcode pour définir le résultat attendu.
- ##id##
L'identifiant de l'article ou du module
- ##title##
le titre de l'article ou du module avec le symbole d'état si l'option no-publishedest activée .
Dans le cas d'un module, le champ contenant l'élément trouvé est indiqué au début (
content
: le champ content de la table #_modules,params[xxx]
: la clé xx du champ params )- ##title-link##
Ajoute un lien vers l'article concerné en frontend. Il est ignoré pour un module.
- ##subtitle##
Le sous-titre est une notion personnelle. Pour une mise en forme des titres, je sépare le titre et le sous-titre par un caractère tilde. Exemple : titre ~ sous-titre
Ceci est pris en compte par des overrides ou des composants comme cg-isotope
Dans notre cas, cela allège le résultat.
- ##cat##
Le nom de la catégorie de l'article ou le mot *MODULE*
- ##date-crea##
- ##date-modif##
Date de création ou de modification de l'article. N.C. pour un module
- ##text##
Le texte correspondant à la recherche. Si un nom d'action est spécifié, on récupère la totalité du shortcode ouvrant. La longueur maxi retournée est contrôlée avec l'option maxlen.
Si vous récupérer le contenu pour l'afficher dans une table avec csv2table, je vous conseille de mettre le mot-clé entre guillemets doubles ("##text##")
upactionslist (1) flexauto (6) upsearch (8) div (1) icon (3) table-sort (1) csv2table (1) printer (1) csv2def (1) jcontent-info (1)