Добрый вечер друзья. Помогите решить проблему, сегодня правил базу регионов и городов. После сохранения правок, регионы и города не сортируются по алфавиту, вернее добавленные города внизу списка. Нашёл тему где эта проблема решена, но манипуляции приведенные там не помогли. То есть изменив сортировку таблицы cms_geo_cities выбрав name (столбец) по возрастанию не помогло.
Самое главное, что в профилях пользователей с сортировкой все путём. Сортировка не работает при выборе региона и города при регистрации, при поиске и везде где используется виджет выбора страна-регион-город. Спасибо заранее за помощь.
Вывод города по алфавиту - instantcms 2.3.0
ЕСТЬ РЕШЕНИЕ
ЗАКРЫТО
После правки регионов и городов они не сортируются по алфавиту.
#3
18 января 2016 в 15:32
Присоединяюсь к вопросу. Тоже интересно как на стороне клиента сделать сортировку регионов и городов по алфавиту.
Сегодня в 17:21
#4
18 января 2016 в 21:22
Благодаря Val проблема решена, выкладываю его решение. В файле .../templates/ваш_шаблон/js/geo.js после строки 39 добавить
Полный файл
Данные с сервера приходят не по алфавиту, а уже на стороне клиента в цикле мы их сортируем и показываем. Немного нагружаем проц. клиента, но города по алфавиту. (пояснение Val)
child_list.html( return a.text == b.text ? 0 : a.text < b.text ? -1 : 1 }) );
var icms = icms || {}; icms.geo = (function ($) { //====================================================================// var geo_window = $('#geo_window'); var geo_form = $('form', geo_window); var child_list = $('select[name='+child_list_id+']', geo_form); if (id == 0) { child_list.parent('.list').hide(); if (child_list_id=='regions'){ $('select[name=cities]', geo_form).parent('.list').hide(); } $('.buttons', geo_window).hide(); return false; } var url = geo_form.data( 'items-url' ); $.post(url, {type: child_list_id, parent_id: id}, function(result){ if (result.error) { return false; } child_list.html(''); for(var item_id in result.items){ var item_name = result.items[item_id]; child_list.append( '<option value="'+ item_id +'">' + item_name +'</option>' ); } child_list.html( return a.text == b.text ? 0 : a.text < b.text ? -1 : 1 }) ); child_list.parent('.list').show(); if (child_list_id != 'cities'){ icms.geo.changeParent(child_list, 'cities'); } }, 'json'); } //====================================================================// var geo_window = $('#geo_window'); var geo_form = $('form', geo_window); if (id > 0) { $('.buttons', geo_window).show(); } else { $('.buttons', geo_window).hide(); } } //====================================================================// this.selectCity = function(target_id){ if (!id){ return false; } var widget = $('#geo-widget-'+target_id); $('.city-id', widget).val(id); $('.city-name', widget).html(name).show(); icms.modal.close(); } //====================================================================// return this; }).call(icms.geo || {},jQuery);