:::: MENU ::::

Buscar la categoría más profunda de un producto en Magento

3.50 avg. rating (68% score) - 2 votes

Uno de los problemas que presentan la mayoría de las tiendas online, y Magento no es una excepción, es que existen múltiples URLs a través de los que se puede visualizar una categoría o una ficha de producto.

Google y el resto de buscadores, aunque los puristas del SEO digan lo contrario, se manejan bien con esta situación, e incluso llegan a recomendar no hacer nada al respecto (ver el artículo sobre contenido duplicado del blog de Google Webmaster), pero si hemos de hacer algo, la recomendación es no bloquear a los buscadores y utilizar la etiqueta canonical para indicarles cual es la versión que preferimos mostrar a los usuarios.

Magento, permite incluir esta etiqueta en todas las cabeceras de las páginas de la tienda, pero la función que persigue Magento no es indicar una dirección única para cada tipo de contenido, sino que lo que pretende es mejorar la presencia de las páginas de la navegación por capas en los buscadores.

Echando un vistazo a las páginas de las fichas de producto, en Magento podemos encontrar que un mismo producto puede ser accesible desde al menos tres URLs diferentes. Por ejemplo:

  • http://www.mitienda.com/catalog/product/view/mi-id-de-producto
  • http://www.mitienda.com/miproducto.html
  • http://www.mitienda.com/micategoria/miproducto.html

 

Si miramos las cabeceras de las páginas generadas, veremos con sorpresa que las direcciones canonicas para las tres URLs, son diferentes!!

Para solucionarlo Magento nos proporciona la posibilidad de eliminar la categoría de la URL canónica, pero, ¿y cual es la solución para las tiendas que apuestan por posicionar la URL larga. Parece que ninguna…

Es cierto que todo esto se soluciona con alguno de las múltiples extensiones de SEO que existen, pero por qué utilizar extensiones cuando puedes hacértelo tu mismo ;)

No me extenderé mucho esta vez, solo dejo la consulta para obtener la URL de la categoría de nivel más profundo de las que están asignadas a un producto.

  // Obtenemos todas las categorías del producto
  $ids = $product->getCategoryIds();

  // Obtenemos la categoría mas profunda
  $deepest = Mage::getModel('catalog/category')->getCollection()
             ->addAttributeToSelect('level')
             ->addAttributeToSelect('is_active', array('eq'=>true))
             ->addAttributeToFilter('entity_id', array('in' => $ids))
             ->addAttributeToSort('level', 'desc')
             ->getFirstItem();

  // Obtenemos la URL
  echo $deepest->getUrl();

Para añadir una etiqueta meta en la cabecera, podéis utilizar este pequeño código:

  $headBlock = $this->getLayout()->getBlock('head');
  $headBlock->addLinkRel('canonical', $deepest->getUrl());



Hey! Qué opinas sobre el artículo?