在 prestashop 中为 CMS 页面创建新模板

Create new template for CMS pages in prestashop

我在“首选项”->“CMS”下创建了几个页面,这些都可以。现在我需要创建更多具有不同外观的页面,有没有办法添加不同的模板并使用相同的 CMS 界面来完成它?。 我在想类似的东西:

步骤 1. 创建新的 cms-2.tpl 第二步,修改数据库,增加一个新的"template"字段 Step 3. 修改后台在CMS页面增加一个额外的字段来选择要与CMS页面一起使用的模板

到目前为止,我一直在阅读有关 "Creating pages without CMS" 的文章,例如 link:Custom page in Prestashop 1.6 without CMS or this other link: Create custom page in Prestashop 1.5.3,但其中 none 似乎正是我要找的。

谢谢

这适用于 Prestashop 16.0.14:

/controllers/front/CmsController.php复制到/override/controllers/front/CmsController.php,找到class的最后一个方法,即initContent()

最后一行是$this->setTemplate(_PS_THEME_DIR_.'cms.tpl');。 将其更改为:

if(is_file(_PS_THEME_DIR_.'cms-'.$this->cms->id.'.tpl')){
    $this->setTemplate(_PS_THEME_DIR_.'cms-'.$this->cms->id.'.tpl');
}
else{
    $this->setTemplate(_PS_THEME_DIR_.'cms.tpl');
}

然后您需要删除文件 /cache/class_index.php 以强制重新创建缓存。

然后您可以像这样在您的主题文件夹中创建文件:cms-2.tpl 其中 2 是您 CMS 页面的 ID(只需复制 cms.tpl 并更改文件名)。 确保将 cms.tpl 作为所有其他 CMS 页面的后备。

prestashop 1.7 更新

您不再需要覆盖 cms 控制器。这个函数默认已经写好了

您只需在 themes/your-theme/templates/cms 文件夹中创建一个 page-ID.tpl。其中 ID 是 cms 页面 ID。