AVTR

[HowTo] Сортировка регионов по собственному желанию

Рекомендуемые сообщения

AVTR    3

Добрый день, как можно сделать сортировку Стран, регионов по значимости?

Т.е. цель вывести Москву Питер и другие большие города в начало списка.

Как это можно сделать?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
lavka    10

В файле catalog/model/localisation/zone.php изменить запрос в функции getZonesByCountryId:

	public function getZonesByCountryId($country_id) {
		$zone_data = $this->cache->get('zone.' . (int)$country_id);
	
		if (!$zone_data) {
			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone WHERE country_id = '" . (int)$country_id . "' AND status = '1' ORDER BY zone_id!=2761,zone_id!=2722,zone_id!=2785,name");
	
			$zone_data = $query->rows;
			
			$this->cache->set('zone.' . (int)$country_id, $zone_data);
		}
	
		return $zone_data;
	}

Было ORDER BY name

Стало ORDER BY zone_id!=2761,zone_id!=2722,zone_id!=2785,name

 

Москва, МО, Питер стали впереди остальных.

 

Список zone_id:

2726 Алтайский край
2729 Амурская область
2724 Архангельская область
2725 Астраханская область
2727 Белгородская область
2730 Брянская область
2799 Владимирская область
2801 Волгоградская область
2802 Вологодская область
2803 Воронежская область
2728 Еврейская АО
2734 Забайкальский край
2741 Ивановская область
2740 Иркутская область
2743 Калининградская область
2744 Калужская область
2775 Камчатский край
2733 Карачаево-Черкеcсия
2747 Кемеровская область
2804 Кировская область
2750 Костромская область
2751 Краснодарский край
2752 Красноярский край
2754 Курганская область
2755 Курская область
2735 Ленинградская область
2757 Липецкая область
2758 Магаданская область
2761 Москва
2722 Московская область
2762 Мурманская область
2764 Ненецкий АО
2766 Нижегородская область
2767 Новгородская область
2768 Новосибирская область
2769 Омская область
2771 Оренбургская область
2770 Орловская область
2773 Пензенская область
2774 Пермский край
2800 Приморский край
2777 Псковская область
2760 Республика Адыгея
2738 Республика Алтай
2794 Республика Башкортостан
2796 Республика Бурятия
2759 Республика Дагестан
2765 Республика Ингушетия
2763 Республика Кабардино-Балкария
2736 Республика Калмыкия
2776 Республика Карелия
2787 Республика Коми
2808 Республика Марий Эл
2782 Республика Мордовия
2805 Республика Саха
2798 Республика Северная Осетия
2746 Республика Татарстан
2756 Республика Тыва
2721 Республика Хакасия
2778 Ростовская область
2779 Рязанская область
2781 Самарская область
2785 Санкт-Петербург
2783 Саратовская область
2737 Сахалинская область
2807 Свердловская область
2784 Смоленская область
2786 Ставропольский край
2788 Тамбовская область
2792 Тверская область
2789 Томская область
2790 Тульская область
2793 Тюменская область
2742 Удмуртская Республика
2795 Ульяновская область
2748 Хабаровский край
2749 Ханты-Мансийский АО - Югра
2732 Челябинская область
2739 Чеченская Республика
2731 Чувашская Республика
2723 Чукотский АО
2780 Ямало-Ненецкий АО
2806 Ярославская область

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Novakmv    0

Есть у кого ни будь файл zone_to_geo_zone

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
lavka    10

а что если Simple стоит?

А что это меняет? Мое решение работает у меня вместе с симплой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
lavka    10

Кому скучно, второй вариант:

 

В таблице oc_zone выполнить

ALTER TABLE  `oc_zone` ADD  `order_id` TINYINT( 2 ) NOT NULL DEFAULT  '99'

Затем нужным зонам выставить приоритет, типа 1, 2, 3

 

И также в catalog/model/localisation/zone.php в запросе написать

ORDER BY order_id,name

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
afwollis    1 097
lavka, спасибо. утащили в FAQ :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
DIAF    0

В файле catalog/model/localisation/zone.php изменить запрос в функции getZonesByCountryId:

	public function getZonesByCountryId($country_id) {
		$zone_data = $this->cache->get('zone.' . (int)$country_id);
	
		if (!$zone_data) {
			$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone WHERE country_id = '" . (int)$country_id . "' AND status = '1' ORDER BY zone_id!=2761,zone_id!=2722,zone_id!=2785,name");
	
			$zone_data = $query->rows;
			
			$this->cache->set('zone.' . (int)$country_id, $zone_data);
		}
	
		return $zone_data;
	}

