具有自己模板的Prestashop自定义页面

时间:2018-09-11 14:53:24

标签: prestashop prestashop-1.7

我正在运行自己的prestashop主题,并希望添加一个没有CSS的新页面。 因此,我添加了三个文件php,controller和template。我将php放置在prestashop的根目录中,将控制器添加到root / controllers / front并将模板放置在root / themes / my-theme中。
如果调用http://localhost/prestashop/?page=custom-page,则会看到索引起始页;如果调用localhost / prestashop / custom-page,则会得到HTTP404。
有人可以帮我显示我的页面吗?

PHP:

<?php
  include(dirname(__FILE__).'/config/config.inc.php');
  Tools::displayFileAsDeprecated();

  include(dirname(__FILE__).'/header.php');

  $smarty->display(_PS_THEME_DIR_.'custom-page.tpl');

  include(dirname(__FILE__).'/footer.php');

控制器:

public function init(){
  parent::init();
}

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


//public function setMedia(){
  //parent::setMedia();
  //$this->addCSS(_THEME_CSS_DIR_.'custom-page.css');
  //$this->addJS(_THEME_JS_DIR_.'custom-page.js');
//}

}

模板:

<div>
 HELLO PAGE
</div>

{literal}
  <style type="text/css">
  </style>
{/literal}

<script type="text/javascript">
  {literal}
  {/literal}
</script>

1 个答案:

答案 0 :(得分:3)

对于PS 1.7,请按照以下步骤创建新页面:

创建控制器/controllers/front/MyPageController.php

<?php

class MyPageControllerCore extends FrontController
{
    public $php_self = 'mypage';
    public $ssl = true;

    public function initContent()
    {
        parent::initContent();

        $this->setTemplate('mypage');
    }
}

在主题中创建tpl文件/themes/YOUR_THEME/templates/mypage.tpl

{extends file='page.tpl'}

{block name='page_header_container'}{/block}

{block name='page_content'}
  PAGE CONTENT HERE
{/block}

删除班级索引文件/var/cache/dev/class_index.php/var/cache/prod/class_index.php

如何访问http://your-site.com/index.php?controller=mypage

最后
如果要处理此页面的友好URL,只需将页面添加到Shop Parameters > Traffic & SEO