2011-06-07 11 views
6

Estoy usando una plantilla que llama a una función en bloque, y dentro de ese bloque estoy tratando de extraer una categoría actual con Mage::registry('current_category'). Sin embargo, siempre devuelve NULL. Intenté hacer esto desde la página del producto, página de búsqueda, todavía nada. ¿Hay alguna razón por la cual devolvería NULL? ¿Cuáles son algunas cosas que podría verificar?¿Por qué razón Mage :: registry ('current_category') devolverá NULL?

+1

se podía chekc con depurador, donde se establece y donde se pone desarmar –

Respuesta

10

Es nula, ya que no se establece. El registro actúa como un sistema para variables globales que no se basan en el soporte global integrado de PHP. No se garantiza que cualquier variable particular que se haya registrado estará disponible en cada página. Por ejemplo, dijiste que probaste esto en la página de búsqueda. ¿Cuál debería ser el current_category en la página de búsqueda?

Es nulo porque se supone que es.

+3

También la categoría solo se establecerá para las páginas del producto si la URL contiene el nombre de la categoría correspondiente – clockworkgeek

+0

Supongo que esto tiene sentido :) Gracias –

+0

@clockworkgeek Pero en mi caso en la página de poductos para algunos pr oducts (todos sin nombre de categoría en url) 'Mage :: registry ('current_category')' devuelve nulo pero en otros casos devuelve el objeto de categoría. ¿Porqué es eso? – KoviNET

-1

Prueba esto:

$category = $this->helper('catalog/category')->getCategoryUrl(Mage::registry('current_category')); 
+0

:('Fatal error: Llamada a una función miembro getData() en un no-objeto en ... \ Magento \ app \ code \ core \ Mage \ Catalog \ Helper \ Category.php en línea ' –

+0

... y su archivo de plantilla es? –

+1

Si el valor devuelto de Mage :: registry ('current_category') es nulo, entonces obteniendo el la categoría URL no va a funcionar. –

Cuestiones relacionadas