1

Joomla 2.5 で Virtuemart 2.0.4 を使用しています。私は Joomla のスターではありません!

また、アコーディオン モジュールを使用して Virtuemart カテゴリを表示します。ここで、Virtuemart がロードされたとき、つまり Webshop ページ、categorylist、および特定の製品ページにいるときだけ、アコーディオンを表示したいと思います。

次のように、フロントページの if else ステートメントを作成することができました。

// IF IS HOMEPAGE 
   $menu = JSite::getMenu(); if ($menu->getActive() == $menu->getDefault()) {
} else {

}

次のように、美徳マートがロードされている場合でも同じことができると思いました。

if ( $pageoption != 'com_virtuemart' )   { ?>
    DONT LOAD ACCORDION MENU
<?php } else { ?>
    LOAD ACCORDION MENU
<?php } ?>

しかし、それはうまくいかないようです。

あなたたちはそのようなことを達成する方法を知っていますか? タイ

4

1 に答える 1

1

これに対する良い解決策は、MetaModを使用することです。さまざまな VM ページ タイプを検出する機能が組み込まれており、これを使用して他のモジュールをトリガーする (またはトリガーしない) ことができます。テンプレートはどのテンプレートでも機能するため、テンプレートを変更する必要はありません。その後、ロジックは MetaMod に入り、他のモジュールを含めるかどうかを決定します。

これは、表示するモジュールのモジュール ID を返す、MetaMod に入れる PHP コードのスニペットで実現します。

たとえば、VM 内の任意のページを検出し、モジュールを表示するには:

if ($option == 'com_virtuemart') return XXX;
// replace XXX with the module id of the module to show.

次のような特定の VM ページ タイプを検出することもできます。

$vm = JomGenius("virtuemart");
if ($vm->check("pagetype = shop.product_details")) return XXX;
// shop.product_details is for VM1.x. Use "productdetails" for VM2.x.
if ($vm->check("pagetype startswith checkout")) return XXX;
// e.g. checkout.index#1-4, checkout.result, etc

JomGenius ページでは、すべてのページ タイプとクエリできる他の多くのものを見つけることができます。たとえば、何かが含まれているカテゴリ、以前の購入履歴、メーカー、表示されている製品の特定の詳細、カートの内容などを検出できます。ここにさらに例があります。

于 2012-11-21T21:59:57.947 に答える