2014-01-28 3 views
1

Застрял на этом долго :(Сейчас я пытаюсь переопределить сердцевиной файл шаблона,Magento - Как переопределить упорную billing.phtml с помощью пользовательского модуля

приложение/дизайн/интерфейс/базы/по умолчанию/шаблон/настойчив/выписка/OnePage/billing.phtml

используя пользовательский модуль, который я успешно активирован и конфигурационный файл для моего нового модуля находится в

app/code/local/CustomCheckout/Checkout/etc/config.xml.

Ниже Контента

<config> 
    <modules> 
     <CustomCheckout_Checkout> 
      <version>1.0.0</version> 
     </CustomCheckout_Checkout> 
    </modules> 
    <frontend> 
     <routers> 
      <checkout> 
       <args> 
        <modules> 
         <CustomCheckout_Checkout before="Mage_Checkout">CustomCheckout_Checkout</CustomCheckout_Checkout> 
        </modules> 
       </args> 
      </checkout> 
     </routers> 
     <layout> 
      <updates> 
       <checkout> 
        <file>persistent.xml</file> 
       </checkout> 
      </updates> 
     </layout>  
    </frontend> 
</config> 

Я пытаюсь переопределить persistent.xml макет, который в свою очередь, вызывает указанный billing.phtml файл. Я поместил новый файл макета в следующем месте

приложение/дизайн/интерфейс/по умолчанию/CustomCheckout/макет/persistent.xml.

Ниже Контента

<layout version="0.1.0"> 
    <checkout_onepage_index> 
     <reference name="checkout.onepage.billing"> 
      <action method="setTemplate"> 
       <template>checkout/onepage/billing.phtml</template> 
      </action> 
     </reference> 
    </checkout_onepage_index> 
</layout> 

Я разместил свой измененный файл billing.phtml под

приложение/дизайн/интерфейс/по умолчанию/CustomCheckout/шаблон/выписка/OnePage /billing.phtml

, но он не подбирается. Я почесываю голову ... любая помощь приветствуется.

+0

Вы когда-нибудь это выясняли? У меня такая же проблема прямо сейчас –

ответ

4

Надеюсь, вы нашли ответ на сейчас, но для потомков ...

Проблема здесь в том, что «Persistent» модуль уже перекрывая этот шаблон. Если вы посмотрите в файле макета persistent.xml вы увидите следующее:

<reference name="checkout.onepage.billing"> 
     <action method="setTemplate"><template>persistent/checkout/onepage/billing.phtml</template></action> 
     <block type="persistent/form_remember" name="persistent.remember.me" template="persistent/remember_me.phtml" /> 
     <block type="core/template" name="persistent.remember.me.tooltip" template="persistent/remember_me_tooltip.phtml" /> 
    </reference> 

загрузка по умолчанию порядок Magento является алфавитным. Итак, поскольку Persistent-модуль «Mage_Persistent», и ваш модуль «CustomCheckout_Checkout», последний модуль загружается последним, и он переопределяет тот, который хранится.

Существует несколько решений. Один из них - переименование вашего модуля, чтобы он был после Mage_Persistent в алфавите.

Лучшее решение - использовать функциональность зависимостей Magento. В файле объявления модуля (приложение/etc/modules/CustomCheckout_Checkout.XML), вы, вероятно, что-то вроде этого:

<?xml version="1.0"?> 
<config> 
    <modules> 
     <CustomCheckout_Checkout> 
      <active>true</active> 
      <codePool>local</codePool> 
     </CustomCheckout_Checkout> 
    </modules> 
</config> 

Modify это, как показано здесь:

<?xml version="1.0"?> 
<config> 
    <modules> 
     <CustomCheckout_Checkout> 
      <active>true</active> 
      <codePool>local</codePool> 
      <depends> 
       <Mage_Persistent /> 
      </depends> 
     </CustomCheckout_Checkout> 
    </modules> 
</config> 

Это указывает на Magento, что ваш модуль «зависит» от Mage_Persistent и, следовательно, должны быть загружены после него.

Если это не работает для вас, другой метод будет использовать «удалить» узел в макете XML, чтобы избавиться от оригинальной фактуры блока:

<remove name="checkout.onepage.billing" /> 

Затем повторно добавить его с другое имя, как в checkout.xml. Обязательно добавьте все необходимые блоки и действия под ним из разных файлов макета и используйте один и тот же псевдоним (как = "биллинг").

Наконец, если этот модуль не предназначен для повторного использования (изменение только для вашей текущей установки), вы можете просто скопировать файл phtml в тот же путь в вашей папке с настраиваемыми папками/темами.

+0

Это был самый полезный пост - возможно, я пропустил его где-то в другом месте (или, может быть, мне просто нужно разобраться, как работает config.xml ...) - но этот ответ был именно тем, что мне нужно , –

0

Я разработчик magento. Я реализовал вашу проблему на localhost & найти решение. Я просто создаю кинекс/ссылки (пространство имен/модуль). В этом файле макета модуля содержит следующий код:

<checkout_onepage_index> 
    <reference name="checkout.onepage.billing"> 
     <action method="setTemplate"> 
      <template>kinex/links/billing.phtml</template> 
     </action> 
    </reference> 
</checkout_onepage_index> 
0

Это очень просто, вы можете просто написать XML как:

<checkout_onepage_index> 
    <reference name="checkout.onepage.billing"> 
     <action method="setTemplate"> 
      <template>your-module/checkout/onepage/billing.phtml</template> 
     </action> 
     <block type="persistent/form_remember" name="persistent.remember.me" template="persistent/remember_me.phtml" /> 
     <block type="core/template" name="persistent.remember.me.tooltip" template="persistent/remember_me_tooltip.phtml" /> 
    </reference> 
</checkout_onepage_index> 

Если есть какая-то ошибка в кассе страницы, то это означает выставление счетов или файл shipping.phtml отсутствует.

+0

Это полезно, но знаете ли вы, как включить блок iframe payflow в этот billing.phtml? – Geek

Смежные вопросы