Город и пол при регистрации для 1.10

+32
3.43K
Всем привет!
Понадобилось на своём проекте при регистрации добавить выбор пола и ввод города.
Вот простой способ. Может кому будет нужно.


1. Открываем файл components/registration/frontend.php

и после:
  1. $item['icq'] = preg_replace('/([^0-9])/ui', '', cmsCore::request('icq', 'str', ''));
вставляем:
  1. $item['gender'] = cmsCore::request('gender', 'str', '');
  2. $item['city'] = cmsCore::request('city', 'str', '');
2. Открываем файл шаблона templates/ваш_шаблон/components/com_registration.tpl

и в нужном вам месте вставляем:
  1. <tr>
  2. <td valign="top" class="">
  3. <div><strong>Пол:</strong></div>
  4. <div><small>Укажите Ваш пол</small></div>
  5. </td>
  6. <td valign="top">
  7. <select name="gender" id="gender" style="width:305px">
  8. <option value="f" {if $gender=='f'} selected {/if}>Женский</option>
  9. <option value="m" {if $gender=='m'} selected {/if}>Мужской</option>
  10. </select>
  11. <span class="regstar">*</span>
  12. </td>
  13. </tr>
  14.  
  15. <tr>
  16. <td valign="top" class="">
  17. <div><strong>Город:</strong></div>
  18. <div><small>Из какого Вы города</small></div>
  19. </td>
  20. <td valign="top">
  21. <input name="city" type="text" class="text-input" id="city" value="{$item.city}" style="width:300px"/>
  22. <span class="regstar">*</span>
  23. </td>
  24. </tr>
+1
Петр Петр 11 лет назад #
как раз думал насчет этого!
как бороться с кракозябками?
+1
Петр Петр 11 лет назад #
добавить в /languages/ru/components/registration.php
Код PHP:
  1. $_LANG['POL'] ='Пол';
  2. $_LANG['POL2'] ='Укажите ваш пол';
  3. $_LANG['M'] ='Мужской';
  4. $_LANG['G'] ='Женский';
  5. $_LANG['C'] ='Город';
  6. $_LANG['C2'] ='Из какого Вы города';
в templates/ваш_шаблон/components/com_registration.tpl
Код PHP:
  1. <tr><td valign="top" class="">
  2. <div><strong>{$LANG.POL}:</strong></div>
  3. <div><small>{$LANG.POL2}</small></div>
  4. </td>
  5. <td valign="top">
  6. <select name="gender" id="gender" style="width:305px">
  7. <option value="f" {if $gender=='f'} selected {/if}>{$LANG.G}</option>
  8. <option value="m" {if $gender=='m'} selected {/if}>{$LANG.M}</option>
  9. </select>
  10. <span class="regstar">*</span>
  11. </td></tr>
+1
Петр Петр 11 лет назад #
все равно что то не то, нужно чтобы был выбор "не указан, мужской, женский"
+1
CROSS &#12484; CROSS ツ 11 лет назад #
как бороться с кракозябками?
Обычно они бывают из-за несоответствия кодировки
+1
EVV EVV 11 лет назад #
Добавьте еще:

Код PHP:
  1. <option value="0" {if $gender=='0'} selected {/if}>Не указан</option>
+1
CROSS &#12484; CROSS ツ 11 лет назад #
У меня есть это))
0
Димитриус Димитриус 11 лет назад #
Открываете notepad ++ кодировки->преобразовать в UTF-8 без BOM
+1
CROSS &#12484; CROSS ツ 11 лет назад #
Решение уже было для 1.9! Красивое решение выбора города в профиле

Выбор Пола при регистрации

все рабочие! последний писал сам!
+1
CROSS &#12484; CROSS ツ 11 лет назад #
EVV, простите? а как все изменения сохраняются в базе? Не вижу запроса?! hoho
+2
lokanaft lokanaft 11 лет назад #
Всё что есть в $item само сохраняется.
+1
EVV EVV 11 лет назад #
да, сохраняются
+1
Димитриус Димитриус 11 лет назад #
Кому интересно. вот еще моё решение: http://instantcms.ru/blogs/moi-put/hak-plagin-vybora-avtara-pri-registraci-vybor-goroda.html
+1
EVV EVV 11 лет назад #
А то же самое без аватара можно переделать?
0
Димитриус Димитриус 11 лет назад #
Конечно можно
+1
EVV EVV 11 лет назад #
Если переделаете и дадите ссылку, буду очень благодарен)
0
Димитриус Димитриус 11 лет назад #
Там переделовать, то:
убрать проверку на аватар и сам плагин...
0
EVV EVV 11 лет назад #
Попробовал сделать. Выбираешь страну, потом регион, а города не грузит.
установил плагин и убрал код. Что может быть?

