Правильная модификация Location Selector для России

Автор Сообщение

Erus

#1/27.11.2016 00:14
0

Аватар

Пользователи

Карма: +1

Доброго времени суток всем. Простите за ранее за малограмотное объяснение задачи.

Я впервые работаю с Cotonti. По ней не так много инфы и готовых решений, как на той же Joomla или WP.

Из фриланс-биржы и делаю Биржу-труда, и столкнулся как раз со следующем: фриланс подразумевает работу удалённо, а биржа-труда на месте. От сюда и проблема, Россия большая, в ней множество городов и населённых пунктов. Они объединены в районы и области.

Cotonti есть только одно как я понимаю решение, это плагин Location Selector. Кто в курсе поймёт, что он не подойдёт для реализации моей задачи.

Как я понял Location Selector работает следующем принципом:

По коду страны из lang/ru(или en)/ countries.ru(или en).lang вытаскивает название страны и по этому же коду прыгает по БП выбор по id региона и города.

Как можно сделать что бы на сайте был только выбор Области(регион)=> Район=> Населённый пункт(город)?
PS: я долго не мог понять структуру таблицы в БД плагина.
Надеюсь на вашу помощь!

Сообщения: 8

smit1987

#2/29.11.2016 04:52
0

Аватар

Пользователи

Карма: +1

Поковыряйся в настройках модуля проектов. Там списки стран и городов, которые легко редактируются.

Сообщения: 15

anon_sega

#3/30.11.2016 10:24
0

Аватар

Пользователи

Карма: +4

список стран можно редактировать, список городов нет

Сообщения: 12

Cmsworks

Булат
#4/30.11.2016 10:27
0

Администраторы

Карма: +683

В админке смотрите в разделе Расширения - Плагин Location Selector - Администрирование. Там можно выбрать нужные страны и отредактировать состав регионов и городов.

Сообщения: 2416

Опытный веб-разработчик, фрилансер.
Разрабатываю сайты любой сложности на профессиональных фреймворках.

------

Почта для связи: developer@cmsworks.ru

smit1987

#5/05.12.2016 23:35
0

Аватар

Пользователи

Карма: +1

#14444 Cmsworks:

В админке смотрите в разделе Расширения - Плагин Location Selector - Администрирование. Там можно выбрать нужные страны и отредактировать состав регионов и городов.

А вот как поменять города местами, не удаляя и не переписывая?

Сообщения: 15

yarabotane

Victor
#6/06.12.2016 17:58
0

Пользователи

Карма: +93

#14463 smit1987:

А вот как поменять города местами, не удаляя и не переписывая?

Заказать шамана или землетрясение, может поменяются)))

 

Сообщения: 336

smit1987

#7/07.12.2016 03:45
0

Аватар

Пользователи

Карма: +1

#14464 yarabotane:
#14463 smit1987:

А вот как поменять города местами, не удаляя и не переписывая?

Заказать шамана или землетрясение, может поменяются)))

 

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

Сообщения: 15

CrazyFreeMan

Ярослав
#8/07.12.2016 10:38
0

Модераторы

Карма: +317

На сколько помню в плагине не задано явно сортировка потому вытягивает  по порядку, нужно описывать что б вытягивало по алфавиту или сортировать 

Сообщения: 1248

Erus

#9/13.02.2017 17:50
+1

Аватар

Пользователи

Карма: +1

Всем снова привет. 
Я по тому же вопросу. финансов на заказ моды плагина у меня пока тет и из-за этого решил сам заморочиться.

https://yadi.sk/d/Y9m4kJ4r3E2asp вот результат, но пока он неработает.

Прошу вас сделать работу над ошибками или хотя бы дать подсказки как и где.
Надеюсь на ваш опыт и умения!

Сообщения: 8

Cmsworks

Булат
#10/13.02.2017 18:23
0

Администраторы

Карма: +683

Пока код посмотреть не могу. Но чтобы у вас был выбор только региона и города, нужно просто в настройках плагина LocationSelector задать только одну страну. Тогда в формах не нужно будет выбирать страну и будут доступны для выбора только регионы и города. И в добавок, с помощью css можно вообще скрыть селект для страны.

Добавлено 57 секунд спустя:

Если нужна только Россия, то в настройках указываете код страны: ru

Сообщения: 2416

Опытный веб-разработчик, фрилансер.
Разрабатываю сайты любой сложности на профессиональных фреймворках.

------

Почта для связи: developer@cmsworks.ru

Erus

#11/14.02.2017 01:52
0

Аватар

Пользователи

Карма: +1

основная задача доработки, добавить Район(district) между Регионом{область}(region) и городом(city).

так как к примеру Иркутская область откуда я, 27 районов и в каждом неменее 5 крупных населенных пунктов. если просто выстовить города после региона, то список будет нехилый такой. Плюс города иногда в шаговой доступности и исполнителю не составить труда прийти с одного населеннгого пункта в другой пешком, из за чего и появилась необходимость обьеденить по районам, а не по городам.

Сообщения: 8

Cmsworks

Булат
#12/19.02.2017 08:34
0

Администраторы

Карма: +683

Код изучите и добавьте по аналогии новую таблицу районов в бд и добавьте её обработку в коде функций плагина.

Если сами не можете, то доработка возможна на платной основе конкретно под ваш сайт.

Сообщения: 2416

Опытный веб-разработчик, фрилансер.
Разрабатываю сайты любой сложности на профессиональных фреймворках.

------

Почта для связи: developer@cmsworks.ru

Erus

#13/19.02.2017 09:38
0

Аватар

Пользователи

Карма: +1

Я так и сделал, добавил таблицу cot_ls_districts (`district_id`, `district_country`, `district_region`, `district_name`), переделал `cot_ls_cities` (`city_id`, `city_country`, `city_district`, `city_name`) и `cot_ls_regions` (`region_id`, `region_country`, `region_name`).

Переделал все функции порядка запроса и js.

Сообщения: 8

Cmsworks

Булат
#14/19.02.2017 12:13
0

Администраторы

Карма: +683

Глянул мельком ваш код. Есть места, где js-не дописан, чтобы выбирать районы и города.

Также в файле locationselector.functions.php не та функция для получения списка районов в зависимости от региона. 

Вместо этого:

$district = ($region == '' || count($regions) < 2) ? 0 : $district;
$districts = (!empty($region)) ? cot_getregions($region) : array();
$districts = array(0 => $L['select_district']) + $districts;
$disabled = (empty($region) || count($districts) < 2) ? 'disabled="disabled" ' : '';
$district_selectbox = cot_selectbox($district, $name . '[district]', array_keys($districts), array_values($districts), 
			false, $disabled . 'class="locselectregion form-control" id="locselectregion"');

Надо:

$district = ($region == '' || count($regions) < 2) ? 0 : $district;
$districts = (!empty($region)) ? cot_getdistricts($region) : array();
$districts = array(0 => $L['select_district']) + $districts;
$disabled = (empty($region) || count($districts) < 2) ? 'disabled="disabled" ' : '';
$district_selectbox = cot_selectbox($district, $name . '[district]', array_keys($districts), array_values($districts), 
			false, $disabled . 'class="locselectdistrict form-control" id="locselectdistrict"');

 

Аватарку поставьте нормальную...

Добавлено 2 минуты спустя:

В файле locationselector.ajax.php не добавлено условие для выбора района в зависимости от региона и города в зависимости от района.

Сообщения: 2416

Опытный веб-разработчик, фрилансер.
Разрабатываю сайты любой сложности на профессиональных фреймворках.

------

Почта для связи: developer@cmsworks.ru

afftar

#15/04.08.2017 00:23
0

Аватар

Пользователи

Карма: 0

Привет всем. вы тут говорили про сортировку городов по алфавиту, никто не нашел решение ?

Города на Английском, в админке ве по порядку, по алфавиту, а на сайте в том порядке в котором были добавлены в базу.

я пытался в locationselector.functions.php прикрутить к запросу ORDER by city_name ASC, но безуспешно.

может у когонибудь есть идеи ? а то так очень не удобно получается.

 

Заранее спасибо.

Сообщения: 15

CrazyFreeMan

Ярослав
#16/04.08.2017 12:09
0

Модераторы

Карма: +317

Проблемма на стороне фронтенда. Особенности JavaScript, он сортирует массив по своему, потому и не получится ордером в запросе к БД решить проблему.

Сообщения: 1248

Cmsworks

Булат
#17/04.08.2017 14:19
0

Администраторы

Карма: +683

#15905 CrazyFreeMan:

