Magento布局XML文件覆盖
我正在尝试开发自己的magento模块,我遇到了我要覆盖的xml布局文件的问题.我正在研究从/ customer / account / login个性化登录表单的方法.
为此,我有以下文件 app/ etc/ modules/ - IT_CustomerCar.xml code/ local/ IT/ CustomerCar/ Block/ Customer/ From/ Login.php controllers/ - AccountController.php etc/ - config.xml design/ frontend/ base/ default/ layout/ - customercar.xml template/ customercar/ form/ - login.phtml' 我的目标是覆盖/design/frontend/base/default/layout/customer.xml文件以个性化登录表单. 现在,更具体地说明我的文件 config.xml包含以下行: <config> <modules> <it_customercar> <version>0.1.0</version> </it_customercar> </modules> <global> <rewrite> <it_customercar_customer_account> <from><![CDATA[#^/customer/account/#]]> </from> <to>/customercar/account/</to> </it_customercar_customer_account> </rewrite> <blocks> <customer> <rewrite> <form_login>IT_CustomerCar_Block_Customer_Form_Login</form_login> </rewrite> </customer> <helpers> <customercar> <class>It_CustomerCar_Helper</class> </customercar> </helpers> </blocks> </global> <frontend> <routers> <it_customercar> <use>standard</use> <args> <module>IT_CustomerCar</module> <frontName>customercar</frontName> </args> </it_customercar> </routers> <layout> <updates> <it_customercar> <file>customercar.xml</file> </it_customercar> </updates> </layout> </frontend> 我的customercar.xml(假设是我的xml布局文件)如下: <?xml version="1.0"?> <layout version="0.1.0"> <default> </default> <customercar_account_login> <label>MODULE : Customer Account Login Form</label> <reference name="content"> <block type="core/template" name="customercar_form_login" output="toHtml" template="customercar/form/login.phtml" ></block> </reference> </customercar_account_login> </layout> 在我的块上,IT_CustomerCar_Block_Customer_Form_Login,我添加此行返回$html. ‘块’;检查它是否确实被调用.它是.正如预期的那样,在我的登录表单下面有一个“阻止”字符串. 另一方面,似乎忽略了customercar.xml文件.我使用Allan Storm LayoutViewer模块检查我的页面,布局仍然是核心的布局. 编辑:我还添加了一个var_dump($this-> getTemplate());来自Block类的_toHtml方法.它显示了line:string(36)“persistent / customer / form / login.phtml”.我真的不明白为什么顺便说一句.我期望“/customer/form/login.phtml”,而不是“持久性”文件夹中的那个. 我想我错过了一些明显的东西,但我试图从论坛和教程中听取很多建议而没有任何成功.这个问题似乎很常见,我想我可以快速修复它.我错了… 谢谢 :) 解 我设法用dagfr答案解决这个问题. 首先,我从后端和/app/etc/modules/Mage_Persistent.xml中禁用持久性模块. 然后,我更改了我的customercar.xml文件 <customer_account_login> <reference name="customer_form_login"> <action method="setTemplate"><template>customercar/form/login.phtml</template></action> </reference> 解决方法
1)你必须删除持久性的东西,它不会帮助找到问题,因为它没有使用正确的模板.
2)您所做的更改将使用您的模板而不是yoursite.com/customer/account/login页面进行yoursite.com/customercar/account/login页面.这是你需要的吗? 3)你使用: <block type="core/template" name="customercar_form_login" output="toHtml" template="customercar/form/login.phtml" ></block> 这不应该是核心/模板块,而是customer / form_login块(由块覆盖). 4)您更改其名称,因此如果您在正确的文件中没有getChildHtml,则不会调用它. 总而言之,你应该这样做: <customer_account_login> <reference name="customer_form_login"> <action method="setTemplate"><template>customercar/form/login.phtml</template></action> </reference> </customer_account_login> 这将说明登录块(被覆盖的)在原始页面中使用您的新模板 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |