Magento - Как добавить пользовательский блок на страницу успеха Checkout - PullRequest
3 голосов
/ 23 декабря 2010

Я хочу добавить некоторую информацию на страницу успеха оформления заказа, добавив блок на страницу (без дублирования страницы шаблона и ее изменения).

Я посмотрел на загружаемый модуль и попытался скопировать его, но это не сработало. У меня есть пользовательский модуль, и я попытался сделать это:

1) добавление файла блока в: ... \ приложение \ код \ Local \ SHANI \ MyModule \ Block \ Checkout \ Details.php

class SHANI_MyModule_Block_Checkout_Details extends Mage_Checkout_Block_Onepage_Success
{
}

2) добавление файла шаблона в: ... \ приложение \ дизайн \ внешний интерфейс \ по умолчанию \ умолчанию \ шаблон \ MyModule \ фотографии \ details.phtml

<?php
echo "test ffdagdf";
?>

3) добавление блока в: ... \ app \ design \ frontend \ default \ default \ layout \ mymodule.xml

<default>
</default>

....
....
....

<checkout_onepage_success>
    <reference name="checkout.success">
        <block type="mymodule/checkout_success" name="mymodule.checkout.details" template="mymodule/checkout/details.phtml"/>
    </reference>
</checkout_onepage_success>

Это способ сделать это? Чего мне не хватает?

//////////////////////////////////////////// update ///// ////////////////////////////////////

Я пытался изменить mymodule.xml, как писал Lrrr, но все равно не повезло ...

<checkout_onepage_success>
        <reference name="checkout.success">
            <block type="mymodule/checkout_details" name="mymodule.checkout.details" template="mymodule/checkout/details.phtml"/>
        </reference>
</checkout_onepage_success>

есть еще идеи, в чем проблема?

Я пытаюсь сделать то же самое со страницей просмотра продукта, и мне удалось добавить блок в «product.info.additional» но не в "product.info".

Это работает:

<catalog_product_view>
        <reference name="product.info.additional">
           <block type="catalog/product_view" name="mymodule.saledetails" before="-" template="mymodule/product/details.phtml"/>
            <block type="mymodule/product_participant_list" name="mymodule.participants" before="-" template="mymodule/product/participant/list.phtml"/>
        </reference>
    </catalog_product_view>

Но это не

<catalog_product_view>
        <reference name="product.info">
                <block type="catalog/product_view" name="mymodule.saledetails" before="-" template="mymodule/product/details.phtml"/>
        </reference>
        <reference name="product.info.additional">
            <block type="mymodule/product_participant_list" name="mymodule.participants" before="-" template="mymodule/product/participant/list.phtml"/>
        </reference>
    </catalog_product_view>

Я пытаюсь переместить этот блок из "product.info.additional" в "product.info", потому что я хочу показать этот блок в Быстрый обзор (в шаблоне по умолчанию), а не в разделе «Детали». Почему он не работает под "product.info"?

Ответы [ 3 ]

2 голосов
/ 23 декабря 2010

попробуйте сослаться на блок содержимого в макете страницы успеха

<checkout_onepage_success>
    <reference name="content">
        <block type="mymodule/checkout_success" name="mymodule.checkout.details" template="mymodule/checkout/details.phtml"/>
    </reference>
</checkout_onepage_success>

вместо checkout.success, и вам, вероятно, потребуется вызвать $this->getChildHtml('yourblockname') в шаблоне или добавить output="toHtml" к вашему блоку в макете

0 голосов
/ 31 декабря 2010

<block type="core/template" name="parent" template="parent.phtml>

<block type="core/template" name="child" template="child" />

</block>

Если вы поместите в parent.phtml этот print $this->getChildHtml('child') Magento должен отобразить child.phtml внутри parent.phtml

Что касается другого вашего вопроса ... Некоторые блоки отображают все блоки, которые являются для них дочерними, но некоторые отображают только те блоки, которые отражены в их шаблоне.Так что «product.info.additional» может использовать echo $this->getChildHtml(), а «product.info» может использовать echo $this->getChildHtml('block_name')

Пожалуйста, предоставьте мне Ваш модуль config.xml

0 голосов
/ 26 декабря 2010

Попробуйте

print $this->getChildHtml('mymodule.checkout.details')

внутри родительского шаблона без вывода = "" в xml.

Вы также можете проверить журнал для дополнительной информации.

И чтобы убедиться, что этоТеперь ошибка Вашего блока замените его на

type="core/template"

Если Ваш модуль

SHANI_MyModule_Block_Checkout_Details

, тогда тип должен быть

type="mymodule/checkout_details"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...