我为Prestashop创建了一个模块,它将根据参数(&id = X)中的给定ID显示内容.
我想为这个模块设置一个不错的网址.
使用SEO和URLS,我发现它是可能的,但它会在URL中保留?id = X.
例如,如果我将我的模块的URL定义为
/pretty-module
Run Code Online (Sandbox Code Playgroud)
我将拥有相同的链接,但具有不同的ID:
/pretty-module?id=1
/pretty-module?id=23
Run Code Online (Sandbox Code Playgroud)
我想做的是以下内容:
/pretty-module => will set id to 1
/even-prettier-module => will set id to 23
Run Code Online (Sandbox Code Playgroud)
我没有在Backoffice的SEO和URLS页面中看到"参数"选项,所以我想知道是否可以这样做.
你需要挂钩到moduleRoutes,
1)在你的模块安装方法中:
if (!parent::install()
|| !$this->registerHook('moduleRoutes')
|| !$this->registerHook('displayFooter'))
return false;
Run Code Online (Sandbox Code Playgroud)
2)创建相应的钩子
public function hookmoduleRoutes($params) {
$routes = array();
$routes['module-examplemodule-handler'] = array(
'controller'=>'handler',
'rule'=>'promo{/:code}',
'keywords'=>array(
'code'=>array(
'regexp'=>'[\w]+',
'param'=>'short_code'
)
),
'params'=>array(
'fc'=>'module',
'module'=>'examplemodule',
'controller'=>'handler'
)
);
return $routes;
}
Run Code Online (Sandbox Code Playgroud)
模块可能有多条路线.大会是模块 - [MODULE_NAME] - [MODULE_CONTROLLER_NAME]
数组说明:
controller - handler(modules/examplemodule/controllers/front/handler.php)
规则 - 花括号是params ..你可以从http://example.com/admin/index.php?controller=AdminMeta获得一个想法
关键字 - 在此处配置规则中定义的参数(花括号).
用法示例:http://example.com/promo/ADSGD
在控制器'处理程序'中:
$short_code = Tools::getValue('short_code');
Run Code Online (Sandbox Code Playgroud)
在prestashop 1.6上测试
参考:https://books.google.co.il/books?id = BBsBAAQBAJ&pt = PT134&lpg = PT134&dq = prestashop + module = Routes + hook&source = bl> = JCb_4oz6el&sig = JwoQfIsOnJ49VJ752fEb01ivMZ8&hl = zh-CN&X&ei = vH0QVePiDoXPaNSxgrAP&ed = 0CEIQ6AEwBA #v = onepage&q =的Prestashop%20module%20Routes%20hook&F =假
| 归档时间: |
|
| 查看次数: |
2550 次 |
| 最近记录: |