Проблемма на стороне фронтенда. Особенности JavaScript, он сортирует массив по своему, потому и не получится ордером в запросе к БД решить проблему.

Как это?)

 

Там итак сортировка городов по алфавиту. Может сами что-то переделали? Какая страна?

 

Сообщения: 2416

Опытный веб-разработчик, фрилансер.
Разрабатываю сайты любой сложности на профессиональных фреймворках.

------

Почта для связи: developer@cmsworks.ru

afftar

#18/04.08.2017 14:53
0

Аватар

Пользователи

Карма: 0

Канада. когда была база на Русском, там все было пучком, все по алфавиту, после того как залил города на инглище, стало в том порядке, в котором заливалось в базу, хотя в админке все гуд.

Добавлено 11 минут спустя:

и еще одно, при регистрации, если человек выбрал регион и город, но допустил ошибку в одном из полей, при перезагрузке страницы, регион остается а поле города сбрасывается и человек не может его выбрать, нужно выбрать другой регион а потом опть тот что нужно чтобы города подгрузились, а пользователи этого не знают и регистрируются с быранным только регионом, не подскажите как исправить ?

Сообщения: 15

Cmsworks

Булат
#19/04.08.2017 21:04
+1

Администраторы

Карма: +683

Видимо некорректно работает php функция asort()

Сообщения: 2416

Опытный веб-разработчик, фрилансер.
Разрабатываю сайты любой сложности на профессиональных фреймворках.

------

Почта для связи: developer@cmsworks.ru

afftar

#20/05.08.2017 02:38
0

Аватар

Пользователи

Карма: 0

#15911 Cmsworks:

Видимо некорректно работает php функция asort()

Гениально, огромное спасибо :) заменил функцию asort() на sort() и все чики пики!!!

 

А со второй проблемкой поможите плиз ?

Добавлено 1 час спустя:

Блин, не долго радовался :(

после этого изменения, все красиво и по порядку, но когда добавляю проект, то город не сохраняется.

Сообщения: 15

Cmsworks

Булат
#21/05.08.2017 08:18
0

Администраторы

Карма: +683

#15912 afftar:

Гениально, огромное спасибо :) заменил функцию asort() на sort() и все чики пики!!!

Нельзя так, ибо sort() сортирует без сохранения ключей массива. 

Сообщения: 2416

Опытный веб-разработчик, фрилансер.
Разрабатываю сайты любой сложности на профессиональных фреймворках.

------

Почта для связи: developer@cmsworks.ru

afftar

#22/05.08.2017 22:14
0

Аватар

Пользователи

Карма: 0

Перепробовал все функции asort() никакого результата, разве что если я о чемто не знаю. :(

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

Плиз помогите, если нужно заплатить за решение проблемы, я заплачу, главное проблему решить.

Сообщения: 15

foxss

#23/06.08.2017 01:44
0

Пользователи

Карма: +1

может стоит задействовать https://cmsworks.ru/catalog/plugins/sxgeoip-base-v2

Сообщения: 51

CrazyFreeMan

Ярослав
#24/07.08.2017 13:03
0

Модераторы

Карма: +317

Говорю тут проблема не в PHP  изучайте как работает array js :) 

Сообщения: 1248

afftar

#25/08.08.2017 04:21
0

Аватар

Пользователи

Карма: 0

Спасибо за советы.

sxgeoip - не подойдет, так как проект не обязательно будет в том же месте где и клиент находится, а если по IP будет просто узнаватся город, то он будет браться из того же не отсортированного списка.

Ярослав (Тёска :0) ) - Я пересмотрел за последние дни уже столько кода что у меня в глазах двоится :)

я понимаю что тут в functions.php

	$cities = array();
	foreach ($cot_lf_locations as $lcountry => $regs)
	{
		if (array_key_exists($region, $regs))
		{
			$country = $lcountry;
			break;
		}
	}
	
	foreach ($cot_lf_locations[$country][$region] as $id => $name)
	{
		$cities[$id]= $name;
	}
	asort($cities);
	return $cities;
}

Нужно дописать обращение к полю city_name и в дальнейшем по нему отсортировать, но выдаваться пользователю оно все равно должно по id, иначе работать не будет.

А с array js тоже сегодня пол дня игрался, ничего не получилось.

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

Сообщения: 15