Tìm kiếm danh mục: Nếu chỉ có một kết quả, hãy hiển thị trang xem sản phẩm theo chế độ xem danh sách


14

Mục tiêu của tôi là đạt được sự sửa đổi sau trong tìm kiếm danh mục Magento.

Khi tôi tìm kiếm một sản phẩm và chỉ có một sản phẩm được trả về trong bộ sưu tập kết quả, tôi muốn hiển thị lên trang xem sản phẩm thay vì trang danh sách sản phẩm.

Bạn có thể cho tôi một lời khuyên làm thế nào và nơi tôi nên bắt đầu tìm kiếm để thực hiện sửa đổi này?

Hiện tại tôi thực sự bị mất trong toàn bộ rất nhiều mã.

Sử dụng Magento 1.9.0.1

Câu trả lời:


21

Bạn cần tạo một tiện ích mở rộng mới để kiểm tra, trước khi hiển thị trang tìm kiếm nhanh (hoặc tìm kiếm nâng cao) nếu bộ sưu tập sản phẩm chứa chính xác một sản phẩm.
Đối với điều này, hãy tạo một phần mở rộng mới được gọi là StackExchange_CatalogSearch.
Bạn sẽ cần phải theo dõi các tập tin sau:

app/etc/modules/StackExchange_CatalogSearch.xml - hồ sơ khai

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_CatalogSearch>
            <codePool>local</codePool>
            <active>true</active>
            <depends>
                <Mage_CatalogSearch />
            </depends>
        </StackExchange_CatalogSearch>
    </modules>
</config>

app/code/local/StackExchange/CatalogSearch/etc/config.xml - tập tin cấu hình:

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_CatalogSearch>
            <version>1.0.0</version>
        </StackExchange_CatalogSearch>
    </modules>
    <global>
        <models>
            <stackexchange_catalogsearch>
                <class>StackExchange_CatalogSearch_Model</class>
            </stackexchange_catalogsearch>
        </models>
    </global>
    <frontend>
        <events>
            <controller_action_layout_render_before_catalogsearch_result_index><!-- for the quick search-->
                <observers>
                    <stackexchange_catalogsearch>
                        <model>stackexchange_catalogsearch/observer</model>
                        <method>redirectToProduct</method>
                    </stackexchange_catalogsearch>
                </observers>
            </controller_action_layout_render_before_catalogsearch_result_index>
            <controller_action_layout_render_before_catalogsearch_advanced_result><!-- for the advanced search-->
                <observers>
                    <stackexchange_catalogsearch>
                        <model>stackexchange_catalogsearch/observer</model>
                        <method>redirectToProduct</method>
                    </stackexchange_catalogsearch>
                </observers>
            </controller_action_layout_render_before_catalogsearch_advanced_result>
        </events>
    </frontend>
</config>

app/code/local/StackExchange/CatalogSearch/Model/Observer.php - người quan sát làm tất cả công việc.

<?php
class StackExchange_CatalogSearch_Model_Observer
{
    //the product list block name in layout
    const RESULT_BLOCK_NAME = 'search_result_list';
    public function redirectToProduct($observer)
    {
        /** @var Mage_Catalog_Block_Product_List $block */
        $block = Mage::app()->getLayout()->getBlock(self::RESULT_BLOCK_NAME);
        if ($block) {
            $collection = $block->getLoadedProductCollection();
            if ($collection && $collection->getSize() == 1) {
                /** @var Mage_Catalog_Model_Product $product */
                $product = $collection->getFirstItem();
                $url = $product->getProductUrl();
                if ($url){
                    Mage::app()->getResponse()->setRedirect($url);
                    Mage::app()->getResponse()->sendResponse();
                    exit; //stop everything else
                }
            }
        }
    }
}

Xóa bộ nhớ cache, vô hiệu hóa biên dịch nếu được bật và cho nó đi.

Lưu ý: Tiện ích mở rộng này chuyển hướng đến trang sản phẩm khi trang tìm kiếm (và tìm kiếm nâng cao) chỉ quay lại trên sản phẩm, ngay cả khi điều này xảy ra sau khi tìm kiếm hoặc sau khi áp dụng bộ lọc điều hướng lớp.


Wow tuyệt vời, điều này hoạt động như một nét duyên dáng! Cảm ơn rât nhiều!
Marco

1
Đối với những người lười biếng, tải xuống tại đây: github.com/sreichel/magento-StackExchange_CatalogSearch
sv3n
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.