Код PHP:
  1. //Хак загрузки аватара начало
  2. $p_load_avatar = $inCore->getEventPlugins('LOAD_AVATAR');
  3. if (sizeof($p_load_avatar)){
  4. $gender = $inCore->request('gender', 'str');
  5. $city = $inCore->request('city', 'str');
  6. if(!$gender){
  7. cmsCore::addSessionMessage('Вы не указали свой <b>Пол</b>!', 'error'); $errors = true;}
  8. if(!$city){
  9. cmsCore::addSessionMessage('Вы не указали город!', 'error'); $errors = true;}
  10. If ($gender AND $city){
  11. $realfile = $_FILES['picture']['name'];
  12. $path_parts = pathinfo($realfile);
  13. $ext = strtolower($path_parts['extension']);
  14. //Проверяем аватар
  15. if ($realfile) {
  16. if ($ext != 'jpg' and $ext != 'jpeg' and $ext != 'gif' and $ext != 'bmp' and $ext != 'png'){
  17. cmsCore::addSessionMessage('Ошибка! Разрещенные расширения для Аватара: <b>.jpg</b> <b>.jpeg</b> <b>.gif</b> <b>.bmp</b> <b>.png</b>', 'error'); $errors = true;
  18. }
  19. }
  20. }
  21. }
  22. //Хак загрузки аватара конец
+1
БИБАБО БИБАБО 11 лет назад #
Кто в формах разбирается подскажите как сделать чтобы город уже стоял по умолчанию....
Нужно, чтобы при регистрации в форме уже было написано Москва, если нужно то пользователь сам меняет на нужный...

Не пойму как совмесить в value= Москва и {$item.city}
+1
kaless kaless 11 лет назад #
Поддерживаю!
+1
CROSS &#12484; CROSS ツ 11 лет назад #
Где-то в блогах или форуме была тема! Определение города по ip-адресу! Уже реализованно! Искать надо...давно тут читал
+1
БИБАБО БИБАБО 11 лет назад #
kaless, все просто)))
изминения в одной строчке:

<input name="city" type="text" class="text-input" id="city" value="Мой город" />
проверил работает...

PS изначально так и делал, только почему то не работало), сейчас еще раз попробывал заработало))))

PSS CROSS &#12484; нахрена всем наминусовал в комментах?:)
0
kaless kaless 11 лет назад #
спасибо, очень нужный хак)
+3
lokanaft lokanaft 11 лет назад #
Везде, где мог, весёлого минусатора обломал.
0
Fuze Fuze 11 лет назад #
Везде, где мог, весёлого минусатора обломал.
малых годов лицо мужского пола балуется)
он уже получил предупреждение

прочие господа, беспорядочно минусующие: мне же глянуть user_id в базе не сложно joke
0
Димарио Димарио 11 лет назад #
А если я в com_registration.tpl вставил:
Код PHP:
  1. <tr>
  2. <td valign="top" class=""><strong>Пол:</strong></td>
  3. <td valign="top">
  4. <select name="gender" id="gender" style="width:307px">
  5. <option value="">Выберите пол</option>
  6. <option value="m">Мужской</option>
  7. <option value="f">Женский</option>
  8. </select>
  9. <span class="regstar">*</span>
  10. </td>
  11. </tr>
И мне нужно в файле frontend.php что то дописать, что бы получить если человек при регистрации забыл выбрать пол и у него остался <option value="">Выберите пол</option>, то ему при попытки зарегиться, выдало бы ошибку что он не указал Пол. Нужно РЕШЕНИЕ
0
Димарио Димарио 11 лет назад #
Это было бы более красивое решение
+1
EVV EVV 11 лет назад #
добавь перед
Код PHP:
  1. // проверяем логин
вот это
Код PHP:
  1. $gender = $inCore->request('gender', 'str');
  2. if(!$gender){
  3. cmsCore::addSessionMessage('Вы не указали свой <b>Пол</b>!', 'error'); $errors = true;}
0
Димарио Димарио 11 лет назад #
Оказывается проблема не решена sad После регистрации просто пол не показывает, который я выбрал при регистрации. Но если мы не выбрали пол то показывает что пол не выбран и это хорошо. Буду копаться, если найду конечное решение, отпишусь!
0
Умные Интернет Разработки Умные Интернет Разработки 11 лет назад #
а не легче убрать
Код PHP:
  1. <option value="">Выберите пол</option>
это приведет к тому, что он будет обязан выбрать пол.
0
Димарио Димарио 11 лет назад #
Походу легче, но так будет правильнее
0
Димарио Димарио 11 лет назад #
Вот как бывает, когда долго сидишь за компьютером, делаешь то что не нужно вообще и только усложняет себе же жизнь, я все осмыслил и понял что лучшее даже без этого вывода ошибки если он не выбрал, лучшее настоять на выборе как написано в самом начале.. Девушкам не придется выбирать другое, а парням будет стыдно быть с женским полом и он сменит его на другой. Просто кто воспользовался данным способом, советую им в com_users_edit_profile убрать "<option value="">Выберите пол</option>" и поменять местами это "<option value="m">Мужской</option>" с этим "<option value="f">Женский</option>". И будет лучше и логичнее!
0
Димарио Димарио 11 лет назад #
замените это
Код PHP:
  1. <select name="gender" id="gender" style="width:306px">
этим
Код PHP:
  1. <select name="gender" id="gender" class="text-input" style="width:306px">
Тем самым дизайн поля будет такой же, как и остальные :)
0
pingvin pingvin 11 лет назад #
интересно это всё...
а как создать любое поле в форме регистрации чтобы его содержимое потом выводилось в профиле пользователя?
0
Петр Петр 11 лет назад #
в конструкторе форм
-1
Константин Г. Константин Г. 11 лет назад #
лучше скажите как сделать чтобы пользователь заполнил, а в профиле тока админ видел или человек с определеным ником.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.