Как вывести отбражение города пользователя в его профиль?

подскажите

#1 21 апреля 2009 в 16:07
Собственно, пользователь указывает свой город, так?
А в его личном профиле (странице) он не указывается! Нелогично, согласитесь? да и неудобно...

Подскажите что подправить, чтобы город стал показываться на страничке пользователя,, где "Интересы" и все прочее. ?
Наверняка там всего-то пару-тройку строк добавить в код, и всех делов.
Буду очень благодарен за скорую подсказку!
#2 22 апреля 2009 в 12:25
Это делается через конструктор форм
#3 22 апреля 2009 в 17:11
Спасибо! Сделал, город теперь показывается в профиле.
#4 22 апреля 2009 в 19:59
А как это поле в поиске пользователей сделать активным?
#5 23 апреля 2009 в 02:29
В смысле, тэг(ссылку) на городе сделать?? пока точно не знаю. Хотя конечно безусловно можно.
#6 5 июля 2010 в 16:46
А как сделать, чтобы при регистрации нужно было обязательно вводить свой город иначе не регистрировать?
#7 5 июля 2010 в 19:08
По вопросу смею предположить что у Вас не дефолтный шаблон.
Надо сделать так:
  1.  
  2. {if $usr.city}
  3. <div class="field">
  4. <div class="title">{$LANG.CITY}:</div>
  5. <div class="value"><a href="/users/city/{$usr.cityurl}">{$usr.city}</a></div>
  6. </div>
  7. {/if}
  8.  
Так и город будет выводиться, и поиск по нему заработает. laugh
#8 6 июля 2010 в 13:53


По вопросу смею предположить что у Вас не дефолтный шаблон.
Надо сделать так:

  1.  
  2. {if $usr.city}
  3.  
  4. {$LANG.CITY}:
  5. {$usr.city}
  6.  
  7. {/if}
  8.  
Так и город будет выводиться, и поиск по нему заработает. laugh

Александр

В файле com_users_profile.tpl такая запись есть на 175 строчке. В том-то и дело, что кто вводит при регистрации свой город, того город в профиле выводиться, а кто город не пишет естественно и город не высвечивается. А хотелось бы чтобы именно при регистрации вводить город нужно было обязательно, чтобы без этого не регистрировало пользователей, а сейчас можно вводить, а можно и не вводить свой город.
#9 6 июля 2010 в 20:45
Тут вообще нет проблем.
Предупреждаю сразу. Переписывай правильно, у меня все работает.
Ошибок нет. Проверял специально!

Поехали....

Добавим в языковой файл компонентами(languages\ru\components\registration.php) новые слова:

  1.  
  2. $_LANG['CITY'] ='Город';
  3. $_LANG['CITY_ERROR'] ='Введите город!';
  4. $_LANG['CITY_ERR_LEN'] ='Что-то город подозрительный! Не более 20 символов!';
  5.  

Откроем templates\_default_\components\com_registration.tpl

В нужном месте напшем

  1.  
  2. <tr>
  3. <td valign="top" class=""><strong>{$LANG.CITY}:</strong></td>
  4. <td valign="top" class="">
  5. <input name="city" id="city" type="text" size="30" value="{$city}"/>
  6. <span class="regstar">*</span>
  7. </td>
  8. </tr>
  9.  

Теперь поправим файл components\registration\frontend.php

