Статический блок CMS Magento в XML-макете с двумя или более магазинами

У меня есть два статических блока CMS, называемых "promo_en" и "promo_de" - переведены для двух существующих просмотров магазина "en" и "de".

Я хотел бы добавить их на боковую панель некоторых модулей, используя файлы layout.xml модулей.

Проблема заключается в том, что если я добавлю их как с использованием следующего синтаксиса, они оба проигнорируют содержимое магазина, в котором я сейчас (я бы ожидал некоторую автоматическую фильтрацию):

<block type="cms/block" name="Promo_de">
    <action method="setBlockId"><block_id>promo_de</block_id></action>
</block> 
<block type="cms/block" name="Promo_en">
    <action method="setBlockId"><block_id>promo_en</block_id></action>
</block> 

Если я переименую их обоих в "promo" и использую следующий синтаксис: он отлично работает до тех пор, пока я не активирую Magento-кеш, - тогда вывод блока CMS замерзает на любом хранилище, которое сначала кэшируется:

<block type="cms/block" name="Promo">
    <action method="setBlockId"><block_id>promo</block_id></action>
</block> 

И идеи или обходные пути по этому вопросу высоко ценятся.

Ответ 1

В конце концов я написал свой собственный мини-модуль, чтобы быстро устранить проблему, переключив переводы в коде на основе текущего кода хранилища:

if( Mage::app()->getStore()->getCode() == 'de' ) 
{
    echo $this->getLayout()->createBlock('cms/block')->setBlockId('promo_de')->toHtml();
} 
else if( Mage::app()->getStore()->getCode() == 'en' ) 
{
    echo $this->getLayout()->createBlock('cms/block')->setBlockId('promo_en')->toHtml();
}

Я знаю, что это уродливо, но время действительно было проблемой, и мне нужно будет очистить это в будущем...

Ответ 2

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

<STORE_de>
    <reference name="left">
        <block type="cms/block" name="Promo_de">
            <action method="setBlockId"><block_id>promo_de</block_id></action>
        </block> 
    </reference>
</STORE_de>
<STORE_en>
    <reference name="left">
        <block type="cms/block" name="Promo_en">
            <action method="setBlockId"><block_id>promo_en</block_id></action>
        </block> 
    </reference>
</STORE_en>

Ответ 3

Почему бы не создать статические блоки с тем же идентификатором, а затем включить их только в соответствующее хранилище?

<block type="cms/block" name="Promo">
    <action method="setBlockId"><block_id>promo</block_id></action>
</block> 

Затем создайте 2 статических блока с промоутером идентификатора и включите их только в storeview, где они принадлежат?