Как показать блок на всех страницах магазина?

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Egor
  • Группа: Пользователь
  • Сообщений: 4
  • Регистрация: 09.06.2011

09.06.2011 20:22

Здравствуйте!
Написал маленький модуль под магенто фронтенд которого доступен по адресу www.magento.local/mymodule.
Есть ли возможность сделать так что б вывод(блок) моего модуля показывался на всех страницах сайта(под контентом либо над ним)?
Спасибо.

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

09.06.2011 22:34

Поместите ваше макетное правило внутрь зацепки (handle) default - эта зацепка срабатывает на всех страницах.
В качестве ориентира смотрите, например, правило для верхнего меню - оно ровно так же отображается на всех страницах:

<default>
    <reference name="top.menu">
        <block type="catalog/navigation" name="catalog.topnav" template="catalog/navigation/top.phtml"/>
    </reference>
</default>


Чтобы ваш блок стоял выше других среди всех блоков конкретной позиции, используйте в вашем правиле атрибут before='-'.
Чтобы ваш блок стоял наже других всех блоков конкретной позиции, используйте в вашем правиле атрибут after='-'.
Примеры использования этих атрибутов вы также найдёте в стандартных макетах, например:

<block type="catalog/product_list_related" name="catalog.product.related" before="-" template="catalog/product/list/related.phtml"/>


#3 Egor
  • Группа: Пользователь
  • Сообщений: 4
  • Регистрация: 09.06.2011

10.06.2011 20:16

Спасибо за ответ! Выводит шаблон модуля но пустой - как будто просто вывело шаблон без результатов работы модуля.

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

10.06.2011 20:18

Прикрепите сюда снимок экрана.

#5 Egor
  • Группа: Пользователь
  • Сообщений: 4
  • Регистрация: 09.06.2011

10.06.2011 20:53

Екшен контроллера модуля
public function indexAction()
{
    $this->loadLayout();
    $this->getLayout()->getBlock('sample.all')->assign(array(
            'url'    => 'http://www.google.com/',
            'width'  => '600',
            'height' => '150'));
    $this->renderLayout();
} 

Блок
<?php
class Sample_Mymodule_Block_Content extends Mage_Core_Block_Template
{
    protected function _construct()
    {
        $this->setTemplate('sample/mymodule/view.phtml');
    }
}

Шаблон
<iframe id="ifrm" src="<?php echo $url;?>" width="<?php echo 
    $width;?>" height="<?php echo $height;?>" align="left">
    Your browser not support iframe!
</iframe>


При обращении к модулю по сслыке www.magento.local/mymodule - выводит все как должно быть

Далее вставляю блок как Вы советовали:
<reference name="top.container">
    <block type="cms/block" name="cms.top.callout" before="-">
        <action method="setBlockId"><block_id>top_callout</block_id></action>
    </block>
    <block type="sample_mymodule/content" name="mymodule.all" template="sample/mymodule/view.phtml"/>
</reference>


Отображает шаблон но без нужных параметров - просто белый квадрат(ифрейм с пустыми параметрами)

Думаю что надо вставлять ссылку на екшен а не на блок?

#6 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

10.06.2011 22:03

Так это ваш модуль?
Тогда вам, как автору, виднее - что делать.
Я не специализируюсь на сторонних самописных модулях: я не изучал их программный код и не могу гадать о причинах проблем.

#7 Egor
  • Группа: Пользователь
  • Сообщений: 4
  • Регистрация: 09.06.2011

10.06.2011 23:04

Ну это модулем можно назвать только с большой натяжкой. Функцыонал там как видно практически нет - только вывести фрейм. Вопрос в том как результат его работы(вывод этого фрейма с параметрамы которые задаються в контроллере) показать где то на сайте..
Спасибо еще раз за ответы - буду рыть дальше.

Поделиться темой: