Красивое решение выбора города при Регистрации

+51
2.48K
У нас уже было Красивое решение выбора города в профиле, теперь оно у нас будет и при регистрации:

1. Качаем Архив с базой от Madmax http://instantcms.ru/users/files/download613.html;
2. Распаковываем архив в корень своего сайта и через phpmyadmin вставить дамп базы в свою базу данных сайта;
3. Открываем файл /templates/ВАШ_ШАБЛОН/components/com_registration.tpl и добавляем туда вверху запись:
  1. {add_js file='components/users/js/city.js'}
  2. {literal}
  3. <style>
  4. .region, .city {display:none}
  5. strong {display:block;width:100px}
  6. div {margin-bottom:3px}
  7. </style>
  8. {/literal}
В любое желаемое место, в этом же файле, этот код:

  1. <tr>
  2. <td valign="top" class="">
  3. <div><strong>Город</strong></div>
  4. <div><small>Выберите место своего рождения или пребывания</small></div>
  5. </td>
  6. <td valign="top" class="">
  7. <div>
  8. <strong>Страна:</strong>
  9. <select name="country" id="country" type=hidden>
  10. <option value="" selected>Выберите страну</option>
  11. </select>
  12. </div>
  13. <div class="region">
  14. <strong>Регион:</strong>
  15. <select name="region" id="region">
  16. <option value="">Выберите регион</option>
  17. </select>
  18. </div>
  19. <div class="city">
  20. <strong>Город:</strong>
  21. <select name="city" id="city">
  22. <option value="">Выберите город</option>
  23. </select>
  24. </div>
  25. </td>
  26. </tr>
4. Открываем файл /components/registration/frontend.php находим строчку:
  1. // Проверяем каптчу
  2. $code = $inCore->request('code', 'str');
и выше нее добавляем:
  1. $city = $inCore->request('city', 'str');
в результате получаем:
  1. $city = $inCore->request('city', 'str');
  2. // Проверяем каптчу
  3. $code = $inCore->request('code', 'str');
Потом находим запись:
  1. if ($new_user_id){
  2.  
  3. $usr = $inDB->fetch_assoc($result);
  4. $sql = "INSERT INTO cms_user_profiles (user_id, city, description, showmail, showbirth, showicq, karma, imageurl, allow_who)
  5. VALUES (".$new_user_id.", '', '', '0', '0', '1', '0', '', 'all')";
  6. $inDB->query($sql) ;
  7.  
  8. $user_array['id'] = $new_user_id;
  9. cmsCore::callEvent('USER_REGISTER', $user_array);
  10.  
  11. }
И заменяем ее на:
  1. if ($new_user_id){
  2.  
  3. $usr = $inDB->fetch_assoc($result);
  4. $sql = "INSERT INTO cms_user_profiles (user_id, city, description, showmail, showbirth, showicq, karma, imageurl, allow_who)
  5. VALUES (".$new_user_id.", '$city', '', '0', '0', '1', '0', '', 'all')";
  6. $inDB->query($sql) ;
  7.  
  8. $user_array['id'] = $new_user_id;
  9. cmsCore::callEvent('USER_REGISTER', $user_array);
  10.  
  11. }
5. Кто хочет сделать выбор города обязательным, в файле /components/registration/frontend.php после этого кода:
  1. $city = $inCore->request('city', 'str');
добавляем этот:
  1. if(!$city) {
  2. $msg .= 'Не указан <b>Город</b>!
  3. ';
  4. }
.
Вот и все!!! Все благодарности за базу и идею к Madmaxу.
Кому нужно вот Демо
0
Blit Blit 13 лет назад #
Спасибо, уже собирался это делать.
0
Эдька Эдька 13 лет назад #
посмотрел пример! вот хотелось когда выбрал страну, далее ждешь пока загрузится область что бы писал "подождите" а там "выберите"
0
Эдька Эдька 13 лет назад #
http://vpobede.com/registration проблема кажись с кодировкой
0
Patriot Patriot 13 лет назад #
Такая же проблема наблюдалась и у меня...Кодирнул в UTF-8 и было мне счастье! )
+1
DS Soft DS Soft 13 лет назад #
При импорте в базу выбери кодировку cp1251
0
Эдька Эдька 13 лет назад #
у меня нет такой кодировки при загрузке((
0
Blit Blit 13 лет назад #
Вставляй не через окно "sql" а через "Импорт"
0
bawarec bawarec 13 лет назад #
у тебя кстати верстка меню немного поползла, да собственно говоря как и у меня после всего вышеперечисленного
0
bawarec bawarec 13 лет назад #
нет выбора страны и немного сползает верстка шаблона
http://www.bmwts.ru/registration
0
bawarec bawarec 13 лет назад #
опытным путем выяснил что верстка сползает при выполнении 3го пункта данной инструкции, помогите пожалуйста исправить этот баг
+1
DS Soft DS Soft 13 лет назад #
В 3ем пункте обязательно подключить city.js и стиль
Код PHP:
.region, .city {display:none}
а это под свой шаблон меняйте или удалите:
Код PHP:
strong {display:block;width:50px}
div {margin-bottom:3px}
У вас на сайте http://www.bmwts.ru/registration не подключен city.js
0
bawarec bawarec 13 лет назад #
Спасибо, с версткой разобрался а вот со скриптом остаются вопросы ...
В сотый раз перепроверил com_registration.tpl - все верно, но все равно не работает. Игрался с правами на city.js эффект тот же
+1
DS Soft DS Soft 13 лет назад #
Проверьте какой у вас в БД префикс стоит у инстант CMS. И переименуйте таблицы cms_Geo_Cities cms_geo_countries cms_geo_regions вместо cms_ поставьте свой префикс
0
flighteasy flighteasy 13 лет назад #
Видимо теже проблемы! При utf8 вместо городов и стран вопросительные знаки. http://avpopov.ru/registration
а 1251 ВЫДАЕТ ОШИБКУ
0
flighteasy flighteasy 13 лет назад #
0
EXID EXID 13 лет назад #
Спасибо, классно!
0
russianru russianru 13 лет назад #
у меня фа;л в базу совсем несодится ошибку пишит
0
russianru russianru 13 лет назад #
Ошибка
0
Алфей Алфей 13 лет назад #
Спасибо, все работает!!!
Вопрос на засыпку: Кто нибудь может подсказать, как сделать чтобы в профиле отображалось страна и регион!?
0
Patriot Patriot 13 лет назад #
У меня с кодировкой всё в норме, но сейчас заметил другую проблему. Зарегил аккаунт и после регистрации город в профиле не появился... Через настройки профиля город установился, все нормально, а вот при регистрации не хочет он светиться. ) Где копать подскажите плиз?!
0
DS Soft DS Soft 13 лет назад #
4й пункт данной инструкции выполнял?
Можешь посмотреть на http://даг05.рф/registration зарегистрируйся и зайди в свой профиль все работает.
0
Patriot Patriot 13 лет назад #
Да,выполнял. Но почему то не работает...
0
Ingvarruss Ingvarruss 13 лет назад #
На 1.8 всё отлично работает, спасибо. Вопрос, можно ли такое сделать в доске объявлений?
0
Ne OS Ne OS 13 лет назад #
+++
Установил всё пашет... только вот вопрос:
Как сделать при регистрации выбор города обязательным?
+1
DS Soft DS Soft 13 лет назад #
В /components/registration/frontend.php после этого:
Код PHP:
$city = $inCore->request('city', 'str');
Добавить это:
Код PHP:
if(!$city) {
  $msg  .= 'Не указан <b>Город</b>!<br/>';
}
0
Ilekor Ilekor 13 лет назад #
Только вошел, что бы дать ответ, а вы опередили
Код PHP:
$city = $inCore->request('city', 'str');
if(!$city){
 $msg .= 'Выбирете ваш город!<br/>';
        }
+1
Ilekor Ilekor 13 лет назад #
Что бы добавить звездочки к полям выбора города, откройте /templates/ВАШ_ШАБЛОН/components/com_registration.tpl
Вместо
Код PHP:
<tr>
	<td valign="top" class="">
		<div><strong>Город</strong></div>
		<div><small>Выберите место своего рождения или пребывания</small></div>
	</td>
	<td valign="top" class="">
		<div>
			<strong>Страна:</strong>
			<select name="country" id="country" type=hidden>
				<option value="" selected>Выберите страну</option>
			</select>
		</div>
		<div class="region">
			<strong>Регион:</strong>
			<select name="region" id="region">
				<option value="">Выберите регион</option>
			</select>
		</div>
		<div class="city">
			<strong>Город:</strong>
			<select name="city" id="city">
				<option value="">Выберите город</option>
			</select>
		</div>
	</td>
</tr>
Вставьте

Код PHP:
                <tr>
	<td valign="top" class="">
		<div><strong>Город</strong></div>
		<div><small>Выберите место своего рождения или пребывания</small></div>
	</td>
	<td valign="top" class="">
		<div>
			<strong>Страна:</strong>
			<select name="country" id="country" type=hidden>
				<option value="" selected>Выберите страну</option>
			</select>
            <span class="regstar">*</span>
		</div>
		<div class="region">
			<strong>Регион:</strong>
			<select name="region" id="region">
				<option value="">Выберите регион</option>
			</select>
            <span class="regstar">*</span>
		</div>
		<div class="city">
			<strong>Город:</strong>
			<select name="city" id="city">
				<option value="">Выберите город</option>
			</select>
            <span class="regstar">*</span>
		</div>
	</td>
</tr>
0
Ne OS Ne OS 13 лет назад #
Ну DagStudent как всегда в нужное время на нужном месте!
llekor: ты опередил следующий вопрос! ))

