2010-10-18 25 views
5

Hemos puesto el bloque "visto recientemente" en nuestra vista del producto. Todo parece estar bien al principio, pero ahora estoy viendo errores extraños que tienen que ver con diseños nulos. Si apago el almacenamiento en caché, funciona bien, pero con el caché de página completa habilitado, falla al invocar $ this-> getColumnCount(); en la plantilla.Magento: Mover "Visto recientemente" a la página del producto crea un extraño error de caché

Lo que he hecho para permitir a visto recientemente en la página del producto fue:

en catalog.xml dentro del bloque de contenidos de catalog_product_view:

  <block type="reports/product_viewed" name="reports.product.viewed" as="recently_viewed" template="reports/product_viewed.phtml"> 
       <action method="setColumnCount"><columns>4</columns></action> 
       <action method="setItemLimit"><type>recently_viewed</type><limit>4</limit></action> 
      </block> 

en el archivo de plantilla:/Catálogo de productos/vista .phtml:

   <?php echo $this->getChildHtml('recently_viewed') ?> 

todo carga finos el primer tiempo, pero si luego hago clic en otra vista del producto, a continuación, volver a cargar los errores de la página hacia fuera. Seguí el error hasta la clase: Mage_Page_Helper_Layout.

la función getCurrentPageLayout(), tiene una línea:

$this->getLayout()->getBlock('root') 

y $ this-> getLayout vuelve nulo que provoca la llamada getBlock a una excepción.
si desactivo el almacenamiento en caché, no aparecen errores y todo funciona bien.

+0

es que en Enterprise Edition? Si miras en 'app/code/core/Enterprise/PageCache/etc/cache.xml', parece que proporciona una solución para ese bloque, pero no estoy familiarizado con la función ni con la forma en que funciona. – clockworkgeek

+0

, sí, su edición empresarial. gracias por el puntero. Estoy buscando ese código, pero no puedo parecer una forma de desactivar completamente el almacenamiento en caché para ese bloque. incluso si configuro cache_lifetime en 1, igual me da el mismo error, y si elimino ese bloque xml de cache.xml, simplemente guarda en caché esa página indefinidamente y no se actualiza cuando hago clic en otros elementos. – GeekPride

Respuesta

1

¿Qué versión estás ejecutando? Por lo que sé, Magento Enterprise 1.9 tiene serios problemas con el almacenamiento en caché de página completa. Lo siento, no puedo ser más útil.

1

¿Acabas de deshabilitar el almacenamiento en caché en admin o realmente has eliminado/var/cache? Magento podría usar páginas almacenadas en caché viejas cuando lo habilite de nuevo y cause errores. Hay un botón para vaciar las cachés en la administración de caché o puede hacerlo manualmente.

1

Acabo de aplicar sus cambios a una instalación en stock de Magento EE 1.9.1 y no puedo experimentar el error que informó.

El bloque se actualiza correctamente con tal de que visite mi catálogo y no desencadena ninguna excepción cuando actualizo la página varias veces.

1

Tome este parche de Varien para 1.9.1.1 y funcionará:

Index: app/code/core/Enterprise/PageCache/Model/Container/Catalognavigation.php 
=================================================================== 
--- app/code/core/Enterprise/PageCache/Model/Container/Catalognavigation.php (revision 87812) 
+++ app/code/core/Enterprise/PageCache/Model/Container/Catalognavigation.php (working copy) 
@@ -133,6 +133,7 @@ 
      $category = Mage::getModel('catalog/category')->load($categoryId); 
      Mage::register('current_category', $category); 
     } 
+  $block->setLayout(Mage::app()->getLayout()); 

     return $block->toHtml(); 
    } 
