Magento - 自定义模块URL

时间:2013-09-09 13:56:08

标签: magento url-rewriting module

我有一个更改模块网址的请求。

例如,假设网址是www.example.com/world

我需要网址为www.example.com/hello/world

我知道在模块config xml中你可以将节点更改为你喜欢的任何节点(前提是它是唯一的)但不允许prepend / hello /

 <frontend>
    <routers>
        <anexample>
            <use>standard</use>
            <args>
                <module>An_Example</module>
                <frontName>hello/world</frontName>
            </args>
        </anexample>
    </routers>
 </frontend>

有谁知道如何做到这一点?一些示例代码甚至是正确方向上的一点都将受到赞赏!

很抱歉,如果这还不够详细,我很乐意在需要时发布更多代码。

提前致谢。

5 个答案:

答案 0 :(得分:3)

您可以将重写添加到Magento的URL Rewrite Manager中。 Haven未对代码进行测试。但希望它有所帮助。

Mage::getModel('core/url_rewrite')
->setIsSystem(0)
->setStoreId($storeId)   
->setOptions('RP')  
->setIdPath('index.php?cat=c' . $categoryId . '_' . $this->strip($data['name']) . '.html')
->setTargetPath($categoryModel->getUrlPath() . '.html')// Put the actual path
->setRequestPath('index.php?cat=c' . $categoryId . '_' . $this->strip($data['name']) . '.html') // put the path you want to display
->save();

答案 1 :(得分:0)

请参阅Allan Storm关于Magento重写的以下文章

http://alanstorm.com/magento_dispatch_rewrites_intro

答案 2 :(得分:0)

在这里,我可以给你一个想法,以达到你的解决方案,它一定会帮助你

<?xml version="1.0"?>
<config>
  <global>
   <rewrite>
      <some_unique_name_to_identify_this_rewrite>
        <from><![CDATA[#^/from_this/#]]></from>
        <to>/to_this/</to>
      </some_unique_name_to_identify_this_rewrite>
   </rewrite>
</global>
</config>

如果您想使用管理功能进行网址重写,您可以抛出this link

您想要实现的目标也可以使用Custom Url Rewrite完成。例如:

request path: hello/world

target path: 'world'

通过这种方式,你可以让系统改写你的起点。

希望这一定会帮到你

答案 3 :(得分:0)

最后这很简单。而不是为它创建重写的麻烦我只是将我的名字改为'你好'然后创建了一个名为'worldController'的控制器

然后在我的indexController中,我只是将重定向放到* / world

答案 4 :(得分:0)

访问自定义模块控制器路径作为自定义HTML网址链接

http://domain.com/index.php/customwallpaper/index/create/

将重写为

http://domain.com/index.php/fotomural-personalizado.html

core_url_rewrite 表格中插入以下数据,以便重写网址

Mage::getModel('core/url_rewrite')
    ->setStoreId(1)   
    ->setIdPath('customwallpaper')
    ->setRequestPath('fotomural-personalizado.html')
    ->setTargetPath('customwallpaper/index/create') // Put the actual Controller path
    ->setIsSystem(1)
    ->save();

-OR -

在sql查询下运行

INSERT INTO `core_url_rewrite` 
(`url_rewrite_id`, `store_id`, `id_path`, `request_path`, `target_path`, `is_system`, `options`, `description`, `category_id`, `product_id`) 
VALUES ('7', '1', 'customwallpaper', 'fotomural-personalizado.html', 'customwallpaper/index/create', '1', NULL, NULL, NULL, NULL);