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

🆙 upsearch : Recherche une action dans le contenu des articles et/ou modules (params)

Cliquer pour lire la documentation

syntaxe {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
@version: UP-2.5 @author: Lomart @license: GNU/GPLv3 @tags: UP

    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}

     

    Le résultat

    250 ; upsearch ; "regex recherchera dans la totalité du texte d'un article"

    250 ; upsearch ; "regex=#regex.*article"

    250 ; upsearch ; "regex=regex.*article"

    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=Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.}"

    142 ; Module : Donation ; "content: {up donation=Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. | title=Merci pour v ..."

    166 ; Module : Menu footer ; "params[item_last]: {up donation=Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. | title=Merci pour v ..."

    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##")

    Pour info, cette page utilise 24 action(s) :
    upactionslist (1) flexauto (6) upsearch (8) div (1) icon (3) table-sort (1) csv2table (1) printer (1) csv2def (1) jcontent-info (1)