web-dev-qa-db-fra.com

{loadposition} Seulement dans la première contribution du blog

J'ai le problème suivant. La {loadposition} est spécifiée dans le texte de la contribution et apparaît dans l'article comme il se doit. Malheureusement, j'ai maintenant aussi dans la vue de blog de 6 articles les uns des autres. Comment puis-je faire en sorte que {loadposition} ne s'affiche qu'une seule fois dans la vue de blog?

Désolé pour mon mauvais anglais

Modifier:

Je voudrais charger un module sur une position définie. En article simple c'est ok. Mais dans Blogview, le module apparaît sur chaque blog. Je voudrais montrer le module uniquement à la première entrée de blog

Mitcha

1
Mitcha

Vous devrez peut-être donner un exemple plus spécifique de ce que la zone de module fait pour la suggestion idéale. Cependant, quelques idées qui pourraient vous orienter dans la bonne direction:

Plugin

Créez un plugin qui s'exécute avant le plugin "Content - Load Modules". Vous en aurez besoin pour détecter l’affichage de la page et, s’il détecte la disposition de la catégorie de blog, effacez tout {loadposition} que vous ne souhaitez pas afficher de sorte que, lorsque "Content - Load Modules" est exécuté, les modules indésirables n'existent plus dans le code analysé.

tiliser plus

Définissez la vue de la catégorie pour afficher uniquement le contenu avant la pause En savoir plus et la vue de l'article pour afficher uniquement le contenu après la pause en savoir plus. Placez manuellement les modules là où ils devraient apparaître dans la vue des catégories, c’est-à-dire que sur une page, il apparaîtra au-dessus et au-dessous du champ En savoir plus. Cela pourrait s'avérer assez fastidieux pour l'administrateur qui pourrait avoir à dupliquer beaucoup de contenu, selon le fonctionnement de votre site.

CSS

Masquer les modules indésirables en utilisant CSS dans le modèle. Ce n’est pas une pratique exemplaire, mais une approche simple et rapide.

Module

Mettez à jour (si vous en êtes le vôtre) ou substituez (si vous êtes au cœur ou à une tierce partie) le modèle du module afin qu'il compte le nombre de fois où il a été chargé sur une page, et ne génère aucun contenu ni aucune sortie en conséquence.

Design

Doit-il apparaître dans l'article ou pouvez-vous placer le module ailleurs sur la page sans nuire à la convivialité? Si l'administrateur doit placer le même module à chaque fois qu'un article est créé, cela peut sembler être un problème de conception.

Mise à jour

Existe-t-il une raison pour laquelle vous ne pouvez pas créer une zone de module dans votre modèle - au-dessus ou au-dessous de la zone de composant - et attribuer le module via le gestionnaire de module? D'après les informations que vous avez données, cela semble être la meilleure approche.

2
Richard B

Si vous voulez que loadposition ne soit chargé qu'une seule fois dans la vue Blog, vous devez faire une instruction if dans

composants/com_content/views/category/tmpl/blog.php

Voici la ligne où il compte les articles

https://github.com/joomla/joomla-cms/blob/staging/components/com_content/views/category/tmpl/blog.php#L72

<?php $leadingcount = 0; ?>

0 est le premier. Vous pouvez donc faire une ligne avant cette ligne: https://github.com/joomla/joomla-cms/blob/staging/components/com_content/views/category/tmpl/blog.php#L8

<?php $leadingcount++; ?>

En disant

<?php 
 if ($leadingcount == 0) {
 // do stuff e.g.
 {loadposition myModulePosition}
}
?>

Parce que vous lui dites de ne le faire que si le nombre de meneurs == 0, il ne le fera que la première fois. Toutefois, si vous en avez également besoin dans votre article, il peut être préférable de vérifier d'abord la vue de l'article.

Vous pouvez le faire en faisant ceci:

<?php 
if ($view == 'article') {
 // do stuff e.g.
 {loadposition myModulePosition}
} ?>

Vous pourriez même décider de préférer une position de module différente pour chaque cas.

Je ne sais pas si cela fonctionnera hors de la boîte, vous devrez peut-être faire content prepare mais depuis l'autre {loadposition xxxx} fonctionnent, j'en doute. Si vous en avez besoin, vous pouvez trouver comment faire de même avec mon autre réponse Est-il possible d'ajouter une nouvelle position de module dans un module?

0
Eoin