2012-04-19 4 views
1

Joomla 2.5でVirtuemart 2.0.4を使用しています。私はJoomlaの星ではありません!Virtuemart特定のページのみのアコーディン

また、アコーディオンモジュールを使用してVirtuemartカテゴリを表示します。今、私はちょうどVirtuemartがロードされているとき、すなわち、あなたがWebshopページにいるときに、カテゴリ化したANDと特定の製品ページを表示するだけです。

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

} 

私はvirtuemartは次のように、ロードされている場合と同じことを行うことができると思った:

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

は、私はすでに、フロントページ用の場合はelse文を作るので、同じように管理してきました

しかし、それは動作していないようです。

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

+0

私はPHPソリューションのヒアリングに興味があります。タグに追加することができます。しかし、jQueryを使用して主IDを検索し、trueの場合は.remove()を使用することで回避できます。この作業は、JoomlaのPHPを変更しない拡張機能として行うことができます。 – Shane

+0

- また、このメニューのテンプレートのみで新しいモジュール位置を作成し、そのモジュール位置の条件付きコードをラップすることができます。それは少なくとも選択の半分を単純化するでしょう。あらかじめパッケージ化されたテンプレートを使用する場合は注意してください。彼らはアップデートでコードを書き直すのが大好きです。 – Shane

答えて

1

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

これは、MetaModに配置したPHPコードのスニペットで行い、表示するモジュールのモジュールIDを返します。

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 

、および他のものがたくさん:

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

また、このような特定のVMページタイプを検出することができますJomGenius pageで照会することができます。以前の購入履歴、製造業者、表示されている製品の特定の詳細、カートの内容などを検出する。さらに多くの例がある。here

関連する問題