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

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

 
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 353
Столкнулся с интересной проблемой при сортировке городов, регионов и пр. в различных браузерах.

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


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


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

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

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


Как сделать такое же для областей (регионов) и городов? Надо, чтобы при регистрации мой город был первым.
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
Если именно ваш город нужен, то и измените id вашего города в базе на наименьший, а в запросе /components/geo/model.php
Код 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. }
измените
Код PHP:
  1. $this->inDB->orderBy('name');
на
Код PHP:
  1. $this->inDB->orderBy('id');
Редактировалось: 1 раз (Последний: 30 октября 2015 в 23:44)
Реклама
cms
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 353
Lora:
измените id вашего города в базе на наименьший
Действительно простое решение. Так и сделаю.
Одно но. Запас там невелик - наименьший ID=6. Т. е. пять городов влезет и все.
Пробовал добавить новый столбец с цихерками (как в geo_cities), не получается (не сортирует по нему).
Хотя проблема решена.

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

CMS 2.2.1

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

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

Уже кровь из носа facepalm
Редактировалось: 1 раз (Последний: 31 октября 2015 в 13:04)
Посетитель
small user social cms
Медаль
Сообщений: 229
Dmitry:

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

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

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

Или как в geo_countries делать поле ordering и фильтровать там, но тут в коде в запросе надо добавить именно сортировку по ordering.
Редактировалось: 1 раз (Последний: 31 октября 2015 в 14:44)
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 353
kdv1978, да это так.
Теперь работает.
Спасибо.
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 353
Теперь все замечательно, но аппетиты растут.

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


Сюда бы сюда добавили такой функционал, цены бы не было. )))
Редактировалось: 1 раз (Последний: 31 октября 2015 в 15:16)
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
Попробуйте так.Откройте файл /includes/smarty/libs/plugins/function.city_input.php и пропишите свой город здесь.
Код PHP:
  1. if (!isset($params['value'])) {
  2. $params['value'] = 'здесь ваш город';
  3.  
}
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 353
В 2.2.1 нет такого кода.
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
А в 1.10.6. есть smile
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.