私のサイトには2つの異なるテンプレートがあります。それらをTcatとTitemと呼んでください。私のk2カテゴリビューページはTcatを使用しています。つまり、k2カテゴリビューページのメニュー項目はTcatに関連付けられています。 k2アイテムページでTitemを使用する必要があります。つまり、カテゴリビューページでアイテムリンクをクリックすると、このアイテムを表示する新しいページでTitemが使用されます。ただし、デフォルトでは、この新しいアイテムページはTcatを使用します。
これは、リンクのhrefに「itemid = xxx」パラメータがあるためです。私の知る限り、k2アイテムは_mysite.com/index.php?option=com_k2&view=item&id=10
_のようなURLで開くことができます。この場合、URLにメニューアイテムIDがない場合、ページはデフォルトのテンプレートを使用します。ただし、Itemid
パラメータが追加され、URLが_http://67.20.67.232/index.php?option=com_k2&view=item&id=10&Itemid=150
_のように見える場合、ページは_#150
_メニュー項目に関連付けられたテンプレートを使用します。問題は、カテゴリビューを_#150
_メニュー項目に関連付けたため、このカテゴリのすべての項目のリンクには常にこの_Itemid=150
_パラメータが含まれているようです。
私は常にk2で同様の問題に遭遇しています。私が考えることができる1つの回避策は、Itemid
パラメータを排除するためにJavaScriptを使用することです。別のそれほど実用的ではない方法は、各項目をTitemに関連付けられているメニュー項目に関連付けることです...他に方法はありますか?多分PHPをハードコーディングすることによって?
さらに、k2テンプレートのphpファイルでは、リンクは_<?php echo $this->item->link ?>
_のようなものによって生成されます。_$this->item
_オブジェクトがどのように実行されるかを見つければ、ハードコードする方法を見つけることができると思います。しかし、私のPHP知識は非常に限られています。調査すると、_$this
_が_k2ItemviewList
_のインスタンスであることがわかった場合に限り、_com_k2/views/itemlist/view.html.php
_ですが、このクラスにはメンバーが1つしかありません:function display($tpl = null)
、item
は見つかりません。私はPHPを学習してjoomlaを理解しようとしていますコアとk2コア、これが私がJavaScriptソリューションに満足していない理由です。_$this->item->link
_の背後にあるコードを追跡する方法を説明できれば、それは私の学習に大いに役立ちます。どんなヒントも大歓迎です。事前に感謝します。
Itemidは、ターゲットを識別してメニュー構造をナビゲートするためのJoomlaルーターの重要な部分です。また、モジュールは特定のアイテムIDに関連付けられています。
Itemidがない場合、Joomlaは「すべて」のページに割り当てられたモジュールでデフォルトページをレンダリングします。
SEFをカスタマイズし、IDなしでURLを生成する方法を探している場合は、 SEF拡張 をインストールするだけです。