This free Opencart 3.0 module provides the ability to display all products on a page. Download the module, install it, and you will see All Products link in the category top menu at the end.
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:
- Download the module
Download Show all product module in one page opencart versions 3.0.*.*
For Opencart 2 go to https://webocreation.com/show-all-products-opencart-module/ - Now login to the 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 the error shows then you have to solve it first.
- If no error click the refresh button
- You are all set.
- If you have multiple languages then you have to translate the catalog/language/en-gb/product/allproduct.php and place into catalog/language/YOURLANGUAGEFOLDER/product
- Enjoy the free module.

The folder structure of display all products free OpenCart module:
To show the "Show All Products" menu and link it to the all products page from the top of the frontend category menu, we set up an Ocmod file (install.xml):
All Product Show 3.0 Rupak Nepali https://webocreation.comwebocreation_all_products_show
Show all Products in a Page frontend {{ text_heading_title }} ]]> url->link('product/allproduct'); $this->load->language('product/allproduct'); $data['text_heading_title']=$this->language->get('text_heading_title'); ]]>
Controller of Show all products free module catalog\controller\product\allproduct.php
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 the show all products module OpenCart version 3.0.*.*. If you want to change text or words then you can change here.
High)'; $_['text_price_desc'] = 'Price (High > 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 }}{{ footer }}{{ 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 %}{{ content_top }}{{ column_right }}{{ heading_title }}
{% if thumb or description %}{% if thumb %}{% endif %} {% if description %}{{ description }}{% endif %}
{% endif %} {% if categories %}{{ text_refine }}
{% if categories|length <= 5 %}{% else %}{% for category in categories %}
- {{ category.name }}
{% endfor %}{% for category in categories|batch((categories|length / 4)|round(1, 'ceil')) %}{% endfor %}{% for category in categories %}
- {{ category.name }}
{% endfor %}
{% endif %} {% endif %} {% if products %}{% for product in products %}{% endfor %}{{ product.name }}
{{ product.description }}
{% if product.price %}{% if not product.special %} {{ product.price }} {% else %} {{ product.special }} {{ product.price }} {% endif %} {% if product.tax %} {{ text_tax }} {{ product.tax }} {% endif %}
{% endif %} {% if product.rating %} {% endif %}{% endif %} {% if not categories and not products %}{{ pagination }}{{ results }}{{ text_empty }}
{% endif %} {{ content_bottom }}
In this way, we create an Opencart 3 testimonial module’s frontend and show the setting that we entered in the multi-instance module admin section. Similarly, we make a slider of the testimonial module. Hope you liked this post, let us know if you have any questions or suggestions, please subscribe to our YouTube Channel for Opencart video tutorials. You can also find us on Twitter and Facebook. Enjoy!