C'est un problème récurrent (en tous cas pour moi !) de devoir répéter les mêmes informations dans plusieurs articles.
En dehors du côté fastidieux, cela nécessite de modifier toutes les instances à chaque changement.
L'action file-view qui permet d'afficher le contenu d'un fichier dans un article est une première approche. Si elle a tout son sens pour des fichiers distants ou immuables, cela devient vite compliqué pour un rédacteur de faire des corrections.
Cette action permet de créer une "réserve" d'articles, pourquoi pas dans une catégorie dédiée, qui seront insérés au fur et à mesure des besoins.
Ceci est mon utilisation, mais je suis sûr que vous en trouverez plein d'autres !
{up jcontent-in-content=id_article}
syntaxe 2 :
{up jcontent_in_content=145}
template{/up jcontent_in_content}
Les mots-clés :
##id## ##title## ##title-link## ##subtitle## ##link##
##intro## ##intro-text## ##intro-text,100## ##content##
##image## ##image-src## ##image-alt##
##date-crea## ##date-modif## ##date-publish##
##author## ##note## ##cat## ##new## ##featured## ##hits##
##CF_id_or_name## : valeur brute du custom field
- jcontent_in_content: ID de l'article
- no-published (no_published) = 1: Liste aussi les articles non publiés
- content-plugin: prise en compte des plugins de contenu pour ##into et ##content##
Modèle de présentation
- template (item-template) = ##content##: modèle de mise en page. Si vide le modèle est le contenu. BBCode accepté
Balise & style pour le bloc parent
- main-tag (block) = div: balise pour le bloc d'un article. 0 pour aucun
- id: identifiant
- main-style: classes et styles inline pour un article
- main-class: classe(s) pour un article (obsoléte)
Format pour les mots-clés
- date-format = %e %B %Y: format pour les dates
- date-locale: localisation pour les dates. Par défaut, celle du navigateur client.
Style CSS
- css-head (base-css): code CSS dans le head
Version 3.1 Ajout option content-plugin pour charger les plugins de contenu. Prise en charge étendue des mots-clés pour les customFields
Un exemple simple
{up jcontent_in_content=140}
Ce simple shortcode affiche l'article d'ID 140 qui contient les onglets ci-dessous.
- ❶ Options par défaut
- ❷ Jeux d'options
- ❸ CSS
- ❹ JS
- ❺ PHP
- ❻ Traduction
UP définit des valeurs par défaut pour les options des actions.
Le webmaster peut indiquer ses préférences dans un fichier /custom/prefs.ini.
Cela permet d'adapter le style au site et facilite la saisie des shortcodes par les rédacteurs
En pratique
- créer un fichier prefs.ini en UTF-8 no-BOM sans un sous-dossier custom du dossier de l'action
- dans la section options, ajouter vos valeurs par défaut sous une forme identique à celle du shortcode. Une par ligne, pas de pipe (|).
[options]
nom_action="argument"
nom_option="argument"
Le fichier prefs.ini peut contenir d'autres informations
- des clés de licence. exemple: google-map, osmap, ...
- des raccourcis pour des arguments d'option. exemple: hr, icon, ...
- des jeux d'options. exemple: hr, ...
Un jeu d'options (ou prefset) permet de définir plusieurs options du shortcode avec son nom.
Pour obtenir la ligne ci-dessus, on ajoute au fichier prefs.ini une section typo-feuille qui contient un ensemble d'options argumentées.
[i-love-up]
icon-text="I\2764UP"
icon-color="red"
fontname="cursive"
hr-width="80%"
hr-bg="linear-gradient(90deg, rgba(255,255,255,1) 0%, rgba(255,0,255,1) 15%, rgba(255,0,255,1) 30%, rgba(255,255,255,1) 50%, rgba(255,0,255,1) 70%, rgba(255,0,255,1) 85%, rgba(255,255,255,1) 99%, rgba(255,255,255,1) 100%)"
hr-height="2px"
Pour l'utiliser, il suffit d'indiquer le nom de la section comme argument principal
{up hr=i-love-up}
Il est aussi possible de l'utiliser avec l'option prefset. Cette méhode est obligatoire pour passer un argument à l'option principale. Voir les 2 exemples ci-dessous
{up hr | prefset=i-love-up}
{up file-download=Mon_Fichier.pdf | prefset=Mon_Jeu_dOptions}
Si vous avez oublié le nom du jeu d'options, ajouter debug ou ? au shortcode puis appeler la page en frontend. Vous aurez la liste de toutes les sections définies pour l'action.
Si vous spécifier une option dans le shortcode, elle sera prioritaire sur la valeur définie dans le jeux d'options.
Ordre de priorité pour la prise en compte des arguments des options :
- option saisie dans le shortcode
- argument du jeu d'option
- argument par défaut (section options du prefs.ini)
- argument défini par le développeur de l'action
Si le fichier prefs.ini n'est pas reconnu, vérifiez la présence des guillemets
Vous désirez uniquement modifier le ou les fichiers CSS pour avoir un rendu différent de celui proposé par défaut.
UP propose un mécanisme très simple :
- créer un sous-dossier custom dans le dossier de l'action concernée
- dupliquer le fichier CSS, SCSS ou JS à personnaliser dans ce sous-dossier. Ne pas modifier son nom.
- adapter le contenu selon vos envies.
Vous continuez à bénéficier des mises à jour de UP pour les fichiers 'non customisés'.
Toutefois, regarder dans le changelog si des modifications ont une incidence sur vos personnalisations. C'est le cas lors d'ajout de fonctionnalités.
Prise en charge du SCSS
Si vous préférez faire vos modifications en SCSS, il suffit de le dupliquer (ou le créer) dans le sous-dossier custom.
Il sera automatiquement compilé lors de l'appel d'une action scss-compiler.
Attention : si le fichier SCSS fait des importations de partiels, il peut être nécessaire d'adapter le chemin. Dans la majorité des cas, il suffit d'ajouter ../ au début du chemin
@import "../../assets/variables";
devient @import "../../../assets/variables";
En cas de souci, pour revenir au comportement par défaut, il suffit de modifier le nom du sous-dossier custom ou d'un fichier pour qu'il ne soit plus pris en compte.
Il est possible de surcharger les fichiers Javascript utilisés par UP en créant votre version dans le sous-dossier custom de l'action
Pour surcharger un fichier, il faut :
- créer un sous-dossier custom, soit
plugins/content/up/actions/NOM_ACTION/custom
- dupliquer le fichier à surcharger dans ce dossier
- faire les modifications désirées sur la version du fichier dans custom
Note : si le fichier est dans un sous-dossier de l'action, il faut recréer cette arborescence dans le dossier custom.
Exemple :
plugins/content/up/actions/image_gallery/lib/jqPhotoSwipe.js
Le fichier ci-dessus, doit être surchargé ici :
plugins/content/up/actions/image_gallery/custom/lib/jqPhotoSwipe.js
Note : hormis le script principal de l'action (NOM_ACTION.php), quasiment tous les fichiers peuvent être substitués
Vous désirez modifier le comportement d'une action en modifiant son fichier PHP ou créer une nouvelle action en utilisant une autre action comme modèle.
L'opération nécessite 3 étapes :
- dupliquer le dossier de l'action originale en le renommant au nom de votre action. Exemple: mon_action
- renommer le fichier PHP principal. Il doit avoir le même nom que le dossier
- renommer la classe principale de ce fichier avec le nouveau nom de l'action
Ensuite, c'est à vous de jouer pour créer une action toute neuve!
N'oubliez pas de supprimer ou de mettre à jour le lien vers la page de démo.
- vous ne prévoyez pas de page de démo : supprimer la ligne
$this->set_demopage();
- vous créez une page de démo sur votre domaine : indiquer l'url complête
$this->set_demopage('https://monsite.fr/mademo');
- la démo de l'action d'origine est toujours valide : ne changer rien
N'oubliez pas de documenter votre code, pour que l'action upactionslist puisse l'afficher.
Vous ne bénéficiez plus des mises à jour de UP.
Pour traduire dans une autre langue, il suffit de dupliquer le fichier en-GB.ini du sous-dossier UP pour votre langue, puis de traduire les textes explicatifs.
Modifier le nom de l'action ou des options
Vous ne pouvez pas supprimer le nom de l'action ou de ses options, mais vous pouvez créer des synonymes dans le fichier up/dico.ini en les ajoutant (un par ligne) sous la forme mot-nouveau=mot-connu. Exemple : jnews=jcontent_by_categories
Attention ces adaptations sont globales au plugin. Si vous ajouter la correspondance breite=width pour traduire largeur en allemand, ce changement sera utilisable par toutes les autres actions
Pour regrouper ces changements, il est nécessaire de lancer l'action upactionslist avec l'option make-dico. Tous les fichiers dico.ini des actions sont regoupés en un seul fichier dico.json à la racine du plugin.
Les synonymes existants sont visibles dans la petite barre bleue de la documentation du site
Voir aussi Gestion des traductions
- action color : informations sur les couleurs UP
- Personnaliser les couleurs de UP
Dans une fenêtre modale
Il est possible d'insérer cette action dans une action "modal" a condition que l'article ne contienne que du HTML pur sans Javascript.
Cet assemblage de shortcodes ne fonctionnera pas !
L'entête de la page n'est pas repris, donc le javascript est inopérant.
{up modal | label=Voir les moyens de personnaliser une action}
{up jcontent_in_content=140}
{/up modal}
Voir les moyens de personnaliser une action
Il faut préférer la forme classique, où on fournit le lien vers la page comme argument de modal.
{up modal=index.php?option=com_content&view=article&id=140&catid=15}
Voir les moyens de personnaliser une action
{/up modal}
🆙 Comment personnaliser une action
{up jcontent_in_content=id_article}##content##{/up jcontent_in_content}
Les options
La table ci-dessous est un comparatif des options proposées par les différentes actions Jxxx
A: jcontent-in-content, AL: jcontent-list, AC: jcontent-by-categorie (jnews), AS: jcontent-by-subcat, AT: jcontent-by-tags, CT: jcategories-by-tags, CM: jcontent-metadata
Si vous avez appelé ce tableau à partir de la démo d'une action, la colonne la concernant est sur fond jaune.
Option | A | AL | AC | AS | AT | CT | CM | Description |
---|---|---|---|---|---|---|---|---|
principale | ID(s) catégorie(s) séparé avec virgule, vide pour celui de l'article actuel ou 0 pour tout les IDs | |||||||
maxi | nombre maxi d'articles dans la liste. non précisé (par défaut) = tous | |||||||
exclude | 0 pour exclure l'article en cours | |||||||
current | toutes les catégories seront sélectionnées sauf celles indiquées dans l'option principale | |||||||
no-published | liste aussi les articles non publiés. Vrai par défaut | |||||||
content-plugin | prise en compte des plugins de contenu pour mots-clé content et intro. Peut échouer en cas d'appels récursifs | |||||||
sort-by | ordre de tri: title, ordering,created,modified,publish_up (par défaut),id,hits | |||||||
sort-order | ordre de tri : asc, desc (par défaut) | |||||||
author | filtre sur auteur: aucun (par défaut) OU id1,id2 OU article auteur de l'article en cours OU current utilisateur connecté. | |||||||
template | modèle de mise en page. Si vide le modèle est le contenu | |||||||
main-tag | balise pour le bloc englobant tous les articles. div par défaut, 0 pour aucun | |||||||
main-style | classes et styles inline pour bloc principal (inactif si main-tag=0) | |||||||
main-class | classe(s) pour bloc principal (inactif si main-tag=0) | |||||||
item-tag | balise pour le bloc d'un article. div par défaut, 0 pour aucun. | |||||||
item-style | classes et styles inline pour un article (inactif si art-tag=0) | |||||||
item-class | classe(s) pour un article (obsoléte) (inactif si art-tag=0) | |||||||
date-format | format pour les dates. '%e %B %Y' par défaut. (1) | |||||||
date-locale | localisation pour les dates au format 'fr_FR'. Celui du client par défaut. | |||||||
featured-html | code HTML pour article en vedette. Défaut: ⭐ ⭐ | |||||||
new-days | 30 par défaut. nombre de jours depuis sa création pour considérer un article comme nouveau | |||||||
new-html | Code HTML pour le badge NEW. nouveau par défaut | |||||||
image-src | image utilisée si aucune image n'est trouvée dans l'article. Défaut: '//lorempixel.com/300/300' | |||||||
image-alt | texte alternatif si aucune image n'est trouvé dans l'article | |||||||
tags-list-separator | séparateur entre les mots-cles | |||||||
tags-list-prefix | texte avant les autres clés éventuelles si tag {tag-list} | |||||||
tags-list-style | classe ou style pour les autres mots-clés | |||||||
no-content-html | texte si aucun contenu | |||||||
css-head | code CSS dans le head | |||||||
spécifique jcontent-list (ex article-category) | ||||||||
title | titre HTML si article trouvé. | |||||||
title-tag | niveau du titre | |||||||
title-style | classes et styles inline pour le titre | |||||||
title-class | classe(s) pour le titre | |||||||
list-style | classes et styles inline pour la liste | |||||||
list-class | classe(s) pour la liste | |||||||
class | idem main-class (conservé pour compatibilité descendante) | |||||||
style | idem main-style (conservé pour compatibilité descendante) | |||||||
spécifique jcontent-by-subcat | ||||||||
cat-level | 0 a 99 - niveau maxi des sous-categories explorées | |||||||
cat-tag | Balise pour les lignes catégories. LI pour passer en mode list arborescente | |||||||
cat-class | classes et styles inline pour les catégories | |||||||
cat-style | classes et styles inline pour les catégories | |||||||
cat-template | modèle pour les lignes de categories | |||||||
cat-root-view | affiche l'unique categorie racine. si root=jamais, si plusieurs=toujours | |||||||
cat-separator | pour separer l'arborescence des categories | |||||||
spécifique jcontent-metadata | ||||||||
meta-title-min | alerte coloré si le titre contient moins de lettres | |||||||
meta-title-max | alerte coloré si le titre contient plus de lettres | |||||||
meta-desc-min | alerte coloré si la description contient moins de lettres | |||||||
meta-desc-max | alerte coloré si la description contient plus de lettres |
(1) - Le format d'affichage est défini par l'option date-format. Sa valeur par défaut est : %e %B %Y qui affiche la date sous la forme 1 mai 2019.
Il s'agit de la codification PHP pour la fonction strftime. Les codes usuels sont %y année sur 2 chiffres, %Y année sur 4 chiffres, %m mois sur 2 chiffres, %b nom mois abrégé en 3 lettres, %B nom mois complet, %e jour (1-31), %d jour sur 2 chiffres (01-31), %A nom jour complet, %a nom jour abrégé, %H heure (00-23), %M minutes (00-59)
Les mots-clés
La table ci-dessous est un comparatif des mots-clés utilisés par les différentes actions Jxxx.
A: jcontent-in-content, AL: jcontent-list, AC: jcontent-by-categorie (jnews), AS: jcontent-by-subcat, AT: jcontent-by-tags, CT: jcategories-by-tags, CM: jcontent-metadata
Si vous avez appelé ce tableau à partir de la démo d'une action, la colonne la concernant est sur fond jaune.
Mot-clé | A | AL | AC | AS | AT | CT | CM | Description |
---|---|---|---|---|---|---|---|---|
##id## | ID de l'article | |||||||
##title## | titre de l'article sans lien vers l'article | |||||||
##title-link## | titre de l'article avec lien vers l'article | |||||||
##subtitle## | sous-titre (partie du titre après le tilde) (1) | |||||||
##maintitle## | titre (partie du titre avant le tilde) (1) | |||||||
##link## | à utiliser comme argument de l'attribut href d'une balise a. | |||||||
##intro## | texte d'introduction de l'article au format HTML. (2) | |||||||
##intro-text## | texte d'introduction de l'article au format texte sans aucune balise HTML. (2) | |||||||
##intro-text,100## | variante qui permet de limiter le nombre de caractères affichés (100 dans cet exemple). (2) | |||||||
##content## | Le contenu si existant. (2) | |||||||
##image## | image d'introduction de l'article ou à défaut la première image trouvée dans le texte d'introduction. | |||||||
##image-link## | image avec lien vers l'article | |||||||
##image-src## | variante du mot-clé précédent qui permet un plus grand contrôle sur le résultat. (4) | |||||||
##image-alt## | idem | |||||||
##date-crea## | date de création (4) | |||||||
##date-modif## | date de modification (4) | |||||||
##date-publish## | date de publication de l'article (4) | |||||||
##date-publish-end## | date de fin de publication de l'article (4) | |||||||
##date-featured## | date de mise en vedette de l'article (4) | |||||||
##date-featured-end## | date de fin de mise en vedette de l'article (4) | |||||||
##author## | nom de l'auteur de l'article | |||||||
##note## | note sur l'article | |||||||
##cat## | nom de la catégorie | |||||||
##cat-link## | lien vers la catégorie | |||||||
##new## | badge nouveau si l'article est récent. Voir les options ‘new-jours’ et ‘new-html’ | |||||||
##featured## | si article en vedette | |||||||
##count## | nombre d'article dans la catégorie | |||||||
##hits## | le nombre de vues de l'article | |||||||
##tags-list## | liste des mots-clés | |||||||
##uplist## | liste des actions dans l'article | |||||||
##upnb## | nombre d'actions dans l'article | |||||||
##CF## | CustomField. Remplacer CF par son nom ou son ID. Voir modèle avec %label%, %value% et %rawvalue% | |||||||
##nivaccess## | niveau d'accès requis | |||||||
##meta-index## | index ou no-index | |||||||
##meta-follow## | index ou no-index | |||||||
##meta-title## | longueur de la meta title avec alerte colorée | |||||||
##meta-desc## | longueur de la meta description avec alerte colorée | |||||||
##meta-key## | liste des meta keywords | |||||||
spécifique jcontent-by-subcat | ||||||||
##catpath## | chemin des catégories parentes |
(1) - il s'agit d'une astuce que j'utilise pour décomposer le titre d'un article en titre et sous-titre en les séparant par le caractère tilde (~). En dehors de la possibilité de styler différemment les 2 parties, un titre plus long est meilleur pour le référencement.
Concrétement, si le tag {subtitle} est présent dans votre template et que le titre contient un tilde, il sera scindé en {titre] et {subtitle}. Dans le cas contraire, le {subtitle} sera vide et {title}: contiendra la totalité du titre de l'article.
(2) - A la différence de Joomla, si l'introtext n'existe pas, il n'est pas remplacé par le contenu. Et vice-versa. Si le besoin existe, on peut créer un mot-clé "article,X" qui insère les X premiers caractères en supprimant les shortcodes UP.
(3) - Exemple de template: <img src="/{image-src}" alt="{image-alt}" class="img-sepia left" width="100px">
.
⚠ si l'article ne contient pas d'image, le reste du code sera quand même inséré.
(4) - Le format d'affichage est défini par l'option date-format. Sa valeur par défaut est : %e %B %Y qui affiche la date sous la forme 1 mai 2019. Il s'agit de la codification PHP pour la fonction strftime. Les codes usuels sont %y année sur 2 chiffres, %Y année sur 4 chiffres, %m mois sur 2 chiffres, %b nom mois abrégé en 3 lettres, %B nom mois complet, %e jour (1-31), %d jour sur 2 chiffres (01-31), %A nom jour complet, %a nom jour abrégé, %H heure (00-23), %M minutes (00-59)
Si cela est impossible, remplacez l'accolade ouvrante par son code {
, soit pour id : {id}
.
Une autre méthode est de mettre en gras une partie : {<b>id</b>}
.
Si vous l'utilisez avec une action csv2table, pour éviter le conflit avec le séparateur point-virgule, changer le séparateur utilisé ou mettre le contenu de la cellule entre guillemets. "&#123;id}"
ou {<b>id</b>}
Idées et conseils
Titre dans les articles
Si vous utilisez TOC, pensez a mettre les titres de l'article inséré avec une class notoc pour éviter qu'il soit repris par le sommaire de l'article hôte.
Liste des articles récurrents
Pour disposer d'une liste papier des articles récurrents, il suffit d'utiliser l'action jcontent_by_categories, suivi d'un simple copier-coller
{up csv2table | model=blue | col=c5-80-d20 | header=id;titre article;date création;auteur}
{up jcontent-by-categories=15 | main-tag=0 | item-tag=0}##id##;##title##;##date-crea##;##author##{/up jnews}
{/up csv2table}
id | titre article | date création | auteur |
---|---|---|---|
275 | Conversion markdown vers Word | 6 May 2022 | lomart |
254 | UP - liste des fichiers | 3 Jun 2021 | lomart |
152 | Utiliser les caractères Unicode ~ syntaxe | 17 Dec 2019 | lomart |
151 | Les caractères Unicode ~ menu local | 1 Nov 2019 | lomart |
145 | Jxxx options ~ pour les actions Jcontent | 12 Dec 2019 | lomart |
148 | Jxxx mots-clés ~ pour les actions Jcontent | 12 Dec 2019 | lomart |
upactionslist (1) tabslide (1) toc (1) readmore (1) span (1) hr (2) jcontent_in_content (4) modal (2) addcsshead (1) csv2table (1) jnews (1) jcontent-info (1)