Home Opencart Extensions Display all products opencart module for free version 3.0, 3.0.1.1, 3.0.1.2,3.0.1.3

Display all products opencart module for free version 3.0, 3.0.1.1, 3.0.1.2,3.0.1.3

Steps to install “All Products Show in One Page” opencart 3.0, 3.0.1.1, , 3.0.1.2,, 3.0.1.3 module free:

  • Now login to admin section then go to Extensions >> Extension Installer >> where you upload the allProductsShow.ocmod.zip, if you see any error then see how to solve the ocmod installation error.
  • If you get following error/issues then first solve it
    The directory catalog/controller/product is not allowed to be written to – Opencart error
  • After successful installation, go to Extensions>> Modification and click the log tab and see if some errors are showing, if error shows then you have to solve it first.
  • If no error click the refresh button
    refresh_button_while_installation
  • You are all set.
  • If you have multiple language then you have to translate the catalog/language/en-gb/product/allproduct.php and place into catalog/language/YOURLANGUAGEFOLDER/product
  • Enjoy free module.

Folder structure of display all products free OpenCart module:

Ocmod file (install.xml) of show all product free module:

<?xml version="1.0" encoding="utf-8"?>
<modification>
    <name>All Product Show</name>
    <version>3.0</version>
    <author>Rupak Nepali</author>
    <link>https://webocreation.com</link>
    <code>webocreation_all_products_show</code>
    <description>Show all Products in a Page frontend</description>
    <file path="catalog/view/theme/*/template/common/menu.twig">
        <operation>
            <search><![CDATA[{% for category in categories %}]]></search>
            <add position="before"><![CDATA[
                <li><a href="{{ allproductsurl }}">{{ text_heading_title }}</a></li>
            ]]></add>
        </operation>
    </file>

    <file path="catalog/controller/common/menu.php">
        <operation>
            <search><![CDATA[$data['categories'] = array();]]></search>
            <add position="before"><![CDATA[
                $data['allproductsurl']=$this->url->link('product/allproduct');
                $this->load->language('product/allproduct');
                $data['text_heading_title']=$this->language->get('text_heading_title');
            ]]></add>
        </operation>
    </file>
</modification>

Controller of Show all products free module catalog\controller\product\allproduct.php

<?php
class ControllerProductAllproduct extends Controller {
public function index() {
$this->load->language('product/allproduct');

$this->load->model('catalog/product');

$this->load->model('tool/image');

if (isset($this->request->get['filter'])) {
$filter = $this->request->get['filter'];
} else {
$filter = '';
}

if (isset($this->request->get['sort'])) {
$sort = $this->request->get['sort'];
} else {
$sort = 'p.sort_order';
}

if (isset($this->request->get['order'])) {
$order = $this->request->get['order'];
} else {
$order = 'ASC';
}

if (isset($this->request->get['page'])) {
$page = $this->request->get['page'];
} else {
$page = 1;
}

if (isset($this->request->get['limit'])) {
$limit = (int)$this->request->get['limit'];
} else {
$limit = $this->config->get('theme_' . $this->config->get('config_theme') . '_product_limit');
}

$data['breadcrumbs'] = array();

$data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/home')
);
$this->document->setTitle($this->language->get('text_title'));
$this->document->setDescription($this->language->get('text_description'));
$this->document->setKeywords($this->language->get('text_keywords'));
$data['heading_title'] = $this->language->get('text_heading_title');

$data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));

// Set the last allproduct breadcrumb
$data['breadcrumbs'][] = array(
'text' => 'Show All Products',
'href' => $this->url->link('product/allproduct')
);


$data['compare'] = $this->url->link('product/compare');

$url = '';

if (isset($this->request->get['filter'])) {
$url .= '&filter=' . $this->request->get['filter'];
}

if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}

if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}

if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}

$data['products'] = array();

$filter_data = array(
'filter_filter'      => $filter,
'sort'               => $sort,
'order'              => $order,
'start'              => ($page - 1) * $limit,
'limit'              => $limit
);

$product_total = $this->model_catalog_product->getTotalProducts($filter_data);

$results = $this->model_catalog_product->getProducts($filter_data);

foreach ($results as $result) {
if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height'));
} else {
$image = $this->model_tool_image->resize('placeholder.png', $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_width'), $this->config->get('theme_' . $this->config->get('config_theme') . '_image_product_height'));
}

if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
} else {
$price = false;
}

if ((float)$result['special']) {
$special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
} else {
$special = false;
}

if ($this->config->get('config_tax')) {
$tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']);
} else {
$tax = false;
}

if ($this->config->get('config_review_status')) {
$rating = (int)$result['rating'];
} else {
$rating = false;
}

$data['products'][] = array(
'product_id'  => $result['product_id'],
'thumb'       => $image,
'name'        => $result['name'],
'description' => utf8_substr(trim(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'))), 0, $this->config->get('theme_' . $this->config->get('config_theme') . '_product_description_length')) . '..',
'price'       => $price,
'special'     => $special,
'tax'         => $tax,
'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,
'rating'      => $result['rating'],
'href'        => $this->url->link('product/product', '&product_id=' . $result['product_id'] . $url)
);
}

$url = '';

if (isset($this->request->get['filter'])) {
$url .= '&filter=' . $this->request->get['filter'];
}

if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}

$data['sorts'] = array();

$data['sorts'][] = array(
'text'  => $this->language->get('text_default'),
'value' => 'p.sort_order-ASC',
'href'  => $this->url->link('product/allproduct',  '&sort=p.sort_order&order=ASC' . $url)
);

$data['sorts'][] = array(
'text'  => $this->language->get('text_name_asc'),
'value' => 'pd.name-ASC',
'href'  => $this->url->link('product/allproduct',  '&sort=pd.name&order=ASC' . $url)
);

$data['sorts'][] = array(
'text'  => $this->language->get('text_name_desc'),
'value' => 'pd.name-DESC',
'href'  => $this->url->link('product/allproduct',  '&sort=pd.name&order=DESC' . $url)
);

$data['sorts'][] = array(
'text'  => $this->language->get('text_price_asc'),
'value' => 'p.price-ASC',
'href'  => $this->url->link('product/allproduct',  '&sort=p.price&order=ASC' . $url)
);

$data['sorts'][] = array(
'text'  => $this->language->get('text_price_desc'),
'value' => 'p.price-DESC',
'href'  => $this->url->link('product/allproduct',  '&sort=p.price&order=DESC' . $url)
);

if ($this->config->get('config_review_status')) {
$data['sorts'][] = array(
'text'  => $this->language->get('text_rating_desc'),
'value' => 'rating-DESC',
'href'  => $this->url->link('product/allproduct',  '&sort=rating&order=DESC' . $url)
);

$data['sorts'][] = array(
'text'  => $this->language->get('text_rating_asc'),
'value' => 'rating-ASC',
'href'  => $this->url->link('product/allproduct',  '&sort=rating&order=ASC' . $url)
);
}

$data['sorts'][] = array(
'text'  => $this->language->get('text_model_asc'),
'value' => 'p.model-ASC',
'href'  => $this->url->link('product/allproduct',  '&sort=p.model&order=ASC' . $url)
);

$data['sorts'][] = array(
'text'  => $this->language->get('text_model_desc'),
'value' => 'p.model-DESC',
'href'  => $this->url->link('product/allproduct',  '&sort=p.model&order=DESC' . $url)
);

$url = '';

if (isset($this->request->get['filter'])) {
$url .= '&filter=' . $this->request->get['filter'];
}

if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}

if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}

$data['limits'] = array();

$limits = array_unique(array($this->config->get('theme_' . $this->config->get('config_theme') . '_product_limit'), 25, 50, 75, 100));

sort($limits);

foreach($limits as $value) {
$data['limits'][] = array(
'text'  => $value,
'value' => $value,
'href'  => $this->url->link('product/allproduct',  $url . '&limit=' . $value)
);
}

$url = '';

