2012-05-04 3 views
2

Я хочу изменить часть файла checkout.xml (этот файл находится в основной папке-макете). Я создаю собственное расширение и ссылку на свой собственный layout-xml-File в моем файле config.xml.Magento: переопределить только часть макета xml-файла

<layout> 

    <updates> 
    <checkout> 
    <file>mymodule_checkout.xml</file> 
    </checkout> 
    </updates> 
</layout> 

Там нет никаких проблем, когда я скопировать весь файл checkout.xml и сохранить его как mymodule_checkout.xml. Но я только хочу, чтобы переопределить небольшую часть этого большого файла между

<reference name="content"> 

и

</reference> 

В этом случае, когда я пишу только те части, которые мне были нужны, Magento только читать мой файл с этим частей. Так что magento не получает оставшиеся части оригинального checkout.xml.

Возможно ли изменить только часть основного макета xml-файла без копирования всего файла или изменения ядра.

Кодекс mymodule.xml выглядит следующим образом:

<layout version="0.1.0"> 

<checkout_onepage_index translate="label"> 

    <reference name="content"> 
     <block type="checkout/onepage" name="checkout.onepage" template="checkout/onepage.phtml"> 
      <block type="checkout/onepage_login" name="checkout.onepage.login" as="login" template="checkout/onepage/login.phtml"> 
       <block type="page/html_wrapper" name="checkout.onepage.login.before" as="login_before" translate="label"> 
        <label>Login/Registration Before</label> 
        <action method="setMayBeInvisible"> 
         <value>1</value> 
        </action> 
       </block> 
       <block type="checkout/onepage_billing" name="checkout.onepage.billing" as="billing" template="checkout/onepage/billing.phtml"/> 
       <block type="checkout/onepage_shipping" name="checkout.onepage.shipping" as="shipping" template="checkout/onepage/shipping.phtml"/> 
      </block> 
      <block type="checkout/onepage_shipping_method" name="checkout.onepage.shipping_method" as="shipping_method" template="checkout/onepage/shipping_method.phtml"> 
       <block type="checkout/onepage_shipping_method_available" name="checkout.onepage.shipping_method.available" as="available" template="checkout/onepage/shipping_method/available.phtml"/> 
       <block type="checkout/onepage_shipping_method_additional" name="checkout.onepage.shipping_method.additional" as="additional" template="checkout/onepage/shipping_method/additional.phtml"/> 
      </block> 
      <block type="checkout/onepage_payment" name="checkout.onepage.payment" as="payment" template="checkout/onepage/payment.phtml"> 
       <block type="checkout/onepage_payment_methods" name="checkout.payment.methods" as="methods" template="checkout/onepage/payment/methods.phtml"> 
        <action method="setMethodFormTemplate"> 
         <method>purchaseorder</method> 
         <template>payment/form/purchaseorder.phtml</template> 
        </action> 
       </block> 
      </block> 
      <block type="checkout/onepage_review" name="checkout.onepage.review" as="review" template="checkout/onepage/review.phtml"/> 
     </block> 
    </reference> 
</checkout_onepage_index> 
</layout> 

Вот часть мне нужно. В этом случае magento принимает только этот код, а не оставшийся код основного xml-файла.

ответ

0

Абсолютно, да. Magento объединяет все ваши файлы макета в один, включая файлы из резервных тем. Независимо от того, что все еще актуально после обработки, все ваши файлы - это то, что используется для создания вашего макета, и пока ваш XML-код отформатирован правильно, вы можете переопределить любой раздел из любого XML-файла - то есть просто потому, что он называется page.xml. означает, что вы не можете переопределить его в foobarbaz.xml.

Скорее всего, ваша проблема связана с вашим XML, можете ли вы разместить содержимое mymodule_checkout.xml, чтобы я мог понять, что вы пытаетесь сделать и, надеюсь, предоставить вам рабочую замену?

+0

Я отправляю код в свой вопрос – Marco

+0

Спасибо за обновление. Код, который вы опубликовали, кажется прекрасным, за исключением закрытого блока на неправильной странице. Я не знаю, было ли это намерение, но ваши разделы выставления счетов и доставки в вышеуказанном коде назначены на страницу входа в систему. Эти два объявления, 'checkout.onepage.billing' и' checkout.onepage.shipping' должны появиться * после *. Можете ли вы рассказать мне, что не хватает в одной странице с вашим замененным кодом, по сравнению с тем, что есть с кодом по умолчанию? Возможно, вы также можете указать URL-адрес страницы, для иллюстрации? Благодаря! – WildWorx

+0

Предложен блок биллинга и доставки в этом положении в качестве дочернего элемента блока входа. Это те изменения, которые мне нужны. Отсутствует все остальное из одной страницы. Magento получает только мой код. – Marco

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