10

Tengo dos bloques CMS estáticos llamados "promo_en" y "promo_de" - traducidos para las dos vistas de tienda existentes "en" y "de".Magento bloque CMS estático en formato XML con dos o más vistas de tienda

Me gustaría agregarlos a la barra lateral de algunos módulos utilizando los archivos layout.xml de los módulos.

El problema es que si los dos añadir usando la siguiente sintaxis - ambos muestran sin tener en cuenta la storeview estoy actualmente en (yo esperaría algún tipo de filtrado automático):

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

Si les cambio el nombre tanto a "promo" y utilizar la siguiente sintaxis - que funciona bien hasta que activar el caché de Magento - entonces la salida del bloque de CMS se congela en lo se almacena en caché primera storeview:

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

y las ideas o soluciones en la materia son altamente apreciado.

+0

¿O hay al menos alguna forma de deshabilitar la memoria caché para este bloque utilizando la sintaxis XML? La documentación de Magento sobre ese tema es casi inexistente en mi opinión ... – scooby37

+1

¿Se puede hacer esto con el archivo de anulación del tema? Según las vistas temáticas en francés, alemán e inglés de la tienda de demostración? –

+0

La solución sugerida por Matthew es semánticamente más correcta. – clockworkgeek

Respuesta

3

terminé de escribir mi propia mini-Module para Quickfix el problema, el cambio de las traducciones en código basado en el código actual de la tienda:

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

Sé que es feo, pero el tiempo realmente era un problema aquí y tendré que limpiar esto en el futuro ...

+2

La manera limpia parece ser la anulación del tema sugerida por Matthew - debe echarle un vistazo a antes de usar esta solución que no es más que una solución rápida ... – scooby37

27

Como solución aproximada puede usar layout handles específico para cada tienda. Por ejemplo;

<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

Gracias - Me hubiera gustado usar de esta manera porque sería simplemente una solución rápida para un cuadro de promoción que el cliente quiere en ciertos módulos, pero desafortunadamente magento simplemente ignora los controles de diseño ... ni idea de por qué ... – scooby37

14

¿Por qué no crear los bloques estáticos con el mismo identificador, y luego solo habilitarlos en la vista de tienda correspondiente?

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

¿Luego crea 2 bloques estáticos con identificador promo y solo los habilita en storeview donde pertenecen?

Cuestiones relacionadas