Prestashop,如何为JS,CSS,PHP创建一个新的非CMS页面

时间:2015-07-27 11:39:59

标签: php prestashop

Prestashop V1.6

您好,

我需要创建一个新的非cms表单页面,其中包含一些逻辑,JS,CSS和PHP。

此页面将提交一个PHP脚本,该脚本将执行一些逻辑并重定向回此页面。

如果可能的话,在这个表单页面中包含PHP会很好,但如果没有,我需要在FormPageController中包含PHP并使用模板文件等。

除了正文,包括表单外,页面需要看起来像商店,所以它需要包含页眉和页脚。

我尝试使用CMS页面,但它在允许的范围内限制太多。

我还设置了一个根文件:form-page.php

<?php
  include(dirname(__FILE__).'/config/config.inc.php');
  Tools::displayFileAsDeprecated();
  include(dirname(__FILE__).'/header.php');
  $smarty->display(_PS_THEME_DIR_.'form-page.tpl');
  include(dirname(__FILE__).'/footer.php');

控制器:FormPage.php

<?php
class FormPageControllerCore extends FrontController
{
    public function init(){
      parent::init();
    }
    public function setMedia()
    {
        parent::setMedia();
        $this->addCSS(_THEME_CSS_DIR_.'form-page.css');
        $this->addJS(_THEME_JS_DIR_.'form-page.js');
        $this->addJS(_PS_JS_DIR_.'validate.js');
    }

    public function initContent()
    {
        parent::initContent();
    }
}
?>

模板文件:form-page.tpl

<div>
  <!-- HTML -->
</div>
{literal}
  <style type="text/css">
  </style>
{/literal}

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

并在Admin-&gt;偏好设置&gt; SEO页面

中关联该页面

结果我只回到完全黑色的页面。

要完成此任务,我还需要添加其他文件吗?

使这项工作的每个必需文件的最小骨架是什么?

我还能在哪里出错?

谢谢

1 个答案:

答案 0 :(得分:1)

1)在PS root中创建一个php文件:formpage.php(例如)

include(dirname(__FILE__).'/config/config.inc.php');
Tools::displayFileAsDeprecated();
include(dirname(__FILE__).'/header.php');
$smarty->display(_PS_THEME_DIR_.'formpage.tpl');
include(dirname(__FILE__).'/footer.php');

2)创建一个新控制器:root / controllers / front / FormpageController.php

class FormpageController extends FrontController{

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

        public function setMedia()
    {
        parent::setMedia();   
        $this->addJS(_THEME_JS_DIR_.'formpage.js');  
    }


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

3)在主题文件夹中创建一个新的.tpl文件 您的内容

所以在你的例子中我认为你的控制器文件名不好?

毕竟删除缓存 - &gt; class_index.php文件