Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Включение/выключение динамического блока без правки XML
 
mkII
Sr. Member
 
Total Posts:  79
Joined:  2009-02-24
 

Может, кому пригодится:

Порой нужно иметь возможность отключать динамические блоки (которые создаются на основе phtml темплэйтов и жестко прописаны в XML) без правки этих самых XML. Для этого можно достаточно легко приспособить статические блоки - в качестве “прокладки”. Ведь у статического блока есть одно хорошее качество - его можно в пять сек отключить в админке.

Т.е. цепочка определений XML => dynamic block меняется на цепочку XML => static block => dynamic block.

Допустим, у нас есть динамический блок, определенный в XML следующим образом:

<block type="catalog/navigation" name="right.manufacturer" template="catalog/navigation/manufacturer_rightcol.phtml" />

и нам надо иметь возможность его быстро включать/отключать.

Мы создаем статический блок с идентификатором, скажем, product_manufacturer, и в поле содержания копируем вышеприведенную строку, заменив угловые скобки на… гм, не помню, как они зовутся. Короче, вот так:

{{block type="catalog/navigation" name="right.manufacturer" template="catalog/navigation/manufacturer_rightcol.phtml"}}

Потом идем в XML и заменяем строку определения динамического блока на строку определения только что созданного статического блока:

<block type="cms/block" after="cart_sidebar" name="product_manufacturer">
<
action method="setBlockId"><block_id>product_manufacturer</block_id></action>
</
block>

Готово. Можно тянуться к выключателю.

Какие есть подводные камни? Один есть точно - я не знаю, как можно и можно ли вообще превратить многострочное определение блока в ссылку, которая помещается в тело статического блока. Например, вот такое определение:

<block type="core/template" after="-" name="left.permanent.callout-1" template="callouts/left_col.phtml">
        <
action method="setImgSrc"><src>images/media/col_left_callout-1.jpg</src></action>
        <
action method="setImgAlt" translate="alt" module="catalog"><alt>Read This First Before You Buy</alt></action>
        <
action method="setLinkUrl"><url>readme1st</url></action>
    </
block>

Но, как правило, по отношению к таким блокам и нужды их отключать сколь-нибудь часто не возникает.

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top