เปลี่ยนเส้นทาง 301 อัตโนมัติสำหรับผลิตภัณฑ์ที่ปิดใช้งาน


14

ฉันพยายามเพิ่มการเปลี่ยนเส้นทางอัตโนมัติสำหรับประเภทผลิตภัณฑ์ที่กำหนดเอง (กิจกรรม) ใน Magento 1.7 เมื่อวันที่กิจกรรมผ่านไปแล้วฉันกำลังทำเครื่องหมายผลิตภัณฑ์เป็นปิดใช้งานเพื่อให้ผู้ใช้ไม่ไปที่หน้าผิดและฉันยังต้องการเปลี่ยนเส้นทางไปยังรายการของชั้นเรียนในอนาคตดังนั้นฉันจึงไม่มีข้อผิดพลาด 404 มากมายในของฉัน เว็บไซต์.

มีวิธีฟังเหตุการณ์สำหรับรับผลิตภัณฑ์ที่ 404 จะถูกโยนหรือฉันควรมองหาส่วนขยายฟรีสำหรับที่นี้หรือไม่ ฉันค้นหามาระยะหนึ่งแล้วและไม่เห็นส่วนขยายใด ๆ ที่ทำงานได้ดี

คำตอบ:


17

ยินดีต้อนรับสู่ Magento.StackExchange!

น่าเสียดายที่ไม่มีโมดูลนอกกรอบที่จะทำสิ่งนี้ให้คุณ

ฉันขอแนะนำให้คุณพิจารณาเป็นตัวเลือก ผู้ใช้ของคุณไม่ได้โง่ (ไม่ว่าพวกเขาจะทำตัวโง่) - การวิเคราะห์อีคอมเมิร์ซมานานหลายปีแสดงให้ฉันเห็นว่าเกือบ 80% ของเวลาผู้ใช้ที่เข้าถึง 404 จะกดแถบการค้นหาในไซต์ภายในไม่กี่วินาที ใช้ความพยายามในการแก้ไขการค้นหาไซต์ของคุณด้วยการจัดหมวดหมู่ที่ดีขึ้น (อ่าน: การบรรจุคำหลัก)

ดัชนีของ Google ไม่ได้เป็นอย่างถาวร หากคุณกลัวยุค 404 ลองพิจารณาหน้าเว็บ 404 ของคุณเอง เพิ่มโอกาสในการแปลงของคุณโดยเสนอคูปองส่วนลด 5-10% สำหรับผู้ที่ไม่สะดวกโดยกด 404 หรือดีกว่ายังอย่าปิดใช้งานหน้าผลิตภัณฑ์ ค่อนข้างปิดการใช้งานความสามารถในการซื้อ (เช่นตั้งเป็นหมด) และให้บล็อกคงที่ / ลิงค์ที่เชื่อมโยงไปยังหน้า / หมวดหมู่ที่เกี่ยวข้อง

ฉันไม่สนใจแค่ให้รหัสเพราะ internets:

ที่การเขียนโค้ดโมดูลที่ง่ายที่สุดด้วยผู้สังเกตการณ์ที่จะจัดการสิ่งนี้ให้คุณนั้นเป็นเรื่องเล็กน้อย:

การกำหนดเหตุการณ์ใน config.xml:

<global>
    <events>
        <controller_action_postdispatch_catalog_product_view>
            <observers>
                <yourmodule_capcpv>
                    <class>YourCompany_YourModule_Model_Observer</class>
                    <method>catalogProductViewPostdispatch</method>
                </yourmodule_capcpv>
            </observers>
        </controller_action_postdispatch_catalog_product_view>
    </events>
</global>

app / รหัส / ท้องถิ่น / yourcompany / YourModule / รุ่น / Observer.php:

<?php

class YourCompany_YourModule_Model_Observer
{
    public function catalogProductViewPostdispatch($observer)
    {
        $controller = $observer->getEvent()->getControllerAction();

        $product = Mage::registry('current_product');
        if($product->getStatus()!=Mage_Catalog_Model_Product_Status::STATUS_ENABLED){
            $action->getResponse()->setRedirect(/* your redirect URL here with Mage::getUrl() */);
        }
    }
}

1
ขอบคุณ philwinkle ฉันจะพยายามโน้มน้าวลูกค้าให้ทำตามคำแนะนำแรกของคุณ ผมเห็นว่ามันอาจจะเป็นรูปแบบที่ดีที่จะจี้ 404
kayluhb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.