Mostra sempre l'URL completo comprese le categorie per il prodotto


8

Per il nostro webshop Magento (1.7.0.2), stiamo cercando di ottimizzare la struttura degli URL. Siamo già riusciti a migliorare alcune cose, ma in una cosa non ci siamo riusciti. Vogliamo utilizzare un URL completo (comprese le categorie) per tutti i nostri prodotti. Per esempio:

  • www.website.com/products/best-products/product
  • oppure: www.website.com/products/best-products per una pagina di categoria

Funziona bene quando si sfogliano le categorie e si utilizza il pangrattato, ma non durante la ricerca. Quindi utilizza sempre www.website.com/product come URL, molto probabilmente perché un prodotto può essere in più categorie e non sa quale categoria utilizzare nei risultati di ricerca.

C'è un modo per forzare questo? Per farlo usare in qualche modo la "prima" categoria, o addirittura farla usare una categoria predefinita che puoi scegliere? Sono uno sviluppatore, quindi sono disposto ad apportare modifiche al codice, ma solo se non esiste un altro / modo più affidabile. Eventuali suggerimenti o trucchi sono i benvenuti, molte grazie in anticipo!

Risposte:


4

Quello che vuoi non può essere raggiunto - afaik.

Il problema è che Magento è pianificato con "prodotto in molte categorie". Il problema ora è che magento non preferisce nessuna categoria e invece non mostra alcuna categoria.

Le categorie vengono utilizzate, quando si fa clic sulle categorie, questo è l'unico posto (afaik) in cui vengono utilizzate le riscritture delle categorie.

Ma penso che puoi ottenere quello che vuoi, hackerando un po 'il sistema di riscrittura e assicurati solo di caricare una riscrittura di categoria e non quella senza tutte le categorie.

Il prossimo problema è quindi che devi assicurarti che Google riceva ancora ogni volta lo stesso URL canonico o avrai un problema con contenuti duplicati ...

E l'ultimo penso che ho in mente: non sono sicuro, se questa è una buona idea dal punto di vista SEO. Non sono un esperto di seo, ma qualcuno mi ha detto, più breve è l'url, migliore è ...


1

L'URL del prodotto è stampato da:
Mage_Catalog_Model_Product::getProductUrl
quel metodo sta controllando se l'URL deve includere la categoria usandoMage::registry('current_category')

Ma le raccolte normalmente caricano l'URL riscrive in una query univoca (metodo di controllo Mage_Catalog_Model_Resource_Product_Collection::addUrlRewrite($categoryId = ''))
e quindi Mage_Catalog_Model_Product::getProductUrlusa quel "request_path" dai $ product data.

Quindi un possibile trucco potrebbe essere qualcosa del genere:

        // 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');
    }

Questo non è il modo più veloce (ogni prodotto nella tua collezione ora deve caricare la riscrittura dell'URL in una query separata) ma forse il più semplice se stai cercando una soluzione rapida


0

con Magento 2. Abbiamo questa opzione sul back-end in cui è possibile impostare invece di modificare il routing dell'URL


-1

Sono abbastanza sicuro che ciò di cui hai bisogno possa essere raggiunto dall'impostazione di configurazione del sistema Use Categories Path For Product URLs. Questo può essere trovato sotto System->Configuration->Catalog->Catalog->Search Engin Optimization. Dopo aver impostato questo penso che dovrai reindicizzare.

Spero che sia di aiuto.


No, questa impostazione funziona solo se è impostata la categoria corrente (quindi, se si apre il prodotto da una pagina di categoria).
Simon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.