if (isset($this->request->get['filter'])) {
$url .= '&filter=' . $this->request->get['filter'];
}

if (isset($this->request->get['sort'])) {
$url .= '&sort=' . $this->request->get['sort'];
}

if (isset($this->request->get['order'])) {
$url .= '&order=' . $this->request->get['order'];
}

if (isset($this->request->get['limit'])) {
$url .= '&limit=' . $this->request->get['limit'];
}

$pagination = new Pagination();
$pagination->total = $product_total;
$pagination->page = $page;
$pagination->limit = $limit;
$pagination->url = $this->url->link('product/allproduct',  $url . '&page={page}');

$data['pagination'] = $pagination->render();

$data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit));

// http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html
if ($page == 1) {
    $this->document->addLink($this->url->link('product/allproduct'), 'canonical');
} else {
$this->document->addLink($this->url->link('product/allproduct', '&page='. $page), 'canonical');
}

if ($page > 1) {
    $this->document->addLink($this->url->link('product/allproduct', (($page - 2) ? '&page='. ($page - 1) : '')), 'prev');
}

if ($limit && ceil($product_total / $limit) > $page) {
    $this->document->addLink($this->url->link('product/allproduct', '&page='. ($page + 1)), 'next');
}

$data['sort'] = $sort;
$data['order'] = $order;
$data['limit'] = $limit;

$data['continue'] = $this->url->link('common/home');

$data['column_left'] = $this->load->controller('common/column_left');
$data['column_right'] = $this->load->controller('common/column_right');
$data['content_top'] = $this->load->controller('common/content_top');
$data['content_bottom'] = $this->load->controller('common/content_bottom');
$data['footer'] = $this->load->controller('common/footer');
$data['header'] = $this->load->controller('common/header');

$this->response->setOutput($this->load->view('product/allproduct', $data));

}
}

Language file of show all products module OpenCart version 3.0.*.*. If you want to change text or words then you can change here.

<?php
// Text
$_['text_refine']       = 'Refine Search';
$_['text_product']      = 'Products';
$_['text_error']        = 'Category not found!';
$_['text_empty']        = 'There are no products to list in this category.';
$_['text_quantity']     = 'Qty:';
$_['text_manufacturer'] = 'Brand:';
$_['text_model']        = 'Product Code:';
$_['text_points']       = 'Reward Points:';
$_['text_price']        = 'Price:';
$_['text_tax']          = 'Ex Tax:';
$_['text_compare']      = 'Product Compare (%s)';
$_['text_sort']         = 'Sort By:';
$_['text_default']      = 'Default';
$_['text_name_asc']     = 'Name (A - Z)';
$_['text_name_desc']    = 'Name (Z - A)';
$_['text_price_asc']    = 'Price (Low &gt; High)';
$_['text_price_desc']   = 'Price (High &gt; Low)';
$_['text_rating_asc']   = 'Rating (Lowest)';
$_['text_rating_desc']  = 'Rating (Highest)';
$_['text_model_asc']    = 'Model (A - Z)';
$_['text_model_desc']   = 'Model (Z - A)';
$_['text_limit']        = 'Show:';
$_['text_title']        = 'Show All Products';
$_['text_description']        = 'Show All Products';
$_['text_keywords']        = 'Show All Products';
$_['text_heading_title']        = 'Show All Products';

View file of show all products module OpenCart version 3.0 catalog\view\theme\default\template\product\allproduct.twig

