我需要将PrestaShop中浏览器中的地址从“ csblog / post ”缩短为“ blog ”。客户正在使用博客插件“ CS Blog”,它会生成链接和地址。
csblog 是模块, 发布 是控制器。
地址计划为/ csblog / post / friendly-name
已经尝试更改插件文件中的链接和地址方案,并找到它的确切位置,但是在更改模块和控制器后-它崩溃了。它找不到帖子,也没有页面错误显示。
已经尝试在主应用程序(模块的文件夹和主文件夹中)中使用各种.htaccess重写语句。没有效果。 互联网上没有任何帮助,因为此插件似乎不太受欢迎。
这是我当前在.htaccess中的代码:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ csblog/post/([^&\]+)
RewriteRule ^blog/%1? [L]
该短地址,该如何使用.htaccess或仅通过插件进行管理?
生成链接的功能:
{
if (!$id_lang)
$id_lang = Context::getContext()->language->id;
$id_shop = Context::getContext()->shop->id;
$url = Context::getContext()->link->getBaseLink($id_shop).$this->getLangLink($id_lang, null, $id_shop);
$params['module'] = $module;
$params['controller'] = $controller ? $controller : 'default';
$dispatcher = Dispatcher::getInstance();
$dispatcher->addRoute('cs_blog_post', '{module}{/:controller}/{id_cs_blog_post}-{category_parent}-{rewrite}.html', null, 1, array(//{module}{/:controller}
'module' => array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'module'),
'controller' => array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'controller'),
'category_parent' => array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'category_parent'),
'id_cs_blog_post' => array('regexp' => '[0-9]+', 'param' => 'id_cs_blog_post'),
'rewrite' => array('regexp' => '[_a-zA-Z0-9-\pL]*'),
), array('fc' => 'module',));
// If the module has its own route ... just use it !
if ($dispatcher->hasRoute('module-'.$module.'-'.$controller, $id_lang))
return Context::getContext()->link->getPageLink('module-'.$module.'-'.$controller, $ssl, $id_lang, $params);
else
return $url.$dispatcher->createUrl('cs_blog_post', $id_lang, $params);
}
生成博客帖子地址的功能:
public function hookModuleRoutes($params){
'cs_blog_post' => array(
'controller' => null,
'rule' => '{module}{/:controller}/{id_cs_blog_post}-{category_parent}-{rewrite}.html',
'keywords' => array(
'module' => array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'module'),
'controller' => array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'controller'),
'category_parent' => array('regexp' => '[_a-zA-Z0-9_-]+', 'param' => 'category_parent'),
'id_cs_blog_post' => array('regexp' => '[0-9]+', 'param' => 'id_cs_blog_post'),
'rewrite' => array('regexp' => '[_a-zA-Z0-9-\pL]*'),
),
'params' => array(
'fc' => 'module',
),
),
}
答案 0 :(得分:0)
您可能要检查this expression,以确保这是否是您要执行的重定向。然后,您要在htaccess文件上添加RewriteRul。也许与此类似的东西会起作用:
varargout
每次更改htaccess时,您可能希望清除浏览历史记录并对其进行测试以查看其是否有效。
答案 1 :(得分:0)
路由位于模块的主文件上。
在文件上找到函数hookModuleRoutes(可能是csblog.php)。 然后您可以更改路线