我正在为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') ?>
但它没有出现,即使将xml添加到2个文件后,我已将此行添加到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放在正确的文件中,但我不知道使用其他文件,并且在互联网上找不到这两个提示。
有人能帮助我吗?
答案 0 :(得分:1)
您可以使用CMS内容框中的CMS标记将联系表单添加到任何CMS页面:
{{block type="core/template" name="contactForm" template="contacts/form.phtml"}}
您可以创建新页面,然后插入该代码段以在此新页面上显示联系表单。
你也可以复制form.phtml并根据需要进行修改,并更新标签代码以使用新模板。
答案 1 :(得分:0)
请使用以下功能显示内部模板。
<?php echo $this->getLayout()->createBlock("Magento\Framework\View\Element\Template")->setTemplate("Magento_Contact::form.phtml")->toHtml(); ?>
答案 2 :(得分:-1)
你不能只创建一个default.xml - 让Magento知道布局xml文件存在,你必须经历并创建一个模块并指定布局文件的位置。这是一个非常漫长的方式,试图实现你所需要的。
另外我认为不支持句柄<cms_page>
。引用CMS页面中的块最好将xml放在该CMS页面的“设计”选项卡下的布局更新部分中。
因此,将联系表单放入CMS页面非常简单 - 再次使用布局更新工具。只需输入以下xml ...
<reference name="content">
<block type="core/template" name="contactForm" template="contacts/form.phtml"/>
</reference>
请注意,您不需要布局句柄 - Magento当然已经知道您要插入内容的特定CMS页面,因为这是该页面的布局更新。因此,在上面您只是引用要添加的结构块(在本例中为内容),并告诉Magento添加contactForm块及其关联的模板位置。
之前我曾在使用此方法的网站上工作过。您可能会发现,一旦您将联系表单调用到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并不关心你所谓的它,但我显然会推荐符合逻辑的东西!