独自の 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 に、この行を追加して、return $html . 'block';
実際に呼び出されているかどうかを確認します。そしてそうです。予想どおり、ログイン フォームのすぐ下に「ブロック」文字列があります。
一方、customercar.xml ファイルは無視されているようです。Allan Storm LayoutViewer モジュールを使用して自分のページをチェックしましたが、レイアウトはまだコアのものです。
編集: var_dump($this->getTemplate());
Block クラスの _toHtml メソッドにも追加します。そして、それはその行を示しています: string(36) "persistent/customer/form/login.phtml"
. ところで、なぜなのかよくわかりません。「/customer/form/login.phtml」を期待していましたが、「persistent」フォルダーのものではありませんでした。
明らかな何かが欠けていると思いますが、フォーラムやチュートリアルからの多くのアドバイスに従おうとしましたが、成功しませんでした。この問題は非常に一般的なようで、すぐに修正できると思いました。私は間違っていました...あなたが私を助けてくれることを願っています.
ありがとう :)
解決
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>