А

Александр

+731
Репутация
15744
Рейтинг
#1 id пользователя в шаблоне 9 июля 2010 в 19:51
com_users_profile.tpl

В нужном месте напиши
  1. <p>{$usr.id}</p>
#2 Как вывести отбражение города пользователя в его профиль? 7 июля 2010 в 22:10
Хотя прикольно смотрится в профиле:

Город: "Я тихий бомжик и нету у меня крыши… Тарам-тарам-тарам!" laugh

Все-таки проверка нужна! И нужна немного другая.
#3 Как вывести отбражение города пользователя в его профиль? 7 июля 2010 в 22:06
Только в этом случае, придется нарушить код в другом месте!
Я имею ввиду проверку длины названия города при редактировании профиля.

  1.  
  2. if ($do=='editprofile'){
  3.  
  4. $opt = $inCore->request('opt', 'str', 'edit');
  5. ..........
  6. ..........
  7. ................
  8.  
тут такие строчки

  1.  
  2. if (strlen($city)>20) { cmsCore::addSessionMessage($_LANG['LONG_CITY_NAME'], 'error'); $errors = true; }
Решайте или их убрать, или написать что-то вроде этого:
  1.  
  2. if (strlen($city)>30) { cmsCore::addSessionMessage($_LANG['LONG_CITY_NAME'], 'error'); $errors = true;
  3.  
#4 Как вывести отбражение города пользователя в его профиль? 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.  
#5 Как вывести отбражение города пользователя в его профиль? 7 июля 2010 в 20:29
Кстати текст просто тестовый, его можно изменить типа: "Слишком длинное название города."
#6 Как вывести отбражение города пользователя в его профиль? 7 июля 2010 в 20:27
Это своеобразная защита от дурака! Если город будет очень длинный (более 20 символов) выдаст ошибку.
Можно это и исключить, однако я старался приблизиться к функционалу движка, а в редактировании профиля (мои настройки) есть такая проверка. Поэтому более правильно будет так. stuk
#7 Как вывести отбражение города пользователя в его профиль? 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');

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

#8 6 июля 2010 в 02:41
v
#9 Как вывести отбражение города пользователя в его профиль? 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
#10 1 июля 2010 в 18:23
А Вы с нуля установили или обновлялись с ранней версии?
#11 1 июля 2010 в 17:14
Так залезь в свой профиль — контент — статьи. Там есть возможность редактировать все свои статьи.

Если и это не удобно, открываешь com_content_read.tpl и добавляешь в нужном месте такую ссылку:
  1. <a href="/content/edit{$article.id}.html">Редактировать</a>
#12 1 июля 2010 в 16:00
В модулях новые и последние материалы в настройках "Показывать анонсы — ДА!"
#13 1 июля 2010 в 15:33
Админка — Контент — Разделы — Новости выбери выводить анонсы статей.
В модуле вывода статей тоже в настройках включи анонсы.
Теперь при создании статьи (новости) напишешь первый абзац в разделе анонс, а остальное как обычно.
#14 1 июля 2010 в 01:49
components/users/frontend.php отвечает за показ профиля.

Сироки
  1. if ($do=='profile'){
  2.  
  3. $inCore->loadLib('clubs');
  4.  
  5. if (!$id){
  6. $login = $inCore->request('login', 'str', '');
  7. $login = urldecode($login);
  8. $id = $inDB->get_fields('cms_users', "login='{$login}'", 'id', 'is_deleted ASC');
  9. $id = $id['id'];
  10. }
  11.  
  12. $usr = $model->getUser($id);
  13.  
  14. ................
  15. .....................
  16. .......................
  17. .....................
  18. //отдаем в шаблон
  19. $smarty = $inCore->initSmarty('components', 'com_users_profile.tpl');
  20.  
  21. $smarty->assign('id', $id);
  22. $smarty->assign('usr', $usr);
  23. $smarty->assign('plugins', $plugins);
  24. $smarty->assign('messages', cmsCore::getSessionMessages());
  25. $smarty->assign('cfg', $cfg);
  26. $smarty->assign('myprofile', $myprofile);
  27. $smarty->assign('is_admin', $inUser->is_admin);
  28. $smarty->assign('is_auth', $inUser->id);
  29.  
  30. $smarty->display('com_users_profile.tpl');
  31.  
  32. }
  33.  
#15 Форматирование в таблице 1 июля 2010 в 01:43
Почему не удается зафиксировать высоту?

<div class="header"> Тут наш контент </div>

В стиле пропиши:

.header{
float: left;
overflow:hidden;
max-height:100px;
height:auto !important;
height:100px;
width:100%
}

И твой DIV зафиксирует высоту 100px, остальное будет обрезать.
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.