Расположение поля подписки на рассылку новостей в нижнем колонтитуле


РЕДАКТИРОВАТЬ: РЕШЕНО, см. Ответ ниже (приму, когда смогу).

Я хотел переместить блок рассылки на интерфейсе моего сайта в нижний колонтитул.

Поэтому я изменил это в newsletter.xml : ( Ранее ссылка была <reference name="left">)

    <!-- Mage_Newsletter -->
    <reference name="footer">
        <block type="newsletter/subscribe" name="footer.newsletter" template="newsletter/subscribe.phtml"/>
    </reference>

Это сработало в том смысле, что информационный бюллетень переместился в нижний колонтитул, но как я могу контролировать расположение блока в нижнем колонтитуле.

Я попробовал это в своих шаблонах... страница/html/нижний колонтитул.phtml:

<div class="footer-container">
    <footer class="footer">
        <div class="row">
            <div class="nine columns">
                <?php echo $this->getChildHtml() ?>
            </div>
            <div class="three columns">
                <?php echo $this->getChildHtml('footer.newsletter') ?>
            </div>
        </div>
...

Но это дублирует блок рассылки. Теперь он появляется один раз в том месте, где я хочу, чтобы он был (в div с тремя столбцами), но затем снова появляется в div с девятью столбцами.

Я предполагаю, что это связано с тем, что он включен в вызов "$this->getChildHtml()".

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

Author: Sarah, 2014-01-28

3 answers

Просто добавьте ниже одну строку, и это сработает

<?php echo $this->getLayout()->createBlock('newsletter/subscribe')->setTemplate('newsletter/subscribe.phtml')->toHtml(); ?>
 4
Author: test, 2014-12-11 05:48:01

Попробуйте использовать атрибут after или before:

<reference name="footer">
    <block type="newsletter/subscribe" name="footer.newsletter" after="footer_links" template="newsletter/subscribe.phtml"/>
</reference>
 3
Author: oleksii.svarychevskyi, 2014-01-28 14:39:46

Проблема заключалась в вызове getChildHtml(), который, насколько я понимаю, распечатывал ВСЕ блоки в нижнем колонтитуле, поэтому, конечно, он распечатывал блок рассылки в этом вызове. А потом мой звонок getChildHtml('footer.newsletter') снова печатал блок новостей.

Я изменил getChildHtml() на getChildHtml('cms_footer_links'), и теперь это единственный блок, отображаемый там (что я и хотел в любом случае).

 2
Author: Sarah, 2014-01-29 12:34:48