Дополнительные поля в профиле
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
Amadeus
- phpBB 1.0.0
- Сообщения: 2
- Стаж: 16 лет 11 месяцев
Дополнительное поле в профиль
Доброго времени суток!! У меня такая проблема. Мне нужно добавить в профиль пользователя дополнительное поле.Выводить его нужно и в темах и просто в профиле.Данные брать нужно из определенной таблицы. Форум у меня интегрирован с сайтом поэтому данные для авторизации он берет из базы сайта, дополнительное поле он должен брать из той же базы что и пользователя только из другого поля.
-
rxu
- phpBB Guru

- Сообщения: 17272
- Стаж: 20 лет 4 месяца
- Откуда: Красноярск
- Благодарил (а): 632 раза
- Поблагодарили: 2412 раз
Re: Дополнительное поле в профиль
Amadeus
Не зная конкретики, единственное, что могу сказать - добавляете во viewtopic.php и memberlist.php нужные SQL запросы к нужной базе, и выводите.
Не зная конкретики, единственное, что могу сказать - добавляете во viewtopic.php и memberlist.php нужные SQL запросы к нужной базе, и выводите.
-
Amadeus
- phpBB 1.0.0
- Сообщения: 2
- Стаж: 16 лет 11 месяцев
Re: Дополнительное поле в профиль
Редактировать файлы форума или темы? И как запрос должен выглядеть для каждого фала? Можно ли примерчик, а то я как то пока не особо разобраться с этим могу.А уж имена таблиц и я свои поставить смогу.
-
rxu
- phpBB Guru

- Сообщения: 17272
- Стаж: 20 лет 4 месяца
- Откуда: Красноярск
- Благодарил (а): 632 раза
- Поблагодарили: 2412 раз
Re: Дополнительное поле в профиль
И те, и другие.Amadeus писал(а):Редактировать файлы форума или темы?
Например, во viewtopic.php есть блок
Код: Выделить всё
$sql = $db->sql_build_query('SELECT', array(
'SELECT' => 'u.*, z.friend, z.foe, p.*',
'FROM' => array(
USERS_TABLE => 'u',
POSTS_TABLE => 'p',
),
'LEFT_JOIN' => array(
array(
'FROM' => array(ZEBRA_TABLE => 'z'),
'ON' => 'z.user_id = ' . $user->data['user_id'] . ' AND z.zebra_id = p.poster_id'
)
),
'WHERE' => $db->sql_in_set('p.post_id', $post_list) . '
AND u.user_id = p.poster_id'
));Затем передаете в шаблон так же, как и остальные значения, например
Код: Выделить всё
'POSTER_POSTS' => $user_cache[$poster_id]['posts'],-
rugo
- phpBB 1.0.0
- Сообщения: 7
- Стаж: 19 лет 5 месяцев
- Откуда: Питер (Чукчино)
Re: Видимость Дополнительных полей пользователя
А как сделать,чтобы в стиле subsilver2 в списке пользователей был столбец,показывающий дату последнего посещения форума,ведь поле сортировки есть?Править файл memberlist_body.html или memberlist_view.html?
-
Палыч
- Former team member
- Сообщения: 9683
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 3 раза
- Поблагодарили: 454 раза
Re: Видимость Дополнительных полей пользователя
Добавитьrugo писал(а):Править файл memberlist_body.html
Код: Выделить всё
<th nowrap="nowrap" width="11%"><a href="{U_SORT_ACTIVE}#memberlist">{L_LAST_ACTIVE}</a></th>Код: Выделить всё
<td class="gen" align="center"><!-- IF S_VIEWONLINE -->{memberrow.VISITED}<!-- ENDIF --> </td>Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
-
rugo
- phpBB 1.0.0
- Сообщения: 7
- Стаж: 19 лет 5 месяцев
- Откуда: Питер (Чукчино)
Re: Видимость Дополнительных полей пользователя
Поле появилось.Спасибо.А изменение colspan ни на что не повлияло.
-
DimkaG
- phpBB 1.4.4
- Сообщения: 151
- Стаж: 17 лет 3 месяца
- Откуда: Москва
- Благодарил (а): 18 раз
- Поблагодарили: 2 раза
Re: Дополнительное поле в профиль
у меня попроще задача. Есть доп.поле "ID" оно отображается в профиле. Мне нужно его подключить под аватару в постах, как я понимаю - нужно менять viewtopic.php . Можно поподробнее описать какие изменения нужно делать?
-
nissin
- phpBB 3.0.4
- Сообщения: 2229
- Стаж: 18 лет 9 месяцев
- Откуда: Астана
- Благодарил (а): 7 раз
- Поблагодарили: 344 раза
Re: Дополнительное поле в профиль
Администраторский раздел -> Нагрузка на сервер -> Показывать дополнительные поля на страницах тем -> Да
-
FladeX
- Former team member
- Сообщения: 1935
- Стаж: 19 лет 3 месяца
- Откуда: Саранск
- Благодарил (а): 7 раз
- Поблагодарили: 59 раз
Re: ПРОБЛЕМА - Дополнительные поля в профиле
Как вывести одно из дополнительных полей в определенном месте viewtopic'а? Мучаюсь уже час, никак не получается...
Например, данная конструкция вообще не обрабатывается:
Подставлял туда произвольный текст - он не выводился.
Добавлено спустя 10 минут 16 секунд:
Разобрался
дминистраторский раздел -> Нагрузка на сервер -> Показывать дополнительные поля на страницах тем -> Да

Ну и сам код:
где surname и firstname - идентификаторы нужных мне полей.
Например, данная конструкция вообще не обрабатывается:
Код: Выделить всё
<!-- BEGIN custom_fields -->Добавлено спустя 10 минут 16 секунд:
Разобрался
дминистраторский раздел -> Нагрузка на сервер -> Показывать дополнительные поля на страницах тем -> Да
Ну и сам код:
Код: Выделить всё
<!-- IF postrow.S_PROFILE_FIRSTNAME or postrow.S_PROFILE_SURNAME --><div class="posterrank">{postrow.PROFILE_FIRSTNAME_VALUE} {postrow.PROFILE_SURNAME_VALUE}</div><!-- ENDIF -->//
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
// Okay, let's do the loop, yeah come on baby let's do the loop
// and it goes like this ...
| phpBB Adept ] | Каталог форумов | генератор sitemap для форумов | форум про форумы
-
boldgambler
- phpBB 1.0.0
- Сообщения: 8
- Стаж: 17 лет 10 месяцев
Re: ПРОБЛЕМА - Дополнительные поля в профиле
а как сделать чтобы дополнительные поля видели только члены определенной группы (название на русском но думаю тут по id как нибудь)?
хочу 2 дополнительных поля (в админке настроил их как скрытые и запрещено редактирование из личного раздела), чтобы самому их устанавливать у определенной группы (при переводе их в эту группу) и чтобы эти поля при просмотре профиля видели только члены этой группы. Сейчас как по документации, их видят только админы и модераторы. Может там условие какое и можно в него добавить еще один вариант что id группы == 7 скажем, кто знает?
хочу 2 дополнительных поля (в админке настроил их как скрытые и запрещено редактирование из личного раздела), чтобы самому их устанавливать у определенной группы (при переводе их в эту группу) и чтобы эти поля при просмотре профиля видели только члены этой группы. Сейчас как по документации, их видят только админы и модераторы. Может там условие какое и можно в него добавить еще один вариант что id группы == 7 скажем, кто знает?
-
boldgambler
- phpBB 1.0.0
- Сообщения: 8
- Стаж: 17 лет 10 месяцев
Re: ПРОБЛЕМА - Дополнительные поля в профиле
покопался в коде.
насколько я понял за вывод дополнительных полей при просмотре профиля отвечает следующий код из memberlist.php
начало функции generate_profile_fields_template
и как раз функция build_cache показывает скрытые поля, недоступные из личного раздела, только админам и модерам
я так понимаю надо что-то поправить в этом запросе
тут как я понял 'a_', 'm_' и есть проверка на то модер или админ ты. Вот бы еще добавить сюда условие что типа "Админ или Модер или id одной из твоих группы такое то! (ну то есть пользователь входит в указанную группу)"
думаю я получил бы нужный мне эффект. не мог бы кто помочь встроить это в запрос? в php я не слишком силен.
Добавлено спустя 56 минут 45 секунд:
короче, люди ... нужно просто условие принадлежит пользователь к группе с заданным id или нет.
Добавлено спустя 1 час 32 минуты 16 секунд:
всем огромное спасибо за помощь! Она была просто бесценна! :mrgreen:
решил так:
перед формированием запроса вставил (нашел в одной статье про блокирование рекламы)
и в условие добавил проверку, и в итоге получил
правда я выкинул модераторов из права просмотра, но это частность.
еще раз убедился в оригинальной поддержке этого форума :lol:
насколько я понял за вывод дополнительных полей при просмотре профиля отвечает следующий код из memberlist.php
Код: Выделить всё
// Custom Profile Fields
$profile_fields = array();
if ($config['load_cpf_viewprofile'])
{
include_once($phpbb_root_path . 'includes/functions_profile_fields.' . $phpEx);
$cp = new custom_profile();
$profile_fields = $cp->generate_profile_fields_template('grab', $user_id);
$profile_fields = (isset($profile_fields[$user_id])) ? $cp->generate_profile_fields_template('show', false, $profile_fields[$user_id]) : array();
}
Код: Выделить всё
function generate_profile_fields_template($mode, $user_id = 0, $profile_row = false)
{
global $db;
if ($mode == 'grab')
{
if (!is_array($user_id))
{
$user_id = array($user_id);
}
if (!sizeof($this->profile_cache))
{
$this->build_cache();
}
Код: Выделить всё
/**
* Build profile cache, used for display
* @access private
*/
function build_cache()
{
global $db, $user, $auth;
$this->profile_cache = array();
[b]// Display hidden/no_view fields for admin/moderator[/b]
$sql = 'SELECT l.*, f.*
FROM ' . PROFILE_LANG_TABLE . ' l, ' . PROFILE_FIELDS_TABLE . ' f
WHERE l.lang_id = ' . $user->get_iso_lang_id() . '
AND f.field_active = 1 ' .
((!$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_')) ? ' AND f.field_hide = 0 ' : '') . '
AND f.field_no_view = 0
AND l.field_id = f.field_id
ORDER BY f.field_order';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$this->profile_cache[$row['field_ident']] = $row;
}
$db->sql_freeresult($result);
}
Код: Выделить всё
$sql = 'SELECT l.*, f.*
FROM ' . PROFILE_LANG_TABLE . ' l, ' . PROFILE_FIELDS_TABLE . ' f
WHERE l.lang_id = ' . $user->get_iso_lang_id() . '
AND f.field_active = 1 ' .
((!$auth->acl_gets('a_', 'm_') && !$auth->acl_getf_global('m_')) ? ' AND f.field_hide = 0 ' : '') . '
AND f.field_no_view = 0
AND l.field_id = f.field_id
ORDER BY f.field_order';
думаю я получил бы нужный мне эффект. не мог бы кто помочь встроить это в запрос? в php я не слишком силен.
Добавлено спустя 56 минут 45 секунд:
короче, люди ... нужно просто условие принадлежит пользователь к группе с заданным id или нет.
Добавлено спустя 1 час 32 минуты 16 секунд:
всем огромное спасибо за помощь! Она была просто бесценна! :mrgreen:
решил так:
перед формированием запроса вставил (нашел в одной статье про блокирование рекламы)
Код: Выделить всё
$sql_mygr = "select count(*) as 'count' from " . USER_GROUP_TABLE . " a INNER join " . GROUPS_TABLE . " b on a.group_id=b.group_id where a.user_id=" . intval ( $user -> data [ 'user_id' ]). " and b.group_id=7" ;
$result_mygr = $db -> sql_query ( $sql_mygr );
$row_mygr = $db -> sql_fetchrow ( $result_mygr );
$db -> sql_freeresult ( $result );
Код: Выделить всё
(!$auth->acl_gets('a_') && !($row_mygr [ 'count' ]> 0) ? ' AND f.field_hide = 0 ' : '') . '
еще раз убедился в оригинальной поддержке этого форума :lol:
-
kostyanet
- phpBB 1.0.0
- Сообщения: 1
- Стаж: 16 лет 8 месяцев
Re: ПРОБЛЕМА - Дополнительные поля в профиле
Продолжение из закрытой темы: http://www.phpbbguru.net/community/topic27811.html
Понятно. Короче все равно не пашет. И главное я не врубаюсь чего менять:
memberrow.PROFILE_FIELD1_VALUE - это же название переменной. Если я просто заменю FIELD1 на, например garden_name (название доп.поля) то будет memberrow.PROFILE_garden_name_VALUE Правильно? То есть скрипт где-то создает именно такую переменную, или как это узнать?
В общем сделал memberrow.PROFILE_garden_name_VALUE - не отображается.
В условии поменял - не отображается. Но ведь количество заголовков остается прежним. Вот последний:
<th nowrap="nowrap" width="11%"><a href="{U_SORT_WEBSITE}">{L_WEBSITE}</a></th>
Добавлено спустя 20 минут 27 секунд:
Тэкс, поле теперь выводятся, оказывается надо было большими буквами писать. А может быть оказывается надо было кэш форума почистить.
Короче заголовка нет. Попробовал просто забить название вместо WWW - кириллица не прокатывает из исходника. Придется искать еще...
Понятно. Короче все равно не пашет. И главное я не врубаюсь чего менять:
memberrow.PROFILE_FIELD1_VALUE - это же название переменной. Если я просто заменю FIELD1 на, например garden_name (название доп.поля) то будет memberrow.PROFILE_garden_name_VALUE Правильно? То есть скрипт где-то создает именно такую переменную, или как это узнать?
В общем сделал memberrow.PROFILE_garden_name_VALUE - не отображается.
В условии поменял - не отображается. Но ведь количество заголовков остается прежним. Вот последний:
<th nowrap="nowrap" width="11%"><a href="{U_SORT_WEBSITE}">{L_WEBSITE}</a></th>
Добавлено спустя 20 минут 27 секунд:
Тэкс, поле теперь выводятся, оказывается надо было большими буквами писать. А может быть оказывается надо было кэш форума почистить.
Короче заголовка нет. Попробовал просто забить название вместо WWW - кириллица не прокатывает из исходника. Придется искать еще...
-
Izya
- Former team member
- Сообщения: 408
- Стаж: 18 лет
- Откуда: Абакан, Сибирь
- Благодарил (а): 1 раз
- Поблагодарили: 28 раз
Re: ПРОБЛЕМА - Дополнительные поля в профиле
А кодировка файла UTF-8?kostyanet писал(а):кириллица не прокатывает