Было ORDER BY name

Стало ORDER BY zone_id!=2761,zone_id!=2722,zone_id!=2785,name

 

Москва, МО, Питер стали впереди остальных.

 

Список zone_id:

2726 Алтайский край

2729 Амурская область

2724 Архангельская область

2725 Астраханская область

2727 Белгородская область

2730 Брянская область

2799 Владимирская область

2801 Волгоградская область

2802 Вологодская область

2803 Воронежская область

2728 Еврейская АО

2734 Забайкальский край

2741 Ивановская область

2740 Иркутская область

2743 Калининградская область

2744 Калужская область

2775 Камчатский край

2733 Карачаево-Черкеcсия

2747 Кемеровская область

2804 Кировская область

2750 Костромская область

2751 Краснодарский край

2752 Красноярский край

2754 Курганская область

2755 Курская область

2735 Ленинградская область

2757 Липецкая область

2758 Магаданская область

2761 Москва

2722 Московская область

2762 Мурманская область

2764 Ненецкий АО

2766 Нижегородская область

2767 Новгородская область

2768 Новосибирская область

2769 Омская область

2771 Оренбургская область

2770 Орловская область

2773 Пензенская область

2774 Пермский край

2800 Приморский край

2777 Псковская область

2760 Республика Адыгея

2738 Республика Алтай

2794 Республика Башкортостан

2796 Республика Бурятия

2759 Республика Дагестан

2765 Республика Ингушетия

2763 Республика Кабардино-Балкария

2736 Республика Калмыкия

2776 Республика Карелия

2787 Республика Коми

2808 Республика Марий Эл

2782 Республика Мордовия

2805 Республика Саха

2798 Республика Северная Осетия

2746 Республика Татарстан

2756 Республика Тыва

2721 Республика Хакасия

2778 Ростовская область

2779 Рязанская область

2781 Самарская область

2785 Санкт-Петербург

2783 Саратовская область

2737 Сахалинская область

2807 Свердловская область

2784 Смоленская область

2786 Ставропольский край

2788 Тамбовская область

2792 Тверская область

2789 Томская область

2790 Тульская область

2793 Тюменская область

2742 Удмуртская Республика

2795 Ульяновская область

2748 Хабаровский край

2749 Ханты-Мансийский АО - Югра

2732 Челябинская область

2739 Чеченская Республика

2731 Чувашская Республика

2723 Чукотский АО

2780 Ямало-Ненецкий АО

2806 Ярославская область

у меня не сработало в чем ошибка ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
lavka    10

Нужно очистить кэш

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Redba    0

все равно не работает, вот код: opencart 2.0.3.1

--------------------------------------------

 

 

 

 

<?php
class ModelLocalisationZone extends Model {
    public function getZone($zone_id) {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone WHERE zone_id = '" . (int)$zone_id . "' AND status = '1'");

        return $query->row;
    }

    public function getZonesByCountryId($country_id) {
        $zone_data = $this->cache->get('zone.' . (int)$country_id);

        if (!$zone_data) {
            $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone WHERE country_id = '" . (int)$country_id . "' AND status = '1' ORDER BY zone_id!=2761,zone_id!=2722,name");

            $zone_data = $query->rows;

            $this->cache->set('zone.' . (int)$country_id, $zone_data);
        }

        return $zone_data;
    }
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Moonwalker    9

Пардоньте за некропростинг. Замечательное решение, давно думал, но все руки не доходили найти, как сделать )))

Все работает. Только одно но... Спустя какое-то время сортировка опять сбивается на алфавитную, Мск и СПб уходят на свои места О_о Лечится очередным удалением файла cache.zone.176 в папке cache. Вопрос в том, откуда он там нафиг берется со старой сортировкой? )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Moonwalker    9

Еще раз пардон за некропостинг ))) Но спустя несколько месяцев решил-таки озадачиться поиском проблемы )) В итоге сортировка слетала из-за админки. Надо такое же дело поправить в admin/model/localisation/zone.php

Я так, поделиться с общественностью. Мало ли, кто столкнется в будущем ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу