10

Mam dwa statyczne bloki CMS zwane "promo_en" i "promo_de" - przetłumaczone dla dwóch istniejących storeviews "en" i "de".Magento statyczny blok CMS w układzie XML z dwoma lub więcej widokami sklepu

Chciałbym dodać je do paska bocznego niektórych modułów przy użyciu plików layout.xml modułów.

Problem polega na tym, że jeśli dodać je zarówno przy użyciu następującej składni - oboje pokaz pominięciem storeview Jestem obecnie w (ja spodziewałbym się trochę automatyczne filtrowanie):

<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> 

Gdybym zarówno ich nazwy do „promo” i użyć następującej składni - to działa dobrze, dopóki ja aktywować cache Magento - to wyjście z zamarza blokowych CMS na cokolwiek storeview jest buforowane pierwsze:

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

i pomysłów lub obejścia na ten temat są bardzo docenione.

+0

A może jest jakiś sposób wyłączenia pamięci podręcznej dla tego bloku przy użyciu składni XML? Dokumentacja Magento na ten temat prawie nie istnieje w mojej opinii ... – scooby37

+1

Czy możesz to zrobić z plikiem motywu over-ride? Jak na francuski, niemiecki i angielski temat sklepu demo? –

+0

Sugerowane przez Matthew rozwiązanie jest semantycznie bardziej poprawne. – clockworkgeek

Odpowiedz

3

skończyło się pisać własne mini-Module do quickfix problemu przełączania tłumaczenia w kodzie na podstawie aktualnego kodu Store:

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(); 
} 

wiem, że jest brzydki, ale czas naprawdę był problem tutaj i będę musiał to wyczyścić w przyszłości ...

+2

Czysty sposób wydaje się być przesłonięciem tematu, które zasugerował Matthew - powinieneś rzucić okiem na to przed użyciem tego rozwiązania, które jest niczym więcej niż quickfix ... – scooby37

27

W celu obejścia tego problemu można użyć numeru layout handles określonego dla każdego sklepu. Na przykład;

<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> 
+1

Dziękuję - bardzo bym chciał skorzystać z tej metody, ponieważ byłby to po prostu poprawka na pudełko promocyjne, które klient chce na niektórych modułach - ale niestety magento po prostu ignoruje uchwyty układu ... nie ma pojęcia dlaczego ... – scooby37

14

Dlaczego nie utworzyć statycznych bloków o tym samym identyfikatorze, a następnie włączyć je tylko w odpowiednim widoku magazynu?

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

Następnie utwórz 2 statyczne bloki z promowanym identyfikatorem i włącz je tylko w sklepie, do którego należą?

Powiązane problemy