Показване на персонализиран статичен блок на персонализираната страница 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() получих "каталог/категория/изглед/идентификатор/ид_номер"

Наистина не разбирам как да реша този проблем.

Благодаря за отговора!


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 == '1st category') { 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