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

подскажите

 
Посетитель
small user social cms
Медаль
Сообщений: 146
Собственно, пользователь указывает свой город, так?
А в его личном профиле (странице) он не указывается! Нелогично, согласитесь? да и неудобно...

Подскажите что подправить, чтобы город стал показываться на страничке пользователя,, где "Интересы" и все прочее. ?
Наверняка там всего-то пару-тройку строк добавить в код, и всех делов.
Буду очень благодарен за скорую подсказку!
VPS от 7.65$ - Включен ISP Manager, 256Ram, 500Mhz CPU и 5Gb - использую уже почти два года.
Посетитель
no cms avatar
Медаль
Сообщений: 98
Это делается через конструктор форм
Реклама
cms
Sometime CMS Community
Посетитель
no avatar
Медаль
Сообщений: 185
В файле: /templates/_default_/components/com_users_profile.tpl
найдите(строка 99):
Код PHP:
  1.  
  2. <div class="value">{$usr.fregdate}</div>
  3. </div>
  4.  
и ниже добавьте:
Код PHP:
  1.  
  2. <div class="field">
  3. <div class="title">Город:</div>
  4. <div class="value">{$usr.city}</div>
  5. </div>
Редактировалось: 2 раз (Последний: 22 апреля 2009 в 12:54)
Посетитель
small user social cms
Медаль
Сообщений: 146
Спасибо! Сделал, город теперь показывается в профиле.
VPS от 7.65$ - Включен ISP Manager, 256Ram, 500Mhz CPU и 5Gb - использую уже почти два года.
Посетитель
small user social cms
Медаль
Сообщений: 329
А как это поле в поиске пользователей сделать активным?
Посетитель
small user social cms
Медаль
Сообщений: 146
В смысле, тэг(ссылку) на городе сделать? ? пока точно не знаю. Хотя конечно безусловно можно.
Редактировалось: 1 раз (Последний: 26 апреля 2009 в 01:56)
VPS от 7.65$ - Включен ISP Manager, 256Ram, 500Mhz CPU и 5Gb - использую уже почти два года.
Посетитель
small user social cms
Медаль
Сообщений: 194
А как сделать, чтобы при регистрации нужно было обязательно вводить свой город иначе не регистрировать?
Пицца Челентано Алчевск
Модератор
small user social cms
МедальМедаль за отзывчивостьКубок зрительских симпатий
Сообщений: 435
По вопросу смею предположить что у Вас не дефолтный шаблон.
Надо сделать так:
Код PHP:
  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
Посетитель
small user social cms
Медаль
Сообщений: 194
Александр:

По вопросу смею предположить что у Вас не дефолтный шаблон.
Надо сделать так:
Код PHP:
  1.  
  2. {if $usr.city}
  3.  
  4. {$LANG.CITY}:
  5. {$usr.city}
  6.  
  7. {/if}
  8.  
Так и город будет выводиться, и поиск по нему заработает. laugh

В файле com_users_profile.tpl такая запись есть на 175 строчке. В том-то и дело, что кто вводит при регистрации свой город, того город в профиле выводиться, а кто город не пишет естественно и город не высвечивается. А хотелось бы чтобы именно при регистрации вводить город нужно было обязательно, чтобы без этого не регистрировало пользователей, а сейчас можно вводить, а можно и не вводить свой город.
Пицца Челентано Алчевск
Модератор
small user social cms
МедальМедаль за отзывчивостьКубок зрительских симпатий
Сообщений: 435
Тут вообще нет проблем.
Предупреждаю сразу. Переписывай правильно, у меня все работает.
Ошибок нет. Проверял специально!

Поехали....

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

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

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

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

Код PHP:
  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

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

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

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

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

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

Код 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.  

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

Код PHP:
  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')";



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

Код PHP:
  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')";


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

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

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

Код PHP:
  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); }

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

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

Код PHP:
  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');

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

Посетитель
small user social cms
Медаль
Сообщений: 194
Александр:
Все. Элементарно...
Ну да, впринципе, как два пальца обасфальт laugh Спасибо, попробую.
Пицца Челентано Алчевск
Посетитель
small user social cms
Медаль
Сообщений: 194
Юрий:

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

Да, спасибо всё работает как надо, вы молодец, только единственное я не пойму для чего нужно это
Код PHP:
  1. $_LANG['CITY_ERR_LEN'] ='Что-то город подозрительный! Не более 20 символов!';
.?
Всем советую сделать это дополнение, а также внедрить это в сборку.
Редактировалось: 2 раз (Последний: 7 июля 2010 в 15:53)
Пицца Челентано Алчевск
Модератор
small user social cms
МедальМедаль за отзывчивостьКубок зрительских симпатий
Сообщений: 435
Это своеобразная защита от дурака! Если город будет очень длинный (более 20 символов) выдаст ошибку.
Можно это и исключить, однако я старался приблизиться к функционалу движка, а в редактировании профиля (мои настройки) есть такая проверка. Поэтому более правильно будет так. stuk
Модератор
small user social cms
МедальМедаль за отзывчивостьКубок зрительских симпатий
Сообщений: 435
Кстати текст просто тестовый, его можно изменить типа: "Слишком длинное название города."
Посетитель
small user social cms
Медаль
Сообщений: 146
Петропавловск-Камчатский, 24 символа
Редактировалось: 1 раз (Последний: 7 июля 2010 в 21:02)
VPS от 7.65$ - Включен ISP Manager, 256Ram, 500Mhz CPU и 5Gb - использую уже почти два года.
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.