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



我想在导航栏上添加一个可以直接链接到特定产品的静态链接。

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

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

对于"URL 重写"

,它有效,但是一旦我在类别中更新了某些内容(例如移动位置),系统会生成一个新的"URL 重写"并删除我的自定义内容。

对于"静态块",我不知道该放入什么代码。我的猜测是添加下面的代码,但它不起作用。

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

我该如何完成它?提前谢谢。

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

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

等等/配置.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>

模型/观察者.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;
    }
}

相关内容

  • 没有找到相关文章

最新更新