我目前正在开发一个自定义模块。我想要的是有一个漂亮的URL,因为现在它看起来像这样:
domain.com/flower-deliveries?city=Hamburg&id_country=1&country=Germany
我已经添加了一个新的页面链接到自定义模块,页面名称是花交付,但我仍然有参数,我必须"隐藏"。
而不是上面的链接,我想这样的URL:
domain.com/flower-deliveries-1-Hamburg-Germany.html
我试了两种方法,但都不管用。
第一个,是添加一个hookModuleRoutes在我的控制器,就像下面:
public function hookModuleRoutes($params)
{
return array(
'module-vpages-dpage' => array(
'controller' => 'dpage',
'rule' => 'flower-deliveries{-:id_country}{-:country}{-:city}.html',
'keywords' => array(
'id_country' => array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'id_country'),
'city' => array('regexp' => '[\w]+', 'param' => 'city'),
'country' => array('regexp' => '[\w]+', 'param' => 'country')
),
'params' => array(
'fc' => 'module',
'module' => 'vpages',
'controller' => 'dpage'
)
)
);
}
然后,在控制器中安装:
$this->registerHook('moduleRoutes');
这不起作用,所以我尝试通过添加一个自定义模块路由来覆盖Dispatcher类:
'module-vpages-dpage' => array(
'controller' => 'dpage',
'rule' => 'flower-deliveries{-:id_country}{-:country}{-:city}.html',
'keywords' => array(
'id_country' => array('regexp' => '[0-9]+', 'param' => 'id_country'),
'city' => array('regexp' => '[\w]+', 'param' => 'city'),
'country' => array('regexp' => '[\w]+', 'param' => 'country'),
),
'params' => array(
'fc' => 'module',
'module' => 'vpages',
'controller' => 'dpage'
)
),
当使用自定义规则时,链接http://domain.com/flower-deliveries?city=Hamburg&id_country=1&country=Germany
被转换为http://domain.com/flower-deliveries?module_action=list
,它不起作用,并将我重定向到第一页。
有人能告诉我我做错了什么吗?我花了几个小时阅读它应该如何做,它应该就像上面的一样。
谢谢大家!
1条答案
按热度按时间okxuctiv1#
还原您所做的所有编辑:)。
请尝试以下方法:
例如,这是核心模块文件
rootofps/modules/vpages/vpages.php
现在控制器
rootofps/modules/vpages/controllers/front/dpage.php
现在是视图
rootofps/modules/vpages/views/templates/front/dpage.tpl
这个" backbone "工作在100%:),顺便说一句,请注意,如果你给一个像这样的网址
mydomain.com/flower-deliveries?id_country=1&country=italy&city=rome
PrestaShop将不会转换你的网址在一个明确的网址,因为你想要的.但像这样的网址mydomain.com/flower-deliveries-2-italy-rome.html
将是正确的路线:)