0

カートに追加ボタンと価格 (製品ビュー) を非表示にし、その場所に (製品属性に基づいて) 短いフォーム (お問い合わせのようなもの) を表示するモジュールを作成しています。

製品ビュー ページには重要な情報のほとんどをまとめたフォームがあるため、ネストされたフォームが残るため、独自の phtml ファイルに独自のフォームを単純に挿入することはできません。したがって、フォームのアクションを変更するには、catalog/product/view.phtml ファイル全体を自分のファイルで上書きする必要があるようです。そのようです:

<catalog_product_view>
    <reference name="product.info">
        <action method="setTemplate">
            <template>mycompany/mymodule/catalog/product/view.phtml</template>
        </action>
    </reference>    
</catalog_product_view>

次に、ビュー ファイル内で、それに応じてフォーム アクションを変更します。

$formAction = $this->getSubmitUrl($_product);
if($_product->getData("myattribute")){
    $formAction = $this->getBaseUrl().'mycontroller/';
}

<form action="<?php echo $formAction ?>" ...[snip]

これは、フォームのアクションを変更するだけでも大げさすぎるように思えます。

私の見方では、2つのオプションがあります。

1)送信ボタンのonclickイベントにjavascriptを追加して、デフォルトのフォームアクションをコントローラーに移動するように変更します。このようにして、カートへの追加フォームをハイジャックします。(ただし、javascript が無効になっていると問題が発生します)

2)カートに追加するイベントをすべてチェックして、カートに追加する必要があるかどうか、または代わりにフォームを処理する必要があるかどうかを確認するオブザーバーを用意します。(フォームは必要に応じて商品ページに表示されます)

(現時点では、カスタム テーマなどとの統合については考えていません…一度に 1 つのことについて理解を深めたいだけです! - わかりました。カスタム テーマに目を向けるかもしれません..)

これを達成するためのより良い、またはより効率的な方法を誰かが提案できますか? または、そうでない場合、1 または 2 のどちらをお勧めしますか?

ありがとう

4

1 に答える 1

0

私の意見では、大規模なやり過ぎの方法が最適な方法のように思えます。望んでいたフォーム アクションの変更が得られ、Magento に適しているように見えます。

本当にやりたくない場合は、オプション 2 を使用することをお勧めします。インターネット全体で Javascript が有効になっているとは限りません (Javascript が無効になっている人の全体的な割合は非常に少ないですが、彼らはあなたにとって大きな悩みの種になる可能性があります)。

于 2012-05-03T10:21:49.753 に答える