1

私はMagentoのウィジェットを開発しています。このウィジェットでは、Magentoの連絡フォームをロードする必要があります。私はいくつかのオプションを試しましたが、どれもうまくいかないようです。

ウィジェットはにあります

app/
   code/
       local/
         CompanyName/
              WidgetName/

とphtmlファイルはにあります

app/
   design/
      frontend/
          default/
             default/
                 template/
                     templatename/
                           templatefile1.pthml
                           templatefile2.pthml
                           templatefile3.phtml

Magentoのお問い合わせフォームを読み込むには、これをtemplatefile3.phtmlに追加しました

<?php echo $this->getChildHtml('contactForm') ?>

しかし、2つのファイルにxmlを追加した後でも、この行をapp / design / frontend / base / default / layout/catalog.xmlのすぐ下に追加しました。<reference name="content">

<block type="core/template" name="contactForm" form_action="/contacts/index/post" template="contacts/form.phtml"/>

また、このコードをapp / design / frontend / base / default / layout / default.xmlに追加しました(このファイルは存在しませんでした)

<default>
<cms_page>
    <reference name="content">
        <block type="core/template" name="contactForm" as="contactForm" template="contacts/form.phtml">
            <action method='setBlockId'><block_id>contactForm</block_id></action>
        </block>
    </reference>
</cms_page>

私はxmlを正しいファイルに入れていないという考えを持っていますが、それ以外の方法で使用するwitchファイルは見当たらず、インターネット上でこれら2つ以外のヒントを見つけることができません。

誰かが私を助けることができますか?

4

3 に答える 3

1

CMS コンテンツ ボックス内で次のような CMS タグを使用して、お問い合わせフォームを任意の CMS ページに追加できます。

{{block type="core/template" name="contactForm" template="contacts/form.phtml"}}

新しいページを作成し、そのスニペットを挿入して、この新しいページに連絡先フォームを表示できます。

また、form.phtml のコピーを作成して必要に応じて変更し、新しいテンプレートを使用するようにタグ コードを更新することもできます。

于 2012-09-19T09:48:47.553 に答える
-1

default.xml だけを作成することはできません。レイアウト xml ファイルが存在することを Magento に知らせるには、モジュールを作成してレイアウト ファイルの場所を指定する必要があります。これは、必要なものを達成しようとする非常に長い道のりです。

また、ハンドル<cms_page>はサポートされていないと思います。CMS ページのブロックを参照するには、その CMS ページの「デザイン」タブの下にあるレイアウト更新セクションに xml を配置するのが最適です。

したがって、連絡先フォームを CMS ページに配置するのはかなり簡単です。ここでも、レイアウト更新機能を使用します。次のxmlを入力するだけです...

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

レイアウト ハンドルは必要ないことに注意してください。Magento は、コンテンツを挿入する特定の CMS ページをすでに認識しています。これは、そのページのレイアウトの更新であるためです。したがって、上記では、追加したい構造ブロック (この場合はコンテンツ) を参照し、関連付けられたテンプレートの場所と共に contactForm ブロックを追加するように Magento に指示しています。

以前、この方法を使用してサイトで作業したことがあります。コンタクトフォームを CMS ページに呼び出すと、ブラウザーに正常に表示されるにもかかわらず、フォームが実際には投稿されないことに気付くでしょう。実際、フォームは意図したページ yoursite.com/contacts から使用された場合にのみ送信されます。

簡単な修正。ファイルapp/design/frontend/YOUR-PACKAGE/YOUR-THEME/template/contacts/form.phtmlを作成し、必要なコンテンツをデフォルトの form.phtml から複製します。

form.phtml ファイルの下部にあるスクリプトを次のように変更します。

<script type="text/javascript">
    var contactForm = new VarienForm('contactForm', true);
</script>

に:

<script type="text/javascript">
    elem = $("contactForm");
    elem.writeAttribute('action', '/contacts/index/post');
</script>

また、CMS ページのお問い合わせフォームが必要に応じて投稿されるようになりました。

追加として(これが役立つ場合とそうでない場合があります)。

CMS ページの連絡先フォームを、連絡先に表示される標準フォームとは異なるものにする必要がありました。これも上記の方法を使用すると非常に簡単です。

ファイルapp/design/frontend/YOUR-PACKAGE/YOUR-THEME/template/contacts/form.phtmlを複製し、app/design/frontend/YOUR-PACKAGE/YOUR-THEME/template/contacts/customForm.phtml のような名前に変更します - 次に、さまざまなフィールドなどの必要な修正を行います...

表示する CMS ページのレイアウト更新で、次の xml を追加するだけです。

<reference name="content">
    <block type="core/template" name="customContactForm" template="contacts/customForm.phtml"/>
</reference>

以上です。

ブロック名がどのように変更されたかに注意してください-ブロック名は文字通り何でもかまいません-Magentoはあなたがそれを何と呼ぶか​​を気にしませんが、私は明らかに論理的なものをお勧めします!

于 2013-01-29T16:11:40.580 に答える