Отображение пользовательского статического блока на пользовательской странице Magento

У меня есть вопрос о статическом блоке Magento cms, отображаемом на пользовательской странице. Например, у меня есть 3 статических блока (блок 1, блок 2, блок 3), и мне нужно отобразить блок 1 в категории 1 и подкатегориях 1, блок 2 в категории 2 и подкатегориях 2 и блок 3 на других страницах ( дома, о и т. д.)

Я пытаюсь использовать Mage::app()->getFrontController()->getRequest()->getRequestUri()

Но я получил запрос вида "category1.html" и если мы идем в подкатегорию этой категории - блок меняется на дефолт.

При использовании Mage::app()->getFrontController()->getRequest() я получил "каталог/категория/представление/id/id_number"

Я действительно не понимаю, как решить эту проблему.

Спасибо за ответ!


person Donnie    schedule 05.08.2013    source источник
comment
Ваш вопрос немного сбивает с толку. Вы пытаетесь назначить статические блоки определенным категориям?   -  person Axel    schedule 05.08.2013
comment
Да, у меня есть только 3 категории + подкатегории и другие страницы, такие как домашняя страница, доставка и т. д., и я хочу показать 3 разных статических блока, созданных в админке для этих категорий (cat1+subcat1 = block1 и т. д.), и блок 4 для других страниц.   -  person Donnie    schedule 05.08.2013
comment
Почему нельзя использовать встроенный функционал, позволяющий назначать статические блоки категориям? Я добавил ответ, в котором описаны шаги для этого.   -  person Axel    schedule 05.08.2013
comment
спасибо за ответ, но этот блок нужно показать в футере   -  person Donnie    schedule 05.08.2013


Ответы (4)


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

ПРИМЕЧАНИЕ. Если у вас есть собственная тема, название нижнего колонтитула может быть другим. Этот метод был протестирован для работы с современной темой, включенной в Magento.

  1. Выберите Каталог > Управление категориями.
  2. Выберите категорию, к которой вы хотите присвоить свой блок.
  3. Перейдите на вкладку Пользовательский дизайн.
  4. Установите для параметра Использовать настройки родительской категории значение No.
  5. В Обновление пользовательского макета вставьте следующий XML-код
    <reference name="bottom.container">
    <block type="cms/block" name="my_footer_block"> <action method="setBlockId"> <block_id>my_footer_block</block_id>
    </action>
    </block>
    </reference>

  6. Замените my_footer_block на Идентификатор (block_id) вашего статического блока.

  7. Очистите кэш Magento в разделе Система > Управление кэшем и обновите страницу категории.

Если это не работает, возможно, имя ссылки не соответствует используемой теме. Вы можете проверить имя ссылки, заглянув под app/design/frontend/[THEME PARENT]/[THEME CHILD]/layout/page.xml и выполнив поиск page/html_footer в файле.

В файле вы найдете что-то вроде этого:

<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml">
    <block type="page/html_wrapper" name="bottom.container" as="bottomContainer" translate="label">
        <label>Page Footer</label>
        <action method="setElementClass"><value>bottom-container</value></action>
    </block>
    <block type="page/template_links" name="footer_links" as="footer_links" template="page/template/links.phtml"/>
        <block type="page/switch" name="store_switcher" as="store_switcher" template="page/switch/stores.phtml"/>
    </block>
    <block type="core/text_list" name="before_body_end" as="before_body_end" translate="label">
        <label>Page Bottom</label>
    </block>
</block>

Обратите внимание на атрибут name для блока page/html_wrapper. Это ссылки на имена, используемые в коде, предоставленном на шаге Шаг 5. Если он отличается от bottom.container, измените bottom.container, чтобы он соответствовал тому, что находится в вашем файле page.xml.

person Axel    schedule 05.08.2013

это может тебе помочь

Strategy : Check current page is whether current category is available on current page or not, If available then you can check it's level and depending on that you can show you block

Solution :
$_current_category=$this->getCurrentCategory();
1)get current category and if category not available then show default block
2)if category found get it's level $_current_category->getLevel() and then you can place your block accordingly
person Anil Gupta    schedule 06.08.2013

Переопределите catalog.xml в вашем локальном модуле. Добавьте в ссылку на содержимое.

в вашем каталоге/категории/voew.phtml добавьте этот код

$_current_category=$this->getCurrentCategory();

if(cond == '1-я категория') { echo $this->getChildHtml('block1'); }

Аналогично для других блоков

person Sandeep    schedule 05.08.2013

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

  1. Выберите Каталог > Управление категориями.
  2. Щелкните категорию, которой вы хотите назначить блок, слева.
  3. Перейдите на вкладку Настройки отображения.
  4. Установите для параметра Режим отображения значение Static block only или Static block with products.
  5. Задайте для параметра Блок CMS статический блок, который вы хотите отображать в этой категории.
  6. Нажмите кнопку Сохранить категорию.

Повторите этот шаг для разных категорий. Вы можете выбрать уникальный статический блок или таким образом назначить один и тот же блок нескольким категориям.

person Axel    schedule 05.08.2013
comment
Я пробовал эту версию, но мне нужно показать текущий блок в нижнем колонтитуле - person Donnie; 05.08.2013
comment
Я добавил еще один ответ, подробно описывающий, как это сделать. В дальнейшем, пожалуйста, уточняйте все детали того, чего вы пытаетесь достичь, вплоть до размещения на странице (в вашем случае статический блок в футере категории). Это позволит людям здесь дать вам правильный ответ на то, чего вы пытаетесь достичь. - person Axel; 05.08.2013