0

製品ページの属性 (はい/いいえ) を使用して、製品ビュー ページのグループ化された製品オプションのスタイルを変更できる最初の Magento モジュールを作成しようとしています。

私はおそらくここで少し深く始めていますが、これはこれを行う方法についての私の理解です:

  • 属性を作成し、デフォルトの属性セット (代替グループ ビュー alt_group_view) に割り当てます。

  • /template/catalog/product/view/type に別の grouped.phtml ファイルを作成します - groupedAlt.phtml

  • モジュールを初期化する基本的なモジュール構造を作成します。モジュールに属性を作成させる必要がありますが、まだそれについての手がかりがありません!!!

次に、これが私が立ち往生するところです。基本的に、製品の属性を検索するモジュール ファイル内のロジックを修正する必要があります。設定されている場合は、おそらくこれを拡張する何かをレイアウト ブロックに伝えるコードを作成する必要があります。

<PRODUCT_TYPE_grouped translate="label" module="catalog">
<reference name="product.info">
<block type="catalog/product_view_type_grouped" name="product.info.grouped" as="product_type_data" template="catalog/product/view/type/grouped.phtml">
</reference>
</PRODUCT_TYPE_grouped translate="label" module="catalog">

うまくいけば、それは誰かにとって意味がありますか?

モジュール開発を始めたばかりなので、Magento のフロントエンドと管理領域についてはかなりの知識がありますが、これを現実的に達成できるかどうかはわかりません。

アドバイスをいただければ幸いです。

よろしく、スティーブ

4

1 に答える 1

0

これはオブザーバーを通じて処理する必要があります。監視するイベントは次のとおりです:controller_action_layout_generate_blocks_after

1°)モジュールのetc / config.xmlに、イベントハンドラーを追加します。

<frontend>
    <events>
        <controller_action_layout_generate_blocks_after>
            <observers>
                <yourmodule_generate_blocks_after>
                    <type>singleton</type>
                    <class>mymodule/observer</class> 
                    <method>generateBlocksAfter</method>
                </yourmodule_generate_blocks_after>                    
            </observers>                
        </controller_action_layout_generate_blocks_after>
    </events>
</frontend>

次に、モデルディレクトリ(MyCompany / MyModule / Model / Observer.php)にObserver.phpという名前のモデルを作成します。

このモデルでは、次のようにgenerateBlocksAfter()メソッドを追加します。

public function generateBlocksAfter($event)
{                      
$controller   = $event->getAction();
    //limit to the product view page 
    if($controller->getFullActionName() != 'catalog_product_view')
    {
        return;
    }
    $layout       = $controller->getLayout();
    $myblock = $layout->getBlock('product.info.grouped');

    $_product = Mage::registry('current_product');

    if ($_product->getAltGroupView()) {
        $myblock->setTemplate('catalog/product/view/type/groupedalt.phtml');
    }
}

そして、ここにいます。

于 2013-02-04T14:44:14.193 に答える