Mostrar siempre la URL completa, incluidas las categorías para el producto

8

Para nuestra tienda web Magento (1.7.0.2), estamos tratando de optimizar la estructura de URL. Ya hemos logrado mejorar algunas cosas, pero en una no tuvimos éxito. Queremos utilizar una URL completa (incluidas las categorías) para todos nuestros productos. Por ejemplo:

  • www.website.com/products/best-products/product
  • o: www.website.com/products/best-products para una página de categoría

Esto funciona bien cuando navega por las categorías y utiliza las migas de pan, pero no cuando busca. Luego, siempre usa www.website.com/product como URL, probablemente porque un producto puede estar en varias categorías y no sabe qué categoría usar en los resultados de búsqueda.

¿Hay alguna manera de forzar esto? ¿Para que de alguna manera use la categoría "primera", o incluso que use alguna categoría predeterminada que pueda elegir? Soy desarrollador, así que estoy dispuesto a hacer cambios en el código, pero solo si no hay otra forma más confiable. Cualquier consejo o truco es bienvenido, muchas gracias de antemano!

Niels
fuente

Respuestas:

4

Lo que quieres no se puede lograr: afaik.

El problema es que magento está planeado con "producto en muchas categorías". El problema ahora es que magento no prefiere ninguna categoría y, en cambio, no muestra ninguna categoría.

Se utilizan las categorías, cuando hace clic en las categorías, este es el único lugar (afaik) donde se utilizan las reescrituras de categoría.

Pero creo que puedes lograr lo que quieres, pirateando un poco el sistema de reescritura y solo asegúrate de cargar una reescritura de categoría y no la que no tiene todas las categorías.

El siguiente problema, entonces, es que debes asegurarte de que Google todavía recibe cada vez la misma URL canónica o tendrás un problema con el contenido duplicado ...

Y lo último que tengo en mente: no estoy seguro, si es una buena idea desde el punto de vista de SEO. No soy un experto en SEO, pero alguien me dijo, cuanto más corta es la URL, mejor ...

Fabian Blechschmidt
fuente
1

La URL del producto se imprime desde:
Mage_Catalog_Model_Product::getProductUrl
ese método verifica si la URL debe incluir la categoría usandoMage::registry('current_category')

Pero las colecciones normalmente cargan las reescrituras de URL en una consulta única (método de verificación Mage_Catalog_Model_Resource_Product_Collection::addUrlRewrite($categoryId = ''))
Y luego Mage_Catalog_Model_Product::getProductUrlusan esa 'request_path "de los datos de $ product.

Entonces, un posible truco podría ser algo como esto:

        // if we are in search results
    if( ! Mage::registry('current_category')){
        $myDesiredCategoryId = current($product->getCategoryIds()); // you could just use the first category registered with this product or define some other strategy
        $canonicalCategory = Mage::getModel('catalog/category')->load($myDesiredCategoryId);
        Mage::register('current_category', $canonicalCategory);
        $product->setRequestPath(null);
        $productUrlWithCategory = $product->getUrlModel()->getUrl($product);
        Mage::unregister('current_category');
    }

Esta no es la forma más rápida (cada producto en su colección ahora necesita cargar la reescritura de URL en una consulta separada) pero quizás sea la más fácil si está buscando una solución rápida

Enrique
fuente
0

con Magento 2. Tenemos esta opción en el backend donde puede configurar en lugar de modificar el enrutamiento de URL

Pradeep Wickramanayake
fuente
-1

Estoy bastante seguro de que lo que necesita puede lograrse mediante la configuración del sistema Use Categories Path For Product URLs. Esto se puede encontrar en System->Configuration->Catalog->Catalog->Search Engin Optimization. Después de configurar esto, creo que deberá reindexar.

Espero que esto ayude.

David modales
fuente
No, esta configuración solo funciona si se establece la categoría actual (por lo tanto, si está abriendo el producto desde una página de categoría).
Simon