web-dev-qa-db-fra.com

Comment supprimer l'ID d'élément de menu du lien d'élément k2

J'ai deux modèles différents sur mon site, appelons-les simplement Tcat et Titem. Ma page de vue de catégorie k2 utilise Tcat, autrement dit, l'élément de menu de la page de vue de catégorie k2 est associé à Tcat. Je souhaite que les pages d’article k2 utilisent Titem, c’est-à-dire que lorsque je clique sur un lien d’article dans la page d’affichage des catégories, j’espère que la nouvelle page affichant cet article utilisera Titem. Cependant, par défaut, cette nouvelle page d’élément utilisera Tcat.

Je sais que c'est parce qu'il y a un paramètre "itemid = xxx" dans le lien href. Autant que je sache, un élément k2 peut être ouvert via une URL telle que mysite.com/index.php?option=com_k2&view=item&id=10. Dans ce cas, sans ID d'élément de menu dans l'URL, la page utilisera le modèle par défaut. mais si le paramètre Itemid est ajouté et que l'URL ressemble à http://67.20.67.232/index.php?option=com_k2&view=item&id=10&Itemid=150, la page utilisera le modèle associé à l'élément de menu #150. Le problème, c'est que depuis que j'ai associé la vue des catégories à l'élément de menu #150, Les liens de tous les éléments de cette catégorie semblent toujours avoir ce paramètre Itemid=150.

Je rencontre toujours le même problème avec k2. Une solution de contournement à laquelle je peux penser consiste à utiliser javascript pour éliminer ce paramètre Itemid. Un autre moyen peu pratique consiste à associer chaque élément à un élément de menu associé à Titem .... Existe-t-il un autre moyen? Peut-être en codant en dur un peu de PHP?

En outre, dans les fichiers de modèle php k2, le lien est généré par quelque chose comme <?php echo $this->item->link ?>, Je pense que si je découvre comment l’objet $this->item Est exécuté, je pourrai peut-être trouver un moyen de le coder en dur. Mais mes connaissances PHP sont très limitées. Après quelques recherches, je ne peux que trouver que $this Est une instance de la classe k2ItemviewList Dans com_k2/views/itemlist/view.html.php, Mais cette classe n'a qu'un seul membre: function display($tpl = null), le item est introuvable. J'apprends PHP et j'essaie pour comprendre joomla core et k2 core, c’est la raison pour laquelle je ne suis pas satisfait de la solution javascript. Si vous pouvez expliquer comment suivre les codes derrière $this->item->link, cela facilitera beaucoup mon apprentissage. . Merci d'avance.

2
shenkwen

Itemid est l'élément clé de Joomla Router pour identifier une cible et naviguer à travers la structure de menus. De plus, les modules sont associés à des éléments spécifiques.

S'il n'y a pas Itemid, Joomla affiche une page par défaut avec des modules affectés aux pages "Toutes".

Si vous cherchez un moyen de personnaliser SEF et de générer des URL sans ID, vous pouvez simplement installer un extension SEF .

1
Anibal