prestashop-1.6 - prestashop 类别/子类别使 cms 404 错误
问题描述
我在本地环境中使用prestashop,然后建立商店,我出现的问题如下。
购买模块以删除 URL 的 ID:Module Pretty URLs和完美的工作。
然后我想显示类别父类别的子类别的 URL,例如:example.com/women/jeans
使用以下代码实现它,修改文件 override/classes/dispatcher.php
'category_rule' => array(
'controller' => 'category',
'rule' => 'categories:/}{rewrite}',
'keywords' => array(
'id' => array('regexp' => '[0-9]+'),
'rewrite' => array('regexp' => '[_a-zA-Z0-9-\pL]*', 'param' => 'category_rewrite'),
'categories' => array('regexp' => '[_a-zA-Z0-9-\pL]*'),
'meta_keywords' => array('regexp' => '[_a-zA-Z0-9-\pL]*'),
'meta_title' => array('regexp' => '[_a-zA-Z0-9-\pL]*'),
),
),
在 Prestashop 管理员中添加{categories:/}{rewrite}
类别的 SEO/URL。
文件覆盖/类/Link.php
public function getCategoryLink($category, $alias = null, $id_lang = null, $selected_filters = null, $id_shop = null, $relative_protocol = false)
{
if (!$id_lang) {
$id_lang = Context::getContext()->language->id;
}
$url = $this->getBaseLink($id_shop, null, $relative_protocol).$this->getLangLink($id_lang, null, $id_shop);
if (!is_object($category)) {
$category = new Category($category, $id_lang);
}
$params = array();
$params['id'] = $category->id;
$params['rewrite'] = (!$alias) ? $category->link_rewrite : $alias;
$params['meta_keywords'] = @Tools::str2url($category->meta_keywords);
$params['meta_title'] = @Tools::str2url($category->meta_title);
$selected_filters = is_null($selected_filters) ? '' : $selected_filters;
if (empty($selected_filters)) {
$rule = 'category_rule';
} else {
$rule = 'layered_rule';
$params['selected_filters'] = $selected_filters;
}
$cats = array();
foreach ($category->getParentsCategories() as $cat){
if (!in_array($cat['id_category'], array(1, 2, $category->id)))//remove root, home and current category from the URL
{
$cats[] = $cat['link_rewrite'];
$params['categories'] = implode('/', array_reverse($cats));
}
}
$r_url = $url.Dispatcher::getInstance()->createUrl($rule, $id_lang, $params, $this->allow, '', $id_shop);
return $r_url;
}
但要做到这一点,CMS 的所有页面都会给我一个 404,不是这样的。
解决方案
推荐阅读
- angular - 我可以在 Angular 6 中使用组件的属性作为方法的参数吗?
- machine-learning - 使用 NEAT 算法,两个基因组的孩子是否总是与最合适的父母具有相同的结构?
- python - 如何修复“RuntimeError:迭代期间字典更改大小”,同时编辑一些图形数据
- python - Why does the call to "params=payload" work in SurveyMonkey API documentation, but not in my code?
- android - 如何将按钮背景颜色重置为默认灰色?
- tsql - TSQL:当您可能发送或不发送参数时如何处理 WHERE 子句
- yii2 - 如何在 Yii2 html::dropddownlist 上保留选定的值?
- java - SQLite 分隔两个随机数
- wix - 从源目录 WiX 安装每个文件
- ember.js - Ember 项目中的数据表