Selalu tampilkan URL lengkap termasuk kategori untuk produk

8

Untuk toko web Magento kami (1.7.0.2), kami mencoba mengoptimalkan struktur URL. Kami sudah berhasil memperbaiki beberapa hal, tetapi dalam satu hal kami tidak berhasil. Kami ingin menggunakan URL lengkap (termasuk kategori) untuk semua produk kami. Sebagai contoh:

  • www.website.com/products/best-products/products
  • atau: www.website.com/products/best-products untuk halaman kategori

Ini berfungsi dengan baik saat menelusuri kategori dan menggunakan remah roti, tetapi tidak saat mencari. Kemudian selalu menggunakan www.website.com/product sebagai URL, kemungkinan besar karena suatu produk dapat berada dalam beberapa kategori dan tidak tahu kategori mana yang akan digunakan dalam hasil pencarian.

Apakah ada cara untuk memaksakan ini? Untuk membuatnya entah bagaimana menggunakan kategori "pertama", atau bahkan membuatnya menggunakan beberapa kategori default yang dapat Anda pilih? Saya seorang pengembang, jadi saya bersedia melakukan perubahan pada kode, tetapi hanya jika tidak ada cara lain yang lebih dapat diandalkan. Setiap tips atau trik dipersilahkan, terima kasih banyak sebelumnya!

Niels
sumber

Jawaban:

4

Apa yang Anda inginkan tidak dapat dicapai - afaik.

Masalahnya, magento itu direncanakan dengan "produk dalam banyak kategori". Masalahnya sekarang adalah magento tidak suka kategori apa pun dan malah menunjukkan tidak ada kategori sama sekali.

Kategori digunakan, ketika Anda mengklik melalui kategori, ini adalah satu-satunya tempat (afaik) di mana kategori penulisan ulang digunakan.

Tapi saya pikir Anda dapat mencapai apa yang Anda inginkan, dengan meretas sedikit sistem penulisan ulang dan pastikan untuk memuat kategori menulis ulang dan bukan yang tanpa semua kategori.

Masalah selanjutnya adalah, bahwa Anda harus memastikan, bahwa google masih mendapatkan setiap kali url kanonik yang sama atau Anda akan mendapatkan masalah dengan duplikat konten ...

Dan pemikiran terakhir yang ada dalam pikiran saya: Saya tidak yakin, apakah ini ide yang bagus dari sudut pandang SEO. Saya bukan ahli seo, tetapi seseorang mengatakan kepada saya, semakin pendek url, semakin baik ...

Fabian Blechschmidt
sumber
1

Url Produk dicetak dari:
Mage_Catalog_Model_Product::getProductUrl
metode itu memeriksa apakah URL harus menyertakan kategori menggunakanMage::registry('current_category')

Tetapi koleksi biasanya memuat penulisan ulang url dalam kueri unik (metode cek Mage_Catalog_Model_Resource_Product_Collection::addUrlRewrite($categoryId = ''))
Dan kemudian Mage_Catalog_Model_Product::getProductUrlmenggunakan 'request_path "dari $ data produk.

Jadi trik yang mungkin bisa jadi seperti ini:

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

Ini bukan cara tercepat (setiap produk dalam koleksi Anda sekarang perlu memuat penulisan ulang URL dalam kueri yang terpisah) tetapi mungkin yang termudah jika Anda mencari solusi cepat

Enrique
sumber
0

dengan Magento 2. Kami memiliki opsi ini di backend tempat Anda dapat mensetup alih-alih memodifikasi perutean url

Pradeep Wickramanayake
sumber
-1

Saya cukup yakin apa yang Anda butuhkan dapat dicapai dengan pengaturan konfigurasi sistem Use Categories Path For Product URLs. Ini dapat ditemukan di bawah System->Configuration->Catalog->Catalog->Search Engin Optimization. Setelah mengatur ini saya pikir Anda perlu mengindeks ulang.

Semoga ini membantu.

David Manners
sumber
Tidak, pengaturan ini hanya berfungsi jika kategori saat ini disetel (karenanya, jika Anda membuka produk dari halaman kategori).
Simon