Сортировка по городам

Обратите внимание!

#1 30 октября 2015 в 19:17
Столкнулся с интересной проблемой при сортировке городов, регионов и пр. в различных браузерах.

При добавлении нового города в БД
— 'IE" и "Лиса" сортируют города в алфавитном порядке.


— "Opera", "google", "yandex" и "opera-mobile" не сортируют, добавленные города получаются в конце списка.


Мне помогли разобраться с этой проблемой и сделать сортировку во всех браузерах в алфавитном порядке. В общем все заработало.

Появилась другая необходимость. Сортировать города не в алфавитном порядке, а так как я хочу. Допустим, при регистрации, Комсомольск-на-амуре сделать первым при выборе.

Не буду тягомотину расписывать, просто обратите внимание, что страна Россия стоит на первом месте (т.е. не в алфавитном порядке).
При помощи БД это решается через "ordering".


Как сделать такое же для областей (регионов) и городов? Надо, чтобы при регистрации мой город был первым.
#2 30 октября 2015 в 23:44
Если именно ваш город нужен, то и измените id вашего города в базе на наименьший, а в запросе /components/geo/model.php
  1. public function getCities($region_id=false){
  2.  
  3. global $_LANG;
  4.  
  5. if ($region_id){
  6. $this->inDB->where("region_id = '{$region_id}'");
  7. }
  8.  
  9. $this->inDB->orderBy('name');
  10.  
  11. return $this->getItems('cms_geo_cities', $_LANG['GEO_SELECT_CITY']);
  12.  
  13. }
измените
  1. $this->inDB->orderBy('name');
на
  1. $this->inDB->orderBy('id');
#3 31 октября 2015 в 13:03

измените id вашего города в базе на наименьший

Lora
Действительно простое решение. Так и сделаю.
Одно но. Запас там невелик — наименьший ID=6. Т. е. пять городов влезет и все.
Пробовал добавить новый столбец с цихерками (как в geo_cities), не получается (не сортирует по нему).
Хотя проблема решена.

И опять двадцать пять. Меняю ID Свердловской области с 5080 на любой другой и все… Область на первом месте, а города тупо не грузятся.

CMS 2.2.1


ID 3161 (внутри страны) тоже пробовал.

Уже кровь из носа facepalm
#4 31 октября 2015 в 14:40


И опять двадцать пять. Меняю ID Свердловской области с 5080 на любой другой и все… Область на первом месте, а города тупо не грузятся.

Dmitry

Если Вы меняете id области, то не забывайте, что у Вас есть и другие таблицы, где задействованы эти id, в частности меняйте 5080 и в таблице geo_cities т.к. в ней у Вас осталось там 5080 на Свердловской области, а запрос на выборку идет по id=1 региона, а в geo_cities у Вас я так понимаю в поле region_id 1 нет.

В общем таким методом, Вам надо все гео таблицы приводить к общему знаменателю, а не просто в одной заменить ид.

Или как в geo_countries делать поле ordering и фильтровать там, но тут в коде в запросе надо добавить именно сортировку по ordering.
#5 31 октября 2015 в 15:03
kdv1978, да это так.
Теперь работает.
Спасибо.
#6 31 октября 2015 в 15:15
Теперь все замечательно, но аппетиты растут.

Как сделать, чтобы при открытии "выбор-города" значения по умолчанию уже стояли такие — какие необходимо?
Т. е. пользователь жамкнул "выбрать город", а там уже по умолчанию выбрано все (Страна — область — город). Если юзер не согласен, то выберет сам, что нужно.
Так будет мега-удобно.


Сюда бы сюда добавили такой функционал, цены бы не было. )))
#7 31 октября 2015 в 20:21
Попробуйте так.Откройте файл /includes/smarty/libs/plugins/function.city_input.php и пропишите свой город здесь.
  1. if (!isset($params['value'])) {
  2. $params['value'] = 'здесь ваш город';
  3.  
}
#8 1 ноября 2015 в 14:27
В 2.2.1 нет такого кода.
#9 1 ноября 2015 в 14:39
А в 1.10.6. есть smile
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.