3

こんにちはMagento beginerから、私は用語や名前の知識が貧弱ですが、私はできる限り明確にこれを説明しようと努力します。Magento、連絡フォームに製品名を渡します

私は現在製品ビューページ上のユーザからのいくつかのデータを収集できるようにするに Magentoのお問い合わせフォームの設定に取り組んでいます。
さらに面白くするために、フォームにページ管理者が入力した製品に関するいくつかのデータを送信する必要があります。具体的には製品名
すべての製品にこのフォームが用意されているわけではありません。 (現在は利用できません)色とサイズ。
Magentoのお問い合わせフォームをLayout->Templates->contact->form.phtmlにコピーしました。参照XMLをfolowing
Magento Admin Panel-Catalog-Menage Categories-OneOfTheProducts-edit-Custom layout update

:に入れて、製品ページのいずれかでそれを組み込み

<reference> 
    <block type="core/template" name="customer_request" 
    template="contacts/form.phtml"/> 
</reference> 

はそれをテストし、それが動作しますが、まだ管理者は、多くの製品にカスタムレイアウト更新テキストボックスをこのXML配置を行う必要がありますが、それはこの質問の一部ではありません。
Magentoフォームには、名前、電子メール、電話番号、コメントなどのフィールドがあります。
しかし、私はpostActionアクションにMage_Contacts_IndexControllerというもう1つのパラメータを送信する必要があります。これは商品名です。

QUESTION私はこの子のブロック要素が埋め込まれれているページの内容を知ることができる、商品ページからお問い合わせフォームで製品名を取得するにはどうすればよい
? Magentoにいくつかのグローバル関数がありますか?このパラメータをコントローラに渡すにはどうすればいいですか? form.phtml

任意の参照やコードスニペットが私に世界を意味します

答えて

2

ソリューション

が新しい隠しフィールドの値にこのコードのスニペットを追加し、それが現在のURLのキー/値を取得しますページの場合、 "id"の値を渡すモデルオブジェクトをロードします。

<?php $productId=$this->getRequest()->getParams(); 
$model = Mage::getModel('catalog/product'); 
$_product = $model->load($productId["id"]); 
echo $_product->getName(); ?> 

この非表示フィールドを参照する新しいvar to emailテンプレートが追加されました値、 このコード部分もヘルパークラスに配置するのに適しています。

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

これは、データベースの負荷となる別のデータベースモデルをロードする必要がないの効率を持っているでしょう:

+0

Alan Stormが私を逮捕する前に、隠しフィールドの代わりにセッションを使用するには、これを修正する必要があります。 :D – l0lander

1

もう一つの方法は、Magentoのレジストリを使用することです。 hereおよびhereを参照してください。

関連する問題