Index: app/code/core/Enterprise/PageCache/Model/Container/Accountlinks.php 
=================================================================== 
--- app/code/core/Enterprise/PageCache/Model/Container/Accountlinks.php (revision 87812) 
+++ app/code/core/Enterprise/PageCache/Model/Container/Accountlinks.php (working copy) 
@@ -71,6 +71,7 @@ 
        $linkInfo['li_params'], $linkInfo['a_params'], $linkInfo['before_text'], $linkInfo['after_text']); 
      } 
     } 
+  $block->setLayout(Mage::app()->getLayout()); 

     return $block->toHtml(); 
    } 
Index: app/code/core/Enterprise/PageCache/Model/Container/Orders.php 
=================================================================== 
--- app/code/core/Enterprise/PageCache/Model/Container/Orders.php (revision 87812) 
+++ app/code/core/Enterprise/PageCache/Model/Container/Orders.php (working copy) 
@@ -63,6 +63,7 @@ 

     $block = new $block; 
     $block->setTemplate($template); 
+  $block->setLayout(Mage::app()->getLayout()); 

     return $block->toHtml(); 
    } 
Index: app/code/core/Enterprise/PageCache/Model/Container/Sidebar/Recentlycompared.php 
=================================================================== 
--- app/code/core/Enterprise/PageCache/Model/Container/Sidebar/Recentlycompared.php (revision 87812) 
+++ app/code/core/Enterprise/PageCache/Model/Container/Sidebar/Recentlycompared.php (working copy) 
@@ -62,6 +62,7 @@ 

     $block = new $block; 
     $block->setTemplate($template); 
+  $block->setLayout(Mage::app()->getLayout()); 

     return $block->toHtml(); 
    } 
Index: app/code/core/Enterprise/PageCache/Model/Container/Sidebar/Comparelist.php 
=================================================================== 
--- app/code/core/Enterprise/PageCache/Model/Container/Sidebar/Comparelist.php (revision 87812) 
+++ app/code/core/Enterprise/PageCache/Model/Container/Sidebar/Comparelist.php (working copy) 
@@ -60,6 +60,7 @@ 

     $block = Mage::app()->getLayout()->createBlock('catalog/product_compare_list'); 
     $block->setTemplate($template); 
+  $block->setLayout(Mage::app()->getLayout()); 

     return $block->toHtml(); 
    } 
Index: app/code/core/Enterprise/PageCache/Model/Container/Messages.php 
=================================================================== 
--- app/code/core/Enterprise/PageCache/Model/Container/Messages.php (revision 87812) 
+++ app/code/core/Enterprise/PageCache/Model/Container/Messages.php (working copy) 
@@ -81,6 +81,7 @@ 
     foreach ($this->_messageStoreTypes as $type) { 
      $this->_addMessagesToBlock($type, $block); 
     } 
+  $block->setLayout(Mage::app()->getLayout()); 

     return $block->toHtml(); 
    } 
Index: app/code/core/Enterprise/PageCache/Model/Container/Viewedproducts.php 
=================================================================== 
--- app/code/core/Enterprise/PageCache/Model/Container/Viewedproducts.php (revision 87812) 
+++ app/code/core/Enterprise/PageCache/Model/Container/Viewedproducts.php (working copy) 
@@ -76,6 +76,7 @@ 
     $block = new $block; 
     $block->setTemplate($template); 
     $block->setProductIds($productIds); 
+  $block->setLayout(Mage::app()->getLayout()); 

     return $block->toHtml(); 
    } 
Index: app/code/core/Enterprise/PageCache/Model/Container/Wishlistlinks.php 
=================================================================== 
--- app/code/core/Enterprise/PageCache/Model/Container/Wishlistlinks.php (revision 87812) 
+++ app/code/core/Enterprise/PageCache/Model/Container/Wishlistlinks.php (working copy) 
@@ -59,6 +59,7 @@ 
    { 
     $block = $this->_placeholder->getAttribute('block'); 
     $block = new $block; 
+  $block->setLayout(Mage::app()->getLayout()); 
     return $block->toHtml(); 
    } 
} 
Cuestiones relacionadas