Найдем такие строки

  1.  
  2. if ($do=='register'){
  3.  
  4. $inPage->setTitle($_LANG['REGISTRATION']);
  5.  
  6. $msg = '';
  7.  
там что-то еще...

где-нибудь после

  1.  
  2. if($inCore->inRequest('email')) {
  3. $email = $inCore->request('email', 'str', '');
  4. if (!eregi("^[a-z0-9\._-]+@[a-z0-9\._-]+\.[a-z]{2,4}\$", $email)){
  5. $msg .= $_LANG['ERR_EMAIL'].'<br/>';
  6. }
  7. }
  8.  

Добавим свои строчки:

  1.  
  2. if(!$inCore->request('city')){
  3. $msg .= $_LANG['CITY_ERROR'].'<br/>';
  4. } else {
  5.  
  6. if(strlen($inCore->request('city'))>=20){$msg .= $_LANG['CITY_ERR_LEN'].'<br/>';}
  7. else {$city = $inCore->request('city', 'str', '');}
  8. }
  9.  

И теперь поправим запрос

  1. //create advanced user profile
  2. if ($new_user_id){
  3.  
  4. $usr = $inDB->fetch_assoc($result);
  5. $sql = "INSERT INTO cms_user_profiles (user_id, city, description, showmail, showbirth, showicq, karma, imageurl, allow_who)
  6. VALUES (".$new_user_id.", '', '', '0', '0', '1', '0', '', 'all')";



Изменим чтоб было похоже на:

  1.  
  2. //create advanced user profile
  3. if ($new_user_id){
  4.  
  5. $usr = $inDB->fetch_assoc($result);
  6. $sql = "INSERT INTO cms_user_profiles (user_id, city, description, showmail, showbirth, showicq, karma, imageurl, allow_who)
  7. VALUES (".$new_user_id.", '$city', '', '0', '0', '1', '0', '', 'all')";


Ну и последний штрих!

Чтоб значение этого поля не сбрасывалось при ошибке (например пароли не совпали,
а город нормально введен — пусть страница обновится, но это поле не сбрасывать...)

Найдем в этом же файле чуток ниже строки

  1. $smarty = $inCore->initSmarty('components', 'com_registration.tpl');
  2. $smarty->assign('cfg', $cfg);
  3. if(isset($login)){ $smarty->assign('login', $login); }
  4. if(isset($nickname)){ $smarty->assign('nickname', $nickname); }

И втиснем одну строчку:

  1. if(isset($city)){ $smarty->assign('city', $city); }
Должно получиться ТАК!

  1. $smarty = $inCore->initSmarty('components', 'com_registration.tpl');
  2. $smarty->assign('cfg', $cfg);
  3. if(isset($login)){ $smarty->assign('login', $login); }
  4. if(isset($nickname)){ $smarty->assign('nickname', $nickname); }
  5. if(isset($realname1)){ $smarty->assign('realname1', $realname1); }
  6. if(isset($realname2)){ $smarty->assign('realname2', $realname2); }
  7. if(isset($email)){ $smarty->assign('email', $email); }
  8. if(isset($city)){ $smarty->assign('city', $city); }
  9. if(isset($icq)){ $smarty->assign('icq', $icq); }
  10. $smarty->display('com_registration.tpl');

Все. Элементарно...

#10 7 июля 2010 в 00:19

Все. Элементарно...

Александр
Ну да, впринципе, как два пальца обасфальт laughСпасибо, попробую.
#11 7 июля 2010 в 15:47


Все. Элементарно...

Александр
Ну да, впринципе, как два пальца обасфальт laughСпасибо, попробую.

Юрий

Да, спасибо всё работает как надо, вы молодец, только единственное я не пойму для чего нужно это
  1. $_LANG['CITY_ERR_LEN'] ='Что-то город подозрительный! Не более 20 символов!';
.?
Всем советую сделать это дополнение, а также внедрить это в сборку.
#12 7 июля 2010 в 20:27
Это своеобразная защита от дурака! Если город будет очень длинный (более 20 символов) выдаст ошибку.
Можно это и исключить, однако я старался приблизиться к функционалу движка, а в редактировании профиля (мои настройки) есть такая проверка. Поэтому более правильно будет так. stuk
#13 7 июля 2010 в 20:29
Кстати текст просто тестовый, его можно изменить типа: "Слишком длинное название города."
#14 7 июля 2010 в 21:02
Петропавловск-Камчатский, 24 символа
#15 7 июля 2010 в 21:58

Петропавловск-Камчатский, 24 символа


Да, блин, не подумал...
Ну смотри как убрать:

В файле components\registration\frontend.php поправить
  1.  
  2. if(!$inCore->request('city')){
  3. $msg .= $_LANG['CITY_ERROR'].'<br/>';
  4. } else {
  5.  
  6. if(strlen($inCore->request('city'))>=20){$msg .= $_LANG['CITY_ERR_LEN'].'<br/>';}
  7. else {$city = $inCore->request('city', 'str', '');}
  8. }
  9.  
$inCore->request(’city’))>=20 напиши 30, например или 35.

Или вообще отключить проверку:

  1.  
  2. if(!$inCore->request('city')){
  3. $msg .= $_LANG['CITY_ERROR'].'<br/>';
  4. } else {
  5. $city = $inCore->request('city', 'str', '');
  6. }
  7.  
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.