Ruslan Brest, rb.labtodo.com
Backend web-developer: CodeIgniter, PHP, MySQL, OpenCart, PrestaShop, MaxSite CMS

Opencart: вывод производителей в своём порядке вместо алфавитного

Просмотров: 7449 RSS 6
Howto » E-commerce » Web development » OpenCart

Для тех, кто хочет выводить страницу производителей (брендов) в своём порядке, а не в алфавитном, Сегодняшний рецепт. Надо изменить файл catalog/controller/product/manufacturer.php.

Ищем строку #33:

$results = $this->model_catalog_manufacturer->getManufacturers();

её надо заменить на

$results = $this->model_catalog_manufacturer->getManufacturers(
	array('sort' => 'sort_order', 'order'=>'ASC')
	);

и чуть ниже - часть

foreach ($results as $result) {
	if (is_numeric(utf8_substr($result['name'], 0, 1))) {
		$key = '0 - 9';
	} else {
		$key = utf8_substr(utf8_strtoupper($result['name']), 0, 1);
	}

изменить на:

foreach ($results as $result) {
	/*
	if (is_numeric(utf8_substr($result['name'], 0, 1))) {
		$key = '0 - 9';
	} else {
		$key = utf8_substr(utf8_strtoupper($result['name']), 0, 1);
	}
	*/
	$key = $this->language->get('button_view');

То же самое в виде diff-файла

diff --git a/upload/catalog/controller/product/manufacturer.php b/upload/catalog/controller/product/manufacturer.php
index 3b0b701..1071612 100644
--- a/upload/catalog/controller/product/manufacturer.php
+++ b/upload/catalog/controller/product/manufacturer.php
@@ -30,14 +30,19 @@ class ControllerProductManufacturer extends Controller {
 
 		$this->data['categories'] = array();
 
-		$results = $this->model_catalog_manufacturer->getManufacturers();
+		$results = $this->model_catalog_manufacturer->getManufacturers(
+			array('sort' => 'sort_order', 'order'=>'ASC')
+			);
 
 		foreach ($results as $result) {
+			/*
 			if (is_numeric(utf8_substr($result['name'], 0, 1))) {
 				$key = '0 - 9';
 			} else {
 				$key = utf8_substr(utf8_strtoupper($result['name']), 0, 1);
 			}
+			*/
+			$key = $this->language->get('button_view');
 
 			if (!isset($this->data['categories'][$key])) {
 				$this->data['categories'][$key]['name'] = $key;

Проверялось на версии Opencart 2.0.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru digg.com friendfeed.com liveinternet.ru livejournal.ru yandex.ru del.icio.us
Комментариев: 6
  1. Не работает:( Как были производители в алфавитном порядке, так и остались. Версия движка 1,5,4,1

  2. 2013-05-22 в 21:22:48 | Ruslan Brest

    Можете дать доступ к FTP, посмотрю на месте? Здесь на странице "Контакт" или на опенкартфорум в ЛС. Та 1541, что у меня под рукой, оказалась всего с одним производителем.

  3. У меня тоже не изменился вывод

  4. Всё работает, алфавитный порядок пропал. Теперь можно в админке выставлять нумерацию по которой будет выводится порядок, но тут возник вопрос, я не стал править первый пункт так как меня устраивает алфавитный порялок но без обозначений алфавита и нумерации (по второму пункту, где надо закомментировать) хотя это всё не важно, главное то, что выводится любой порядок по вашей статье это сверху-вниз как указать чтобы порядок был слева-направо

    вот пример, что бы было понятней

    сейчас стало так:

    1 4 7

    2 5 8

    3 6 9

    а надо так

    1 2 3

    4 5 6

    7 8 9

  5. 2014-01-18 в 11:56:39 | Ruslan Brest

    Переключите свою тему на Default, посмотите, как в ней выводится. Посмотрите на мои изменения - убедитесь, что никакого отношения к оформлению вывода они не имеют.

    Такие вопросы надо верстальщикам задавать. Или автору шаблона. Я только сортировку поменял, а не оформление.

  6. 2014-10-28 в 08:57:47 | Николай

    Спасибо большое, помогло. Делал на версии 1.5.6.4

Оставьте комментарий!

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

Авторизация  Facebook. MaxSiteAuth. Loginza

(обязательно)