2010-05-07 21 views
6

Uso el caché de bloque de Magento para el bloque de navegación superior. El problema es que el bloque debe generar algunas URL para los archivos en el directorio skin que no se pueden poner en archivos css ya que los nombres de los archivos dependen de los datos del modelo de categoría.¿Cómo usar cachés de bloque separados para acceso de tienda seguro y no seguro en Magento?

Ahora cuando abro magento usando una conexión segura (https: //) el bloque de navegación se extrae de la caché y se envía al navegador pero con las URL http: // resulta en una advertencia en la mayoría de los navegadores sobre inseguridad elementos en la página.

Me gustaría tener cachés separados para conexiones seguras y no seguras. El bloque de navegación se extiende la clase Mage_Catalog_Block_Navigation y por lo tanto tiene la siguiente configuración de la caché:

$this->addData(array(
     'cache_lifetime' => false, 
     'cache_tags'  => array(Mage_Catalog_Model_Category::CACHE_TAG, Mage_Core_Model_Store_Group::CACHE_TAG), 
    )); 

Respuesta

4

Hmmm más sencillo de lo que pensaba ...

He intentado reemplazando el método getCacheKey() añadiendo una bandera con el estado actual de la seguridad, pero en un primer momento no se trataba de éxito, pero después de varias purgas de caché esto parece funcionar ahora:

public function getCacheKey() 
{ 
    $key = parent::getCacheKey(); 
    $key .= Mage::app()->getStore()->isCurrentlySecure() ? '_S' : '_U'; 

    return $key; 
} 
+0

Hay un ejemplo de esto en el núcleo Mage_Page_Block_Html_Footer en v1.3.2.4 así: '/ *** Clave para bloquear el contenido de almacenamiento en caché Recuperar * * @return string */ función getCacheKey pública() { retorno 'PAGE_FOOTER_'. Mage :: app() -> getStore() -> getId() . '_'. (int) Mage :: app() -> getStore() -> isCurrentlySecure() . '_'. Mage :: getDesign() -> getPackageName() . '_'. Mage :: getDesign() -> getTheme ('plantilla'); } ' – benz001

Cuestiones relacionadas