在Magento中更改路由器

时间:2011-09-06 11:22:33

标签: magento

我有如下链接:

index.php/catalog/product/offer/id/1/cid/100/
  • id param表示产品ID

  • cid param表示客户的ID

现在,如果我想更改此链接,请如何与路由器匹配:

index.php/offer/id/1/cid/100/

我该怎么做?

1 个答案:

答案 0 :(得分:6)

如果您有一组有限的ID值,则可以创建相同数量的rewrite rules like this。我们的想法是将每个可能的URL映射(即一对一)到缩短的形式。


但是,由于客户数量无法控制,因此如in the Magento Wiki所述使用旧版XML重写可能更好。

<config>
    ...
    <global>
        <rewrite>
            <vietean_catalog_product_offer>
                <from><![CDATA[#^offer/#]]></from>
                <to>catalog/product/offer/</to>
            </vietean_catalog_product_offer>
        </rewrite>
    </global>
</config>

如果这不起作用,第三个选项是形成index.php/offer?id=1&cid=100之类的网址,这个网址并不漂亮。然后,该网址将转换为offer/index/index。为现有路由器指定前缀名offer,为控制器IndexController命名,并为操作indexAction命名。

<config>
    ...
    <frontend>
        <routers>
            <vietean_example> <!-- This tag can be any unique value -->
                <use>standard</use> <!-- standard because it's the frontend -->
                <args>
                    <module>Vietean_Example</module>
                    <frontName>offer</frontName> <!-- First part of URLs -->
                </args>
            </vietean_example>
        </routers>
    </frontend>
</config>

控制器可以以与以前完全相同的方式访问URL参数;

$id = $this->getRequest()->get('id');
$cid = $this->getRequest()->get('cid');