如何在 Prestashop 中创建自定义页面?

How do you create a custom page in Presta Shop?

我遵循了很多教程,但它们要么含糊不清,要么不起作用,或者它们希望您使用可怕的 CMS 块模块,该模块使您对页面的自定义元素的控制有限。

到目前为止:

  1. 我创建了一个名为 ProgramsController.php 的控制器并将其放入 ps_root/controllers/front

    class ProgramsControllerCore extends FrontController
    {
        public $php_self = 'programs';
        public function init()
        {
            parent::init();
        }
    
        public function initContent()
        {
            parent::initContent();
            $this->setTemplate(_PS_THEME_DIR_.'programs.tpl');
        }
    }
    
  2. 我创建了一个名为 programs.tpl 的模板并将其放入 ps_root/themes/mytheme/ folder

然后我使用:localhost/index.php?controller=programs 或者我使用 SEO 和 links 生成器来创建 localhost/programs link,我得到一个错误:Fatal error: Class 'ProgramsController' not found in ...\classes\controller\Controller.php on line 135

但是不对,路径应该是../controllers/front路径,为什么会在../classes/controller中查找?我从所有教程中假设调度员应该知道将我的前端控制器挂接到正确的模板。为什么这不起作用?

基本问题: 在 PrestaShop 1.6 中,我只想知道如何创建自定义页面,例如:http://myshop.com/mycustompage

但它也利用了现有的页眉和页脚。

要创建新的自定义页面,您必须执行以下步骤:

您必须在 prestashop 的模块文件夹中创建一个新文件夹,例如

C:\wamp\www\prestashop\modules\your_module_name

然后将控制器文件放入模块文件夹中,如:

C:\wamp\www\prestashop\modules\your_module_name\controller\front\your_file.php

你的代码如下:

class ProgramsControllerCore extends FrontController
{
    public $php_self = 'programs';
    public function init()
    {
        parent::init();
    }

    public function initContent()
    {
        parent::initContent();
        $this->setTemplate(_PS_THEME_DIR_.'programs.tpl');
    }
}

然后您在模块中创建一个新的文件夹视图,例如:

C:\wamp\www\prestashop\modules\your_module_name\views

然后在其中创建另一个名为 template 的文件夹,并在其中创建另一个名为 front 的文件夹,例如:

C:\wamp\www\prestashop\modules\your_module_name\views\templates

C:\wamp\www\prestashop\modules\your_module_name\views\templates\front

然后在那个文件中你必须把你的主题文件 Like

C:\wamp\www\prestashop\modules\your_module_name\views\templates\front\programs.tpl

现在渲染你的文件。希望有用。