Back to Top

Implement Twig In Opencart

Updated 17 March 2016

Here, we will learn how to integrate twig templating engine with the Opencart. First of all, we have to download the composer installer in the root of our Opencart using the command:

curl -s http://getcomposer.org/installer | php

Then, we have to create a composer.json file in the root and put the following lines into it:

{
    "require": {
        "twig/twig": "1.*"
    }
}

After pasting the above lines, we have to install the dependencies using the command:

php composer.phar install

It will create a vendor folder by default in which the twig packages will be stored. To make an access to these files, I have added these lines of codes in the index.php file in the root as I have created another folder named views in the catalog folder.

// Twig
require_once 'vendor/autoload.php'; 

$twigLoader = new Twig_Loader_Filesystem('catalog/views/theme/default/template'); 

$twig = new Twig_Environment($twigLoader);

It is not advisable to perform modifications to the index.php file. Instead, you can copy the code in system/engine/front.php

Searching for an experienced
Opencart Company ?
Find out More

Working with the twig is very simple. I have made changes in the account file. I just replace a few line at the end of the controller. So, here’s the replaced controller code:

if ($this->config->get('config_template') != 'default' && file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/account/account.tpl')) {
	$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/account/account.tpl', $data));
} else {
	echo $this->twig->render('account/account.html', $data);
}

I have created a twig file named account.html in the location catalog/views/theme/default/template/account and here the code of twig file:

{{ header | raw }}
<div class="container">
  <ul class="breadcrumb">
    {% for breadcrumb in breadcrumbs  %}
    <li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text | raw }}</a></li>
    {% endfor %}
  </ul>
  {% if success %}
  <div class="alert alert-success"><i class="fa fa-check-circle"></i> {{ success }}</div>
  {% endif %}
  <div class="row">{{ column_left | raw }}
    {% if column_left and column_right %}
    {% set class = 'col-sm-6' %}
    {% elseif column_left or column_right %}
    {% set class = 'col-sm-9' %}
    {% else %}
    {% set class = 'col-sm-12' %}
    {% endif %}
    <div id="content" class="{{ class }}">{{ content_top }}
      <h2>{{ text_my_account }}</h2>
      <ul class="list-unstyled">
        <li><a href="{{ edit }}">{{ text_edit }}</a></li>
        <li><a href="{{ password }}">{{ text_password }}</a></li>
        <li><a href="{{ address }}">{{ text_address }}</a></li>
        <li><a href="{{ wishlist }}">{{ text_wishlist }}</a></li>
      </ul>
      {% if credit_cards %}
      <h2>{{ text_credit_card }}</h2>
      <ul class="list-unstyled">
        {% for credit_card in credit_cards %}
        <li><a href="{{ credit_card.href }}">{{ credit_card.name }}</a></li>
        {% endfor %}
      </ul>
      {% endif %}
      <h2>{{ text_my_orders }}</h2>
      <ul class="list-unstyled">
        <li><a href="{{ order }}">{{ text_order }}</a></li>
        <li><a href="{{ download }}">{{ text_download }}</a></li>
       {% if reward %}
        <li><a href="{{ reward }}">{{ text_reward }}</a></li>
        {% endif %}
        <li><a href="{{ return }}">{{ text_return }}</a></li>
        <li><a href="{{ transaction }}">{{ text_transaction }}</a></li>
        <li><a href="{{ recurring }}">{{ text_recurring }}</a></li>
      </ul>
      <h2>{{ text_my_newsletter }}</h2>
      <ul class="list-unstyled">
        <li><a href="{{ newsletter }}">{{ text_newsletter }}</a></li>
      </ul>
      {{ content_bottom | raw }}</div>
    {{ column_right | raw }}
  </div>
</div>
{{ footer | raw }} 

For a thorough knowledge of the twig, please do visit Twig Documentation.

. . .

Leave a Comment

Your email address will not be published. Required fields are marked*


Be the first to comment.

Back to Top

Message Sent!

If you have more details or questions, you can reply to the received confirmation email.

Back to Home