{{ header }}
<div id="product-category" class="container">
  <ul class="breadcrumb">
    {% for breadcrumb in breadcrumbs %}
    <li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
    {% endfor %}
  </ul>
  <div class="row">{{ column_left }}
    {% 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>{{ heading_title }}</h2>
      {% if thumb or description %}
      <div class="row"> {% if thumb %}
        <div class="col-sm-2"><img src="{{ thumb }}" alt="{{ heading_title }}" title="{{ heading_title }}" class="img-thumbnail" /></div>
        {% endif %}
        {% if description %}
        <div class="col-sm-10">{{ description }}</div>
        {% endif %} </div>
      <hr>
      {% endif %}
      {% if categories %}
      <h3>{{ text_refine }}</h3>
      {% if categories|length <= 5 %}
      <div class="row">
        <div class="col-sm-3">
          <ul>
            {% for category in categories %}
            <li><a href="{{ category.href }}">{{ category.name }}</a></li>
            {% endfor %}
          </ul>
        </div>
      </div>
      {% else %}
      <div class="row"> {% for category in categories|batch((categories|length / 4)|round(1, 'ceil')) %}
        <div class="col-sm-3">
          <ul>
            {% for category in categories %}
            <li><a href="{{ category.href }}">{{ category.name }}</a></li>
            {% endfor %}
          </ul>
        </div>
        {% endfor %} </div>
      <br />
      {% endif %}
      {% endif %}
      {% if products %}
      <div class="row">
        <div class="col-md-2 col-sm-6 hidden-xs">
          <div class="btn-group btn-group-sm">
            <button type="button" id="list-view" class="btn btn-default" data-toggle="tooltip" title="{{ button_list }}"><i class="fa fa-th-list"></i></button>
            <button type="button" id="grid-view" class="btn btn-default" data-toggle="tooltip" title="{{ button_grid }}"><i class="fa fa-th"></i></button>
          </div>
        </div>
        <div class="col-md-3 col-sm-6">
          <div class="form-group"><a href="{{ compare }}" id="compare-total" class="btn btn-link">{{ text_compare }}</a></div>
        </div>
        <div class="col-md-4 col-xs-6">
          <div class="form-group input-group input-group-sm">
            <label class="input-group-addon" for="input-sort">{{ text_sort }}</label>
            <select id="input-sort" class="form-control" onchange="location = this.value;">
              {% for sorts in sorts %}
              {% if sorts.value == '%s-%s'|format(sort, order) %}
              <option value="{{ sorts.href }}" selected="selected">{{ sorts.text }}</option>
              {% else %}
              <option value="{{ sorts.href }}">{{ sorts.text }}</option>
              {% endif %}
              {% endfor %}
            </select>
          </div>
        </div>
        <div class="col-md-3 col-xs-6">
          <div class="form-group input-group input-group-sm">
            <label class="input-group-addon" for="input-limit">{{ text_limit }}</label>
            <select id="input-limit" class="form-control" onchange="location = this.value;">
              {% for limits in limits %}
              {% if limits.value == limit %}
              <option value="{{ limits.href }}" selected="selected">{{ limits.text }}</option>
              {% else %}
              <option value="{{ limits.href }}">{{ limits.text }}</option>
              {% endif %}
              {% endfor %}
            </select>
          </div>
        </div>
      </div>
      <div class="row"> {% for product in products %}
        <div class="product-layout product-list col-xs-12">
          <div class="product-thumb">
            <div class="image"><a href="{{ product.href }}"><img src="{{ product.thumb }}" alt="{{ product.name }}" title="{{ product.name }}" class="img-responsive" /></a></div>
            <div>
              <div class="caption">
                <h4><a href="{{ product.href }}">{{ product.name }}</a></h4>
                <p>{{ product.description }}</p>
                {% if product.price %}
                <p class="price"> {% if not product.special %}
                  {{ product.price }}
                  {% else %} <span class="price-new">{{ product.special }}</span> <span class="price-old">{{ product.price }}</span> {% endif %}
                  {% if product.tax %} <span class="price-tax">{{ text_tax }} {{ product.tax }}</span> {% endif %} </p>
                {% endif %}
                {% if product.rating %}
                <div class="rating"> {% for i in 1..5 %}
                  {% if product.rating < i %} <span class="fa fa-stack"><i class="fa fa-star-o fa-stack-2x"></i></span> {% else %} <span class="fa fa-stack"><i class="fa fa-star fa-stack-2x"></i><i class="fa fa-star-o fa-stack-2x"></i></span>{% endif %}
                  {% endfor %} </div>
                {% endif %} </div>
              <div class="button-group">
                <button type="button" onclick="cart.add('{{ product.product_id }}', '{{ product.minimum }}');"><i class="fa fa-shopping-cart"></i> <span class="hidden-xs hidden-sm hidden-md">{{ button_cart }}</span></button>
                <button type="button" data-toggle="tooltip" title="{{ button_wishlist }}" onclick="wishlist.add('{{ product.product_id }}');"><i class="fa fa-heart"></i></button>
                <button type="button" data-toggle="tooltip" title="{{ button_compare }}" onclick="compare.add('{{ product.product_id }}');"><i class="fa fa-exchange"></i></button>
              </div>
            </div>
          </div>
        </div>
        {% endfor %} </div>
      <div class="row">
        <div class="col-sm-6 text-left">{{ pagination }}</div>
        <div class="col-sm-6 text-right">{{ results }}</div>
      </div>
      {% endif %}
      {% if not categories and not products %}
      <p>{{ text_empty }}</p>
      <div class="buttons">
        <div class="pull-right"><a href="{{ continue }}" class="btn btn-primary">{{ button_continue }}</a></div>
      </div>
      {% endif %}
      {{ content_bottom }}</div>
    {{ column_right }}</div>
</div>
{{ footer }} 

Let me know if you find any issues.

Thanks

Rupak Nepali

9 COMMENTS

  1. hi,
    its showing error as
    2017-08-02 10:07:51 – MOD: Modification Default

    FILE: system/engine/action.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 69

    FILE: system/engine/loader.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 77
    LINE: 151
    LINE: 168

    FILE: system/library/config.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 59

    FILE: system/library/language.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 67
    LINE: 73

    FILE: system/library/template/template.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 18

    FILE: system/library/template/twig.php
    CODE: $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE);
    LINE: 19
    —————————————————————-
    2017-08-02 10:07:53 – MOD: Modification Default

    FILE: system/engine/action.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 69

    FILE: system/engine/loader.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 77
    LINE: 151
    LINE: 168

    FILE: system/library/config.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 59

    FILE: system/library/language.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 67
    LINE: 73

    FILE: system/library/template/template.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 18

    FILE: system/library/template/twig.php
    CODE: $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE);
    LINE: 19
    —————————————————————-
    2017-08-02 10:08:11 – MOD: Modification Default

    FILE: system/engine/action.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 69

    FILE: system/engine/loader.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 77
    LINE: 151
    LINE: 168

    FILE: system/library/config.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 59

    FILE: system/library/language.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 67
    LINE: 73

    FILE: system/library/template/template.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 18

    FILE: system/library/template/twig.php
    CODE: $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE);
    LINE: 19

  2. Hello Rupak,

    I had this error.

    2018-04-14 20:18:04 – MOD: Modification Default
    —————————————————————-
    2018-04-14 20:18:53 – MOD: Modification Default

    FILE: system/engine/action.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 69

    FILE: system/engine/loader.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 77
    LINE: 151
    LINE: 168

    FILE: system/library/config.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 59

    FILE: system/library/language.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 67
    LINE: 73

    FILE: system/library/template/template.php
    REGEX: ~(require|include)(_once)?\(([^)]+)~
    LINE: 18

    FILE: system/library/template/twig.php
    CODE: $loader = new \Twig_Loader_Filesystem(DIR_TEMPLATE);
    LINE: 19

    —————————————————————-
    There is NO folder like System / Cache.
    I deleted all the files from System / Storage / Cache. But It is not working.

  3. How to uninstall? I am not able to remove the errors and its disturbing the layout of my website? I tried disabling the Extension but it is still showing in top menu and content as well.

    Please reply urgently.

  4. Hi,

    Thanks for the free mod, but i get these errors 3.0.2.0:

    MOD: All Product Show

    FILE: catalog/view/theme/default/template/common/menu.twig
    CODE: {% for category in categories %}
    LINE: 11

    FILE: catalog/controller/common/menu.php
    CODE: $data[‘categories’] = array();
    LINE: 15

    Greetings,

    Peter

LEAVE A REPLY

Please enter your comment!
Please enter your name here