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

时间:2015-12-03 23:44:08

标签: php prestashop-1.6

我已经遵循了许多教程,但它们要么含糊不清,要么无法正常工作,或者他们希望您使用可怕的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

  3. 然后我使用:localhost/index.php?controller=programs或使用SEO和链接构建器创建localhost/programs链接,我收到错误: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

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

1 个答案:

答案 0 :(得分:0)

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

你必须在prestashop的modules文件夹中创建一个新文件夹,如

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

然后在该文件中,您必须将您的主题文件设为

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

现在渲染你的文件。我希望它会起作用。