page current php magento caching

php - page - get current category magento 2



Magento-Obtener producto actual (4)

Tengo un bloque de barra lateral en mi diseño que se muestra en diferentes páginas.

En este bloque, tengo una lista de productos y quiero seleccionar el producto actual cuando estoy en una página de producto.

Estoy usando :

$current_product = Mage::registry(''current_product'');

para obtener el producto actual, pero esto solo funciona por primera vez cuando estoy cargando la página del producto. Cuando selecciono un producto diferente, el código anterior devuelve el mismo valor (el primer producto).

Supongo que esto sucede porque estoy usando el caché de Magento. ¿Qué puedo hacer para obtener el valor correcto?

Lo mismo sucede cuando uso:

$currentCategory = Mage::registry(''current_category'');

El bloque de la barra lateral es una plantilla de navegación que he agregado aquí: .. / app / design / frontend / default / mytheme / template / catalog / navigation / page_left.phtml.

Lo estoy agregando al diseño con este XML:

<block type="catalog/navigation" name="left.navigation.block" as="left.navigation.block" template="catalog/navigation/page_left.phtml"/>


Cómo obtener la identificación del producto actual

Pruebe el siguiente código para obtener el ID del producto cargado actualmente:

$product_id = $this->getProduct()->getId();

Cuando no tenga acceso a $ esto, puede usar el registro de Magento:

$product_id = Mage::registry(''current_product'')->getId();


Puede obtener la ID del producto actual y los detalles del producto en el siguiente código.

$_proId = $this->getProduct()->getId(); $_product= Mage::getModel(''catalog/product'')->load($_proId);


Si no está dispuesto a usar su propia clase de bloque Mage_Catalog_Block_Navigation de Mage_Catalog_Block_Navigation , en la que puede configurar su propia información de caché (para hacerlo, por ejemplo, dependiendo del producto actual), puede deshacerse del caché de su bloque al usar este en su definición de diseño:

<block type="catalog/navigation" name="left.navigation.block" as="left.navigation.block" template="catalog/navigation/page_left.phtml"> <action method="unsetData"><key>cache_lifetime</key></action> </block>


$_proId = $this->getProduct()->getId(); $_product= Mage::getModel(''catalog/product'')->load($_proId);

Esto realmente funciona. Ha sido abajo votado anteriormente, sin embargo funcionó para mí. Entiendo que el producto se carga cuando usas getProduct() , sin embargo, solo estaba obteniendo información parcial del producto. Obtener la ID y volver a cargar el producto devolvió toda la información.

Puede ser específico para una versión de Magento, pero funciona aunque parece estúpido.