Chào mừng bạn đến với Magento.StackExchange!
Thật không may, không có mô-đun ngoài hộp nào sẽ làm điều này cho bạn.
Tôi rất khuyến khích bạn xem xét lại điều này như là một tùy chọn. Người dùng của bạn không ngu ngốc (dù họ cư xử ngu ngốc đến mức nào) - nhiều, nhiều năm phân tích Thương mại điện tử đã cho tôi thấy rằng, gần 80% thời gian, người dùng đạt 404 sẽ chạm vào thanh tìm kiếm trên trang web trong vài giây. Đặt nỗ lực của bạn vào việc sửa chữa tìm kiếm trang web của bạn với phân loại tốt hơn (đọc: nhồi từ khóa).
Google chỉ mục không phải là mãi mãi. Nếu bạn sợ 404, hãy xem xét việc tự tạo trang 404 của mình. Tăng tiềm năng chuyển đổi của bạn bằng cách cung cấp phiếu giảm giá 5-10% cho những người không có kinh nghiệm bằng cách nhấn 404. Hoặc, tốt hơn nữa, đừng vô hiệu hóa các trang sản phẩm. Thay vào đó, hãy vô hiệu hóa khả năng mua hàng (ví dụ như được đặt là hết hàng) và cung cấp một khối / liên kết tĩnh liên kết đến trang / danh mục có liên quan.
Tôi không quan tâm, chỉ cung cấp cho tôi mã bởi vì internets:
Đơn giản nhất là mã hóa một mô-đun với một người quan sát sẽ xử lý việc này cho bạn là chuyện nhỏ:
Chỉ định sự kiện trong 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>
ứng dụng / mã / cục bộ / YourCompany / YourModule / Model / 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() */);
}
}
}