web-dev-qa-db-fra.com

Joomla 3.x - Mise à jour automatique du champ personnalisé dans l'article

Peut-être que je n'utilise pas correctement les champs personnalisés, mais voici mon problème:

J'ai un morceau de texte qui apparaît dans un certain nombre d'articles différents. Plutôt que d'avoir à mettre à jour chaque article individuel lorsque j'ai besoin de modifier le texte, j'ai essayé d'utiliser un champ personnalisé.

Cela s'affiche correctement dans les articles, MAIS lorsque je mets à jour le champ personnalisé (valeur par défaut), la mise à jour n'est PAS reflétée dans les divers articles.

Donc, pour plus de détails:

J'ai un certain nombre d'articles différents. Chacun a un texte spécifique qui est commun à tous ces articles ... disons que le texte est "Le gestionnaire de compte actuel est M. Blog". J'ai donc créé un champ personnalisé appelé 'Account_Mgr, et il a' Mr Blog 'comme texte par défaut. J'ai ajouté ce champ dans tous les articles pertinents {champ 1} (ou quel que soit l'identifiant), et je veux changer périodiquement "Mr Blog" en "Miss Smith", lorsque le gestionnaire de compte change.

Plutôt que d'avoir à changer le même texte dans plusieurs articles, lorsque je veux passer à "Miss Smith", j'utilise le champ personnalisé et j'ai changé ce champ unique (de Blog à Smith). Je m'attendais à ce que tous les articles contenant ce champ personnalisé ({field 1}) se mettent à jour automatiquement, mais aucun ne l'a fait.

J'ai effacé le cache de Joomla et du navigateur, je n'utilise pas de CDN et j'ai essayé un autre navigateur ... le tout sans effet.

Suis-je en train de faire quelque chose de mal, OR les champs personnalisés ne doivent-ils PAS être utilisés de cette manière?

merci, Mike

2
ml09616

En fait, je ne fermerais pas cette question. Parce qu'il y a des réponses simples, comme ce que Sharky a donné. Mais il existe une solution plus simple et plus conviviale à cette question qui utilise des modules à l'intérieur des articles (ou en dessous ou au-dessus) aux fins mentionnées dans la question. Si j'ai bien compris la question.

Si vous placez du contenu dans un module personnalisé (texte, images, quoi que ce soit) avec une position de module personnalisé et que vous modifiez ensuite ce contenu de ce module, alors n'importe où ce module est publié, par exemple en utilisant {loadposition custommoduleposition}, le contenu affiché sera également modifié. C'est le but du PO ici. Et c'est pour cela que les modules sont là dans Joomla par exemple. S'il change le contenu, il doit se refléter partout où il est affiché.

Donc, créez et utilisez des modules personnalisés au lieu de champs pour votre objectif.

1
Zollie

Ce que vous essayez de réaliser est possible avec des champs personnalisés mais ce n'est pas pratique. Ce que vous devez faire est d'effacer la valeur du champ chaque fois que vous créez ou modifiez un article. De cette façon, il ne sera pas enregistré dans la base de données et la valeur par défaut réelle définie dans les paramètres de champ personnalisés sera affichée.

Mais la bonne solution serait une extension de shortcode appropriée.

0
Sharky

Comment archiver cela:

  • Créez un champ personnalisé de type Liste où vous stockez tous vos managers
  • Chaque élément de la liste doit avoir son Label (par exemple M. Bob) et unique Value (par exemple 1 ou manager1 )
  • Dans l'article, sélectionnez le gestionnaire en utilisant la liste déroulante des gestionnaires qui vient d'être créée
  • Lorsque vous devez changer de gestionnaire, accédez à votre édition de champ personnalisée et remplacez le Label du gestionnaire par un nouveau (par exemple, M. Jenkins)
  • Tous les articles dans lesquels vous avez sélectionné ce gestionnaire particulier afficheront le nouveau nom (car le gestionnaire est identifié par son ID/valeur)

C'est tout. Tous les articles dans lesquels vous avez sélectionné le gestionnaire utiliseront le nouveau nom.

Comment ça fonctionne:

Chaque article ne stocke que la valeur (et la valeur de la liste de sélection se trouve dans notre exemple 1, manager1 ou quelle que soit la valeur que vous définissez comme ID de manager). Ainsi, lorsque vous changez l'étiquette, vous ne touchez pas la valeur, juste l'étiquette de cette valeur. De cette façon, tout en affichant l'article, vous utilisez la valeur pour identifier le gestionnaire actuel, mais utilise son étiquette pour afficher le gestionnaire.

Pourquoi utiliser un champ personnalisé est une meilleure solution?

Manager est une donnée attachée à un certain article (entité). Les données doivent être structurées et vous devez pouvoir les interroger. Disons qu'un jour vous souhaitez rechercher les articles d'un manager sélectionné. Faire cela en utilisant des modules nécessiterait une analyse HTML.

Gardez également à l'esprit que l'utilisation d'un champ déroulant des gestionnaires disponibles est plus conviviale. Vous n'avez pas besoin de vous souvenir du code court ou de l'ID du module. Vous avez une liste prédéfinie. En bref: vous avez plus de contrôle sur vos données et moins d'espace pour les erreurs.

Est-ce la meilleure solution? Non. L'utilisateur doit toujours accéder aux champs personnalisés et rechercher le champ Manager. Mais c'est tout ce que vous pouvez tirer de Joomla! sans créer de composant personnalisé.

0
Artur Stępień