подскажите
А в его личном профиле (странице) он не указывается! Нелогично, согласитесь? да и неудобно...
Подскажите что подправить, чтобы город стал показываться на страничке пользователя,, где "Интересы" и все прочее. ?
Наверняка там всего-то пару-тройку строк добавить в код, и всех делов.
Буду очень благодарен за скорую подсказку!
Надо сделать так:
{if $usr.city} <div class="field"> <div class="title">{$LANG.CITY}:</div> <div class="value"><a href="/users/city/{$usr.cityurl}">{$usr.city}</a></div> </div> {/if}
По вопросу смею предположить что у Вас не дефолтный шаблон.
Надо сделать так:
Так и город будет выводиться, и поиск по нему заработает.
{if $usr.city} {$LANG.CITY}: {$usr.city} {/if}
В файле com_users_profile.tpl такая запись есть на 175 строчке. В том-то и дело, что кто вводит при регистрации свой город, того город в профиле выводиться, а кто город не пишет естественно и город не высвечивается. А хотелось бы чтобы именно при регистрации вводить город нужно было обязательно, чтобы без этого не регистрировало пользователей, а сейчас можно вводить, а можно и не вводить свой город.
Предупреждаю сразу. Переписывай правильно, у меня все работает.
Ошибок нет. Проверял специально!
Поехали....
Добавим в языковой файл компонентами(languages\ru\components\registration.php) новые слова:
$_LANG['CITY'] ='Город'; $_LANG['CITY_ERROR'] ='Введите город!'; $_LANG['CITY_ERR_LEN'] ='Что-то город подозрительный! Не более 20 символов!';
Откроем templates\_default_\components\com_registration.tpl
В нужном месте напшем
<tr> <td valign="top" class=""><strong>{$LANG.CITY}:</strong></td> <td valign="top" class=""> <input name="city" id="city" type="text" size="30" value="{$city}"/> <span class="regstar">*</span> </td> </tr>
Теперь поправим файл components\registration\frontend.php
Найдем такие строки
if ($do=='register'){ $inPage->setTitle($_LANG['REGISTRATION']); $msg = '';
где-нибудь после
if($inCore->inRequest('email')) { $email = $inCore->request('email', 'str', ''); $msg .= $_LANG['ERR_EMAIL'].'<br/>'; } }
Добавим свои строчки:
if(!$inCore->request('city')){ $msg .= $_LANG['CITY_ERROR'].'<br/>'; } else { else {$city = $inCore->request('city', 'str', '');} }
И теперь поправим запрос
//create advanced user profile 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')";
Изменим чтоб было похоже на:
//create advanced user profile 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.", '$city', '', '0', '0', '1', '0', '', 'all')";
Ну и последний штрих!
Чтоб значение этого поля не сбрасывалось при ошибке (например пароли не совпали,а город нормально введен — пусть страница обновится, но это поле не сбрасывать...)
Найдем в этом же файле чуток ниже строки
$smarty = $inCore->initSmarty('components', 'com_registration.tpl'); $smarty->assign('cfg', $cfg);
И втиснем одну строчку:
$smarty = $inCore->initSmarty('components', 'com_registration.tpl'); $smarty->assign('cfg', $cfg); $smarty->display('com_registration.tpl');
Все. Элементарно...
Ну да, впринципе, как два пальца обасфальт Спасибо, попробую.Все. Элементарно...
Ну да, впринципе, как два пальца обасфальт Спасибо, попробую.Все. Элементарно...
Да, спасибо всё работает как надо, вы молодец, только единственное я не пойму для чего нужно это
$_LANG['CITY_ERR_LEN'] ='Что-то город подозрительный! Не более 20 символов!';
Всем советую сделать это дополнение, а также внедрить это в сборку.
Можно это и исключить, однако я старался приблизиться к функционалу движка, а в редактировании профиля (мои настройки) есть такая проверка. Поэтому более правильно будет так.
Петропавловск-Камчатский, 24 символа
Да, блин, не подумал...
Ну смотри как убрать:
В файле components\registration\frontend.php поправить
if(!$inCore->request('city')){ $msg .= $_LANG['CITY_ERROR'].'<br/>'; } else { else {$city = $inCore->request('city', 'str', '');} }
Или вообще отключить проверку:
if(!$inCore->request('city')){ $msg .= $_LANG['CITY_ERROR'].'<br/>'; } else { $city = $inCore->request('city', 'str', ''); }