Luôn hiển thị URL đầy đủ bao gồm các danh mục cho sản phẩm


8

Đối với cửa hàng web Magento của chúng tôi (1.7.0.2), chúng tôi đang cố gắng tối ưu hóa cấu trúc URL. Chúng tôi đã cố gắng cải thiện một số thứ, nhưng trong một điều chúng tôi đã không thành công. Chúng tôi muốn sử dụng một URL đầy đủ (bao gồm các danh mục) cho tất cả các sản phẩm của chúng tôi. Ví dụ:

  • www.website.com/products/best-products/product
  • hoặc: www.website.com/products/best-products cho trang danh mục

Điều này hoạt động tốt khi duyệt qua các danh mục và sử dụng mẩu bánh mì, nhưng không phải khi tìm kiếm. Sau đó, nó luôn sử dụng www.website.com/product làm URL, rất có thể vì một sản phẩm có thể nằm trong nhiều danh mục và không biết nên sử dụng danh mục nào trong kết quả tìm kiếm.

Có cách nào để buộc điều này? Để làm cho nó bằng cách nào đó sử dụng danh mục "đầu tiên", hoặc thậm chí làm cho nó sử dụng một số danh mục mặc định mà bạn có thể chọn? Tôi là nhà phát triển, vì vậy tôi sẵn sàng thay đổi mã, nhưng chỉ khi không có cách khác / đáng tin cậy hơn. Bất kỳ lời khuyên hoặc thủ thuật đều được chào đón, cảm ơn rất nhiều trước!

Câu trả lời:


4

Những gì bạn muốn không thể đạt được - afaik.

Vấn đề là, magento đó được lên kế hoạch với "sản phẩm trong nhiều loại". Vấn đề bây giờ là magento không thích bất kỳ danh mục nào và thay vào đó nó không hiển thị danh mục nào cả.

Các danh mục được sử dụng, khi bạn nhấp qua các danh mục, đây là nơi duy nhất (afaik) nơi danh mục viết lại được sử dụng.

Nhưng tôi nghĩ bạn có thể đạt được những gì bạn muốn, bằng cách hack một chút hệ thống viết lại và chỉ cần đảm bảo tải một danh mục viết lại chứ không phải là không có tất cả các danh mục.

Vấn đề tiếp theo là, bạn phải chắc chắn rằng google vẫn nhận được mỗi lần cùng một url chính tắc hoặc bạn sẽ gặp vấn đề với nội dung trùng lặp ...

Và suy nghĩ cuối cùng tôi có trong đầu: Tôi không chắc chắn, vì đây là một ý tưởng tốt từ quan điểm SEO. Tôi không phải là chuyên gia seo, nhưng một số người nói với tôi, url càng ngắn thì càng tốt ...


1

Url sản phẩm được in từ:
Mage_Catalog_Model_Product::getProductUrl
phương pháp đó đang kiểm tra xem URL có phải bao gồm danh mục hay khôngMage::registry('current_category')

Nhưng các bộ sưu tập thường tải url viết lại trong một truy vấn duy nhất (phương thức kiểm tra Mage_Catalog_Model_Resource_Product_Collection::addUrlRewrite($categoryId = ''))
Và sau đó Mage_Catalog_Model_Product::getProductUrlsử dụng 'request_path "đó từ dữ liệu sản phẩm $.

Vì vậy, một mẹo có thể có thể là một cái gì đó như thế này:

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

Đây không phải là cách nhanh nhất (mọi sản phẩm trong bộ sưu tập của bạn bây giờ cần tải URL viết lại trong một truy vấn riêng) nhưng có thể là dễ nhất nếu bạn đang tìm kiếm một giải pháp nhanh chóng


0

với Magento 2. Chúng tôi có tùy chọn này trên phụ trợ nơi bạn có thể thiết lập thay vì sửa đổi định tuyến url


-1

Tôi khá chắc chắn những gì bạn cần có thể đạt được bằng cài đặt cấu hình hệ thống Use Categories Path For Product URLs. Điều này có thể được tìm thấy dưới System->Configuration->Catalog->Catalog->Search Engin Optimization. Sau khi thiết lập điều này tôi nghĩ bạn sẽ cần reindex.

Hi vọng điêu nay co ich.


Không, cài đặt này chỉ hoạt động nếu danh mục hiện tại được đặt (do đó, nếu bạn đang mở sản phẩm từ trang danh mục).
Simon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.