Magento:直接将静态页面导航到特定产品

Magento: Navigation static page directly to specific product

我想在导航栏中添加一个静态 link,可以 link 直接指向特定产品。

由于类别 "pillow" 下只有一个产品列表,我希望将其设置为直接进入产品,跳过目录视图。

我知道有两种方法,URL 重写管理静态块,但是我都遇到了问题.

对于 "URL rewrite",它起作用了,但是一旦我在类别中更新了一些东西(例如移动位置),系统就会生成一个新的 "URL rewrite" 并删除我的自定义的。

对于"static block",我不知道在里面放什么代码。我的猜测是添加以下代码,但它不起作用。

{{block type="catalog/product_view" product_id="896" template="catalog/category/view.phtml"}}

如何完成?提前致谢。

我对这个问题采取了不同的方法,这可能会有帮助。如果类别仅包含一种产品,您的最终目标似乎是跳过类别视图。因此,与其大惊小怪地使用硬编码模板或尝试通过 URL 重写来破坏类别,您可以使用事件观察器来完成此操作。

该方法将侦听 <catalog_controller_category_init_after> 事件触发并检查该类别是否只有一种产品。如果是这样,它会将请求直接发送到产品。您将需要添加新的扩展程序或修改现有的扩展程序。

etc/config.xml

config/frontend/events下创建一个新节点:

<catalog_controller_category_init_after>
    <observers>
        <redirectSingleProduct>
            <class>My_MyExtension_Model_Observer</class>
            <method>redirectSingleProduct</method>
        </redirectSingleProduct>
    </observers>
</catalog_controller_category_init_after>

Model/Observer.php

创建相应的方法来处理事件:

class My_MyExtension_Model_Observer
{
    /**
     * Check whether a category view only contains one product, if so send the request directly to it.
     * @param Varien_Event_Observer $observer
     * @return $this
     */
    public function redirectSingleProduct(Varien_Event_Observer $observer)
    {
        $category = $observer->getCategory();
        if ($category->getProductCount() == 1) {
            $product = $category->getProductCollection()->addUrlRewrite()->getFirstItem();
            $url = $product->getProductUrl();
            $observer->getControllerAction()->getResponse()->setRedirect($url);
        }
        return $this;
    }
}