1

我想为我们的 Magento 购物篮实现自定义 URL。Magento 开箱即用的 url paht 是 /checkout/cart 但客户端请求 /checkout/bag。

我试图以某种方式 * URL 在后端重写管理 - 它有效,但我需要将代码中的所有出现更新为新 url,因为 $this->getUrl('checkout/cart') 不会转换为结帐/袋 * 我也试过遵循http://alanstorm.com/magento_dispatch_rewrites_intro的一些建议,但基本上它也对我没有帮助。* 我也尝试了这篇文章中的示例http://phprelated.myworks.ro/two-add-to-cart-buttons-with-different-redirect-actions-at-once-in-magnto/

那么,有什么方法可以在不更新我们的模板和类 $this->getUrl('checkout/cart')

任何依赖于 Web 服务器架构的解决方案都不是最终的解决方案。

4

5 回答 5

6

我找到了解决方案

1)我重写了模型core/url以获得所需的输出

编辑 1 - 示例实现https://gist.github.com/jaromirmuller/132cdd9378e5b1018170

2) 将 url 重写添加到 config.xml 中,它将 url 路径从 /checkout/bag 重写为 /checkout/cart

    <global>
      <rewrite>
        <mynamespace_mymodule_checkout_cart>
            <from><![CDATA[#^/checkout/bag#]]></from>
            <to>/checkout/cart</to>
        </mynamespace_mymodule_checkout_cart>
         </rewrite>
    </global>

3) 将 url 重写添加到目录 > URL 重写管理中,如果有人来到 /checkout/cart 然后他会被重定向到 /checkout/bag paht,这是正确的。

这 3 点使网站保持一致并且可以正常工作。这是无需重写大量模板和类的简单方法。

于 2012-10-09T19:42:47.043 回答
0

此答案适用于通过更改 app/etc/local.xml 中的前端路由器来更改愿望清单名称。也许它可以适应您的用途?

在magento中更改愿望清单网址

于 2012-10-17T02:31:45.870 回答
0

Url Rewrites的工作方式意味着您test.com/some在页面上有一些 url,当您单击它时,您会得到test.com/some2。因此,重写不会更改实际的锚链接——它们会将该链接的目的地更改为新的接收者。

没有简单的解决方案可以将所有锚链接更改为新链接(除了解析和替换每个页面上的链接 - 这是不可取的)。

因此,如果您想保留锚链接并在用户单击链接后获取新的 Url,您应该使用Url Rewrites。虽然如果您想更改页面上的实际链接,您需要搜索所有出现并手动更改它们。

Mage::getUrl()不是使用别名(如Mage::getModel())操作的结构 - 您将从中获得您插入的内容,更改结果 Url 的唯一方法是更改​​收入参数。

于 2012-10-04T10:21:47.440 回答
0

管理更多 url 翻译您可以使用此模块: http: //www.magentocommerce.com/magento-connect/catalog/product/view/id/18160/

于 2013-06-20T08:53:51.293 回答
0

您可以使用 apache url rewrites 来做到这一点。就像是

RewriteRule ^/checkout/cart(.*)$ /checkout/bag$1 [R=301,NC,L]
于 2012-10-06T10:35:02.860 回答