2つ以上のテンプレートとJoomfishコンポーネントを使用したJoomla 1.5のモジュール作業の問題

私の練習では、Zhumlaサイトに2つ以上のテンプレートを使用することがよくありました。 Joomla 1.5では、これは非常に便利に実装されます。1つのテンプレートがデフォルトで選択され(新しく作成されたすべてのメニュー項目に適用されます)、2つ目は「選択的」です。 これはすべて非常に簡単かつ迅速に行われますが、欠点もあります。 この投稿でそれらの1つについて話したかった。



事実は、メインのモジュール(検索、ニュース)を公開するとき、および「選択的」である場合、つまり 内容は別のテンプレートで呼び出され、興味深いことが起こります。 各ニュース項目には、モジュールが公開されているメニューに対応するitemidが割り当てられ、メインの場合は「1」です。 したがって、ZhumlaはこのItemidの下でこのURLを開こうとしています。コンテンツへの呼び出しが含まれていないため、内部ページへの移行はなく、ニュースは表示されません。つまり、すべてが変更されません。 私は、Zhumlavsky IPAに精通していませんが、私にとっては非常に不快な驚きでした。 構造要素のコンテンツ要素からの独立性に関するZhumlaの柔軟性は、エンジンの研究を取り上げた要因の1つでした。 さらに、このプロセスは、Joomfishコンポーネントをインストールした後にのみ表示されるようになりました。 それにもかかわらず、解決策を見つける必要がありました。 おそらく最も正確ではないが、機能する解決策を見つけました。 このItemid = 1に悩まされ続け、私はそれを取り除くことにしました。 競合を引き起こさないために、Itemidを「0」に等しくしました(事実、Itemidを他のゼロ以外の値に等しくすることにより、既存の構造要素(メニュー)に割り当てるリスクがあり、ユニットは最初の要素です。つまり、

「0」は完全に無料です。)以下に、mod_newsflash / helper.phpファイルに加えられた変更を示します。

元のコード:



$item->linkOn = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug, $item->sectionid));









この行では、URLニュースの「アセンブリ」が行われます(記事IDのシリアル番号、記事タイトル、catidカテゴリのシリアル番号、およびItemid構造(メニュー)アイテムのシリアル番号)。



私がしたことは、すべてのアイテムに「0」アイテムIDを強制的に割り当てることだけでした。 したがって、私のニュースはどのメニューにも属さなくなりました。

コード:



$item->linkOn = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug.'&Itemid=0', $item->sectionid));









この変更後、すべてのニュースは内部リンクをたどり始めました。つまり、デフォルトテンプレートと呼ばれるようになりました。



検索モジュールは同様の変更を行うことができましたが、今回はコンポーネントの編集が必要でした。

ファイルコンポーネント/ com_search / controller.phpを開いて、次の行に変更を加えました。



$this->setRedirect(JRoute::_('index.php'.$uri->toString(array('query', 'fragment')), false));









に置き換え:



$this->setRedirect(JRoute::_('index.php'.$uri->toString(array('query', 'fragment')).'&Itemid=0', false));









再び彼女のItemid = 0を強制的に割り当てます



投稿を書くときに多くの詳細を逃しましたが、その本質を伝えることができました。 おそらくこの方法は読み書きができないですが、私は自分で達成しました。私にとっては重要です。



よろしくお願いします!



All Articles