OpenCart的自定义模板

时间:2014-11-18 12:54:21

标签: php opencart

我正在为我的第一个OpenCart网站逐步构建自定义主题,但是我无法使用自定义模板。我有一些额外的代码,我将构建到一个模板,然后链接到一个特定的页面。这就是我想要实现的目标:

  1. 在“目录/信息”下创建一个名为“计算器”的新页面。
  2. 为该页面创建一个自定义的php / tpl模板,其中包含一些自定义的javascript和php代码。
  3. 将两者链接在一起,这样当我访问前端的“计算器”页面时,我会看到页面顶部的介绍文本(通过CMS添加),然后是底部的自定义JavaScript的结果
  4. 任何人都知道如何做到这一点?我已经进入了模板文件和管理员的“设计/布局”部分并完成了看似合乎逻辑的事情,但它仍然无效。

1 个答案:

答案 0 :(得分:0)

您可以通过管理员>创建信息页面目录>信息。但是,您将无法包含任何PHP。

要创建新模板,您需要向项目中添加一些文件。 OpenCart基于MVC架构。如果您不熟悉MVC,请访问此页面。

http://docs.opencart.com/introduction-to-mvc-l

控制器:

创建一个名为calculator.php的文件,并将其添加到目录>控制器>信息。然后添加以下内容。

<?php
class ControllerInformationCalculator extends Controller {
   private $error = array();

     public function index() {
      $this->language->load('information/calculator'); //Optional. This calls for your language file

       $this->document->setTitle($this->language->get('heading_title')); //Optional. Set the title of your web page.

         $this->data['breadcrumbs'] = array();

         $this->data['breadcrumbs'][] = array(
           'text'      => $this->language->get('text_home'),
         'href'      => $this->url->link('common/home'),           
           'separator' => false
         );

         $this->data['breadcrumbs'][] = array(
           'text'      => $this->language->get('heading_title'),
         'href'      => $this->url->link('information/calculator'),
           'separator' => $this->language->get('text_separator')
         );   

       $this->data['heading_title'] = $this->language->get('heading_title'); //Get "heading title" from language file.

      if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/information/calculator.tpl')) { 
         $this->template = $this->config->get('config_template') . '/template/information/calculator.tpl'; // If the template exists get it
      } else {
         $this->template = $this->config->get('config_template') . '/template/error/not-found.tpl'; //Shows an error if template not found
      }

      $this->children = array(
         'common/column_left',
         'common/column_right',
         'common/content_top',
         'common/content_bottom',
         'common/footer',
         'common/header'
      ); //Required. The children files for the page.

      $this->response->setOutput($this->render());      
     }
}
?>

模板: 创建一个名为calculator.tpl的文件,并将其添加到目录&gt;视图&gt;主题&gt; (您的主题目录)&gt;模板&gt;信息

将以下内容添加到模板文件中:

<?php echo $header; ?><?php echo $column_left; ?><?php echo $column_right; ?>
<div id="content"><?php echo $content_top; ?>
  <div class="breadcrumb">
    <?php foreach ($breadcrumbs as $breadcrumb) { ?>
    <?php echo $breadcrumb['separator']; ?><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a>
    <?php } ?>
  </div>
  <h1><?php echo $heading_title; ?></h1>

  ADD YOUR CONTENT HERE

   <?php echo $content_bottom; ?></div>
<?php echo $footer; ?>

语言: 创建一个名为calculator.php的文件,并将其添加到目录&gt;语言&gt;英语&gt;信息。将以下内容添加到此文件中:

<?php
// Heading
$_['heading_title']  = 'Calculator';
?>

您可以根据需要添加任意数量的语言变量,但请记住您还需要在控制器中添加它们。例如:

在语言文件中:

$_['example']  = 'Example Text';

在控制器中:

$this->data['example'] = $this->language->get('example');

如果您需要调用数据库,还需要一个类似于以下示例的模型。创建一个名为calculator.php的文件并添加到目录&gt; &model;模块。

<?php
class ModelModuleCalculator extends Model {
    public function example() {

    }
?>

您还需要在调用之前加载模型。在调用之前将此行添加到控制器中。

$this->load->model('module/calculator');

示例模型调用(也在控制器中):

$this->model_module_calculator->example();