++
0
DenzeL DenzeL 13 лет назад #
Все сделал по инструкции, Страну выбирает, регион выбирает, а при выборе города, пишет выбрать город и все, а городов не видно.. подскажите где искать плиз.
0
Leo Leo 13 лет назад #
Аналогичная проблема бьюсь уже третий день :)
0
DenzeL DenzeL 13 лет назад #
У меня такое ощущение что это у всех, зашел на сайт к пареньку по ссылке наверху, http://www.bmwts.ru/registration у него работает, пообщался через личку, говорит тоже самое было, и что заказывал доработку у спеца, дал мне аську.. я туда написал,но пока ни ответа ни привета.. Кто смог исправить молчит как в танке.. Лео может скинемся по 50, и назначим приз тому кто поможет а? :)))
0
Leo Leo 13 лет назад #
да не вопрос, с разработчиком общался в личке, пришли к выводу, что у меня возможно конфликтует с каким-то скриптом :). дальше дела не пошли :(
0
DenzeL DenzeL 13 лет назад #
Кто поможет? кому 100 ка нужна?
0
RooKee RooKee 13 лет назад #
логичнее было бы брать город как компонент карты, т.е. автоматически =)
0
Alex Broun Alex Broun 13 лет назад #
Если в списке кодировок нет cp1251, а utf-8 пишет вместо слов "?????????", то какую кодировку выбрать?
0
Анатолий Анатолий 13 лет назад #
версия 1.9, итог внедрения: сделал все по инструкции, регистрация проходит успешно, но в новых пользователях не появляется новый зарегистрированный и при попытке зайти к нему в профиль выдает ошибку 404!!! Вообщем, не пошел этот хак на 1.9 :(
0
Ingvarruss Ingvarruss 12 лет назад #
Скорее всего вам нужно разблокировать пользователя в админке, поскольку наверное стоит активация по e-mail.
P.S. На 1.9 всё нормально работает.
0
Rossoman Rossoman 12 лет назад #
У меня отлично работает под 1.9
Ссылку кинул в личку
0
Def Def 12 лет назад #
а как сделать, чтобы по умолчанию предлагал нужный мне город, т.к сайт больше расчитан на отдельный регион, откуда чаще и регаются?
0
Patriot Patriot 12 лет назад #
Нужно сделать обязательным к заполнению, поле выбор города. Подскажите решение плиз!
0
Patriot Patriot 12 лет назад #
Кто нибудь подскажет?
+1
• Mike • • Mike • 12 лет назад #
0
Patriot Patriot 12 лет назад #
• Mike • спасибо! Что то я пропустил в комментах решение.
0
GarikKR GarikKR 12 лет назад #
После регистрации город в профиле не появился... Через настройки профиля город установился, все нормально, а вот при регистрации не хочет он светиться. ) Где копать подскажите плиз?!
0
GarikKR GarikKR 12 лет назад #
Все решил проблему
0
vpugachev vpugachev 12 лет назад #
Спасибо очень нужное решение. Есть несколько вопросов:
1) Как сделать, что бы при неверном заполнении какого-либо поля и последующим сообщением об этом на вновь открывшейся странице регистрации данные о выбранном городе сохранялись.

2) Можно ли рядом с полем выбора города, например под фразой "Выберите место своего рождения или пребывания", разместить несколько городов при нажатии на которые автоматом выбирался этот город?

3) Можно ли выполнить какой то sql-запрос, что бы у уже зарегистрированных пользователей на сайте, у которых не выбран город он изменился на нужный?
+1
Ne OS Ne OS 12 лет назад #
Пункт 3) было бы неплохо реализовать!
0
stasis stasis 12 лет назад #
Поставил на 1.9... отлично работает
СПАСИБО!
0
Dim@sik Dim@sik 11 лет назад #
А вот интерестно на 1,10,1 работать будет ? Ктонибуть пробывал?
0
Ingvarruss Ingvarruss 11 лет назад #
У меня практически получилось, только один пункт сделать не смог, в /components/registration/frontend.php этого куска кода нет уже.
if ($new_user_id){

$usr = $inDB->fetch_assoc($result);
$sql = "INSERT INTO cms_user_profiles (user_id, city, description, showmail, showbirth, showicq, karma, imageurl, allow_who)
VALUES (".$new_user_id.", '', '', '0', '0', '1', '0', '', 'all')";
$inDB->query($sql) ;

$user_array['id'] = $new_user_id;
cmsCore::callEvent('USER_REGISTER', $user_array);

Еще от автора

DS Twitter Sender
Компонент DS Twitter Sender для Instant CMS 1.10.3.
Виджет Табло для яндекс браузера
Модуль «Виджет Табло для яндекс браузера» создан для простой генерации манифеста для виджета Табло в Яндекс браузере.
DS Music v1.0.3 FREE
DS Music v1.0.3 FREE (бывшая Instant Music v1.0) для InstantCMS v1.10.3
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.