I
I
ixon2014-05-04 14:50:37
CMS
ixon, 2014-05-04 14:50:37

How to display products on the main page of OpenCart?

How to display products on the main page of OpenCart? Is there any manual for creating templates for this CMS? If it is difficult to do this using OC tools, then advise a simpler CMS.

Answer the question

In order to leave comments, you need to log in

7 answer(s)
I
ixon, 2015-08-30
@ixon

You can do this using the All products module . Read more: https://opencartforum.com/topic/21524-vse-product-m...

A
Alexey Pyanov, 2015-08-30
@gohdan

For those who, like me, will come here from a search engine - in OpenCart 2.0.3.1, the recommended products are already displayed on the main page by default, you need to go to the modules - "Recommended > Featured - Home Page" -> "Edit" button, and there there will be a list of products.

K
killmeslow, 2014-05-09
@killmeslow

@makol if you follow the links, then Google sends back =) an endless loop

W
wcp, 2016-01-25
@wcp

You are talking nonsense with your "recommended". TC probably asks for the output of all products in a category or categories. Without manually adding to the "recommended".

O
Oleg, 2014-05-04
@makol

https://www.google.ru/search?q=%D0%9A%D0%B0%D0%BA+...

F
fr0zen, 2014-09-03
@fr0zen

The OS has standard modules that allow you to display products on the main page. The list of modules can be found in "Add-ons" - "Modules" in the admin panel.
You open the "Recommended" module, select the products that you want to display, specify Home as the page (or the main page, depending on the localization). You save. Everything is ready!

S
script-php, 2017-11-10
@script-php

Посмотрите https://bigmoll.com/ она проще
Для opencart-3
нужно catalog\controller\common\home.php заменить весь код на этот

<?php
  
  class ControllerCommonHome extends Controller {
    public function index() {
      
      
      if ((isset($_SERVER['HTTPS']) && (($_SERVER['HTTPS'] == 'on') || ($_SERVER['HTTPS'] == '1'))) || $_SERVER['SERVER_PORT'] == 443) {
        define('HTTP',"https://");
        } elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on') {
        define('HTTP',"https://");
        } else {
        define('HTTP',"http://");
      }	
      
      define('HOST', HTTP.$_SERVER['HTTP_HOST']);	
      
      
      
      $this->document->setTitle($this->config->get('config_meta_title'));
      $this->document->setDescription($this->config->get('config_meta_description'));
      $this->document->setKeywords($this->config->get('config_meta_keyword'));
      
      
      
      $this->load->language('product/category');
      
      $this->load->model('catalog/category');
      
      $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['compare'] = $this->url->link('product/compare');
      
      
      function str_replace_once($search, $replace, $text) 
      { 
        $pos = strpos($text, $search); 
        return $pos!==false ? substr_replace($text, $replace, $pos, strlen($search)) : $text; 
      }			
      

      $data['products'] = array();
      
      $filter_data = array(
      'filter_category_id' => 0,
      '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', 'path=' . null . '&product_id=' . $result['product_id'] )
        );
      }
      
      
      
      $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'  => HOST . ('/?sort=p.sort_order&order=ASC' . $url)
      );
      
      $data['sorts'][] = array(
      'text'  => $this->language->get('text_name_asc'),
      'value' => 'pd.name-ASC',
      'href'  => HOST . ('/?sort=pd.name&order=ASC' . $url)
      );
      
      $data['sorts'][] = array(
      'text'  => $this->language->get('text_name_desc'),
      'value' => 'pd.name-DESC',
      'href'  => HOST . ('/?sort=pd.name&order=DESC' . $url)
      );
      
      $data['sorts'][] = array(
      'text'  => $this->language->get('text_price_asc'),
      'value' => 'p.price-ASC',
      'href'  =>HOST . ('/?sort=p.price&order=ASC' . $url)
      );
      
      $data['sorts'][] = array(
      'text'  => $this->language->get('text_price_desc'),
      'value' => 'p.price-DESC',
      'href'  => HOST . ('/?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'  => HOST . ('/?sort=rating&order=DESC' . $url)
        );
        
        $data['sorts'][] = array(
        'text'  => $this->language->get('text_rating_asc'),
        'value' => 'rating-ASC',
        'href'  => HOST . ('/?sort=rating&order=ASC' . $url)
        );
      }
      
      $data['sorts'][] = array(
      'text'  => $this->language->get('text_model_asc'),
      'value' => 'p.model-ASC',
      'href'  => HOST . ('/?sort=p.model&order=ASC' . $url)
      );
      
      $data['sorts'][] = array(
      'text'  => $this->language->get('text_model_desc'),
      'value' => 'p.model-DESC',
      'href'  => HOST .('/?sort=p.model&order=DESC' . $url)
      );
      
      

      
      $data['limits'] = array();
      
      $limits = array_unique(array($this->config->get('theme_' . $this->config->get('config_theme') . '_product_limit'), 25, 50, 75, 100));
      
      sort($limits);
      
      
      $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'];
      }
      
      
      
      foreach($limits as $value) {
        $data['limits'][] = array(
        'text'  => $value,
        'value' => $value,
        'href'  => HOST . str_replace_once('&', '?', $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'];
      }
      
      $url = str_replace_once('&', '?', $url);			
      

      $pagination = new Pagination();
      $pagination->total = $product_total;
      $pagination->page = $page;
      $pagination->limit = $limit;
      $pagination->url = HOST . ($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));
      

      if ($page == 1) {
          $this->document->addLink(HOST, 'canonical');
        } else {
        $this->document->addLink(HOST . ('/?page='. $page), 'canonical');
      }
      
      if ($page > 1) {
          $this->document->addLink(HOST . ((($page - 2) ? '/?page='. ($page - 1) : '')), 'prev');
      }
      
      if ($limit && ceil($product_total / $limit) > $page) {
          $this->document->addLink(HOST . ('/?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/category', $data));
      
    }
  }

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question