Adi*_*oui 2 webpage updates prestashop prestashop-1.5 prestashop-1.6
版本1.4.1.4的prestashop网站正在处理category.php类别页面的文件.对1.6.0.6 unfortunatley的更新删除了该文件,因为它已被视为已弃用.(CMS更新后URL结构发生了变化)
一个结果是URL结构的变化.
从:
URL/category.php?id_category = 6
至 :
URL /的index.php?id_category = 6&控制器=类别&id_lang = 2
所以现在,第一个URL结构给出了404.
问题:
我们不知道为什么所有的类别页面与新strucure做工精细,除了页面Home(acceuil)类别(全球父类的所有网站类别).home即使使用新结构,此类别页面也会给出404.换句话说,以下网址无效:
URL /的index.php?id_category = 1&控制器=类别&id_lang = 2
如果我没错,Prestashop默认将id = 1给予此home类别?你的观点出了什么问题?任何见解都受到高度赞赏.
根据Prestashop-Developper.co回答编辑
当我在PhpMyAdmin中检查我的数据库时:
从1.4.1.4更新到1.6.0.6之后:
我既没有找到id = 0的类别,也没有找到id = 2的类别.我只找到id = 1的类别Home和id = 104的类别Root.Root是Home的父级,但Home的字段is_root_category设置为1 !!!! 我真的不理解任何事情.
在从1.4.1.4更新到1.6.0.6之前:
根本没有Root类别,根本没有任何is_root_category字段.
注意: 这些观察结果基于以下表:ps_category,ps_category_group,ps_category_product,ps_category_shop在updtate之前和之后= 1.4.1.4到1.6.0.6之间.
在PrestaShop 1.6中,Root和Home类别总是返回404(在PS 1.5中只有Root返回404),如果您需要更改Home类别,则必须为CategoryController创建覆盖.
请注意,在PrestaShop 1.4中,您拥有ID为1的"Home",从1.5开始,您拥有id = 1的"Root"和id = 2的"Home".找到主页类别的ID.
使用以下内容在/ override/controllers/front /中创建文件CategoryController.php:
<?php
class CategoryController extends CategoryControllerCore
{
public function canonicalRedirection($canonicalURL = '')
{
if (Tools::getValue('live_edit'))
return ;
if (!Validate::isLoadedObject($this->category) || !$this->category->inShop() || !$this->category->isAssociatedToShop() || $this->category->id == Configuration::get('PS_ROOT_CATEGORY'))
{
$this->redirect_after = '404';
$this->redirect();
}
if (!Tools::getValue('noredirect') && Validate::isLoadedObject($this->category))
FrontController::canonicalRedirection($this->context->link->getCategoryLink($this->category));
}
}
Run Code Online (Sandbox Code Playgroud)
确保在创建上述文件后删除/cache/class_index.php.
| 归档时间: |
|
| 查看次数: |
8228 次 |
| 最近记录: |