2011-03-31 19 views
5

Tengo una página CMS que voy a mostrar los productos con el siguiente código XML actualización:¿Cómo obtengo la identificación de catageory actual?

<reference name="content"> 
    <block type="catalog/product_list" name="product_list" template="catalog/product/wholesale-list.phtml"> 
     <action method="setCategoryId"><category_id>191</category_id></action> 
     <action method="setToolbarBlockName"><name>product_list_toolbar</name></action> 
    </block> 
</reference> 

He tratado de conseguir el ID puse en el diseño, pero no hubo suerte. He tratado:

$_category = Mage::registry(‘current_category’); 
$currentCategoryId= $_category->getId(); 

y

$layer = Mage::getSingleton(‘catalog/layer’); 
$_category = $layer->getCurrentCategory(); 
$currentCategoryId= $_category->getId(); 

Pero ninguno de estos métodos de trabajo. ¿Alguien sabe cómo puedo obtener la identificación?

Respuesta

4

No he probado esto, pero tal vez algo como:

$this->getLayout()->getBlock('product_list')->getCategoryId() 

De esta manera usted está recibiendo directamente la variable que ha configurado en el objeto del bloque en el XML.

Cheers,
JD

+0

Muchas gracias! – Chris

1

¿Ha considerado actualizar el diseño de la página del catálogo en lugar de hacer una página CMS? Supongo que hay situaciones en las que puede preferir una página de CMS, pero puede actualizar el diseño de una categoría con bastante facilidad, así de fácil en Magento, que no es tan fácil :)

Inicie sesión para el backend de administración, vaya a Catálogo -> Administrar categorías, luego elija la categoría que desea, luego haga clic en la pestaña Diseño personalizado. Observe el campo Actualizaciones de diseño personalizado. Aquí es donde puedes poner tus actualizaciones de diseño.

Así que para esta categoría, si no desea mostrar un bloque específico que podría hacer algo como

<reference name="right"> 
     <remove name="right.permanent.callout" /> 
</reference> 

que eliminaría el bloque llamado right.permanent.callout de la disposición en conjunto. Y si desea cambiar sólo el producto lista para usar sus phtml específicos archivo que podría hacer algo como ...

<reference name="product_list"> 
     <action method="setTemplate"><template>catalog/product/wholesale.phtml</template></action> 
</reference> 

es probable que pueda utilizar Google para obtener más información sobre cómo diseños.

0

Esto funciona para mí:

$layer = Mage::getSingleton('catalog/layer'); 
$_category = $layer->getCurrentCategory(); 
$currentCategoryId= $_category->getId(); 
39

Creo que esta es la mejor manera;)

Mage::registry('current_category')->getId(); 
+0

Esta es la respuesta correcta y debe marcarse como tal :) – nickspiel

3

Trate continuación Código

Mage::getModel('catalog/layer')->getCurrentCategory()->getId(); 
0

Esto funcionó para mí:

$currentCat = $this->getLayout()->getBlock('category.products')->getCurrentCategory(); 

entonces usted tiene la categoría actual como un objeto y se puede obtener el id por:

$currentCat->getId(); 
Cuestiones relacionadas