Как сделать вывод товаров на главной странице OpenCart?

Как сделать вывод товаров на главной странице OpenCart? Есть ли вообще мануал по созданию шаблонов для этой CMS? Если средствами OC это сделать сложно, то посоветуйте CMS попроще.
  • Вопрос задан
  • 34814 просмотров
Решения вопроса 1
ixon
@ixon Автор вопроса

Сделать это можно с помощью модуля Все товары. Подробнее: https://opencartforum.com/topic/21524-vse-tovary-m...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 6
gohdan
@gohdan
Системный администратор
Для тех, кто, как я, придёт сюда из поисковика - в OpenCart 2.0.3.1 рекомендуемые товары по умолчанию уже выводятся на главной странице, нужно зайти в модули - "Рекомендуемые > Featured - Home Page" -> кнопка "Редактировать", и там будет список товаров.
Ответ написан
killmeslow
@killmeslow
WE
@makol если перейти по ссылки, то гугл отправляет обратно =) бесконечный цикл
Ответ написан
Комментировать
@wcp
Ерунду вы городите со своими "рекомендуемыми". ТС наверняка просит вывод всех товаров в категории или категориях. Без ручного добавления в "рекомендуемые".
Ответ написан
Комментировать
fr0zen
@fr0zen
У ОС есть стандартные модули, которые позволяют выводить товары на главную страницу. Список модулей можно найти в "Дополнения"-"Модули" в панели администратора.
Открываешь модуль "Рекомендуемые", выбираешь товары, которые надо вывести, в качестве станицы указываешь Home( или главная страница, в зависимости от локализации). Сохраняешь. Все, готово!
Ответ написан
@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));
			
		}
	}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы