И так сегодня пойдет рассказ о том как добавить дополнительные поля под аватарку или в профиль 1.Как добавлять доп. поля под аватарку ------------------------------------------------------- IP.Board 3.x В IPB 3.x шаблон, отвечающий за отображение полей под аватаркой, является глобальным и называется userInfoPane, находится в разделе Global Templates. Данный шаблон полностью состоит из элементов профиля сообщения пользователя, поэтому выделять какие-либо участки кода нецелесообразно. {$author['avatar']} — Аватар {$author['title']} — Статус {$author['member_rank_img']} — Ранг Отображение группы: Код: <li> <span class='ft'>{$this->lang->words['m_group']}</span> <span class='fc'>{$author['_group_formatted']}</span> </li> Отображение количества сообщений: Код: <li> <span class='ft'>{$this->lang->words['m_posts']}</span> <span class='fc'>{parse expression="$this->registry->getClass('class_localization')->formatNumber( intval( $author['posts'] ) )"}</span> </li> Отображение даты регистрации: Код: <li> <span class='ft'>{$this->lang->words['m_joined']}</span> <span class='fc'>{parse date="$author['joined']" format="joined"}</span> </li> Добавление дополнительных полей Иногда хочется взять контроль в свои руки практически над всеми функциями движка. Например, можно вручную добавлять дополнительные поля в профиль пользователя в сообщении. Делается это очень просто через шаблон самого профиля: Global Templates > userInfoPane. Но для начала необходимо удалить код автоматического вывода дополнительных полей, находим и удаляем: Код: <if test="authorcfields:|:$author['custom_fields'] != """> <foreach loop="customFieldsOuter:$author['custom_fields'] as $group => $data"> <foreach loop="customFields:$author['custom_fields'][ $group ] as $field"> <if test="$field != ''"> <li> {$field} </li> </if> </foreach> </foreach> </if> Для того, чтобы вручную добавить какое-то дополнительное поле, нужно знать его идентификатор. Делается это также просто: нужно всего лишь зайти в Админцентре на страницу дополнительных полей, навести на одно из полей курсор мыши и в появившейся ссылке взять самое последнее число: <...>id=число. Теперь, когда известен идентификатор дополнительного поля, необходимо составить примерно такую конструкцию и добавить её в любое место шаблона: Код: <if test="$author['field_ID']"> {$author['field_ID']} </if> где ID — идентификатор дополнительного поля. Допустим, нам хочется вывести какую-либо картинку, которую выбирает пользователь из выпадающего списка дополнительного поля. То, что пользователь выберет — будет отображаться на месте переменной {$author['field_ID']}. То есть, например, пользователь выбрал из выпадающего поля пункт Kitty. Чтобы отобразилась картинка Kitty.gif, необходимо составить подобный код: Код: <if test="$author['field_ID']"> <img title="{$author['field_ID']}" src="{$author['field_ID']}.gif" alt="" /></li> </if> где ID — идентификатор дополнительного поля. Вот и всё! По этой инструкции можно составлять различные дополнительные поля любой конфигурации! Удачи! IP.Board 2.3 Итак, шаблон сообщения называется RenderRow (Изменить HTML шаблоны > skin_topic (просмотр темы) > RenderRow). Вот участок кода, который отечает за поля под аватаром: Код: {$author['title']}<br /> {$author['member_rank_img']}<br /><br /> {$author['member_group']}<br /> {$author['member_posts']}<br /> {$author['member_joined']}<br /> {$author['member_location']} {$author['member_number']}<br /> <if="$author['custom_fields'] != """> {$author['custom_fields']} </if> {$author['title']} — Ранг {$author['member_rank_img']} — Изображения ранга {$author['member_group']} — Группа пользователя {$author['member_posts']} — Кол-во сообщений {$author['member_joined']} — Дата регистрации {$author['member_location']} — «Откуда» {$author['member_number']} — ID пользователя {$author['custom_fields']} — Автоматический вывод дополнительных полей Последняя строчка как раз таки нам и нужна. Переменная {$author['custom_fields']} означает, что здесь будут выводится дополнительные поля. Все дополнительные поля имеют вид {$author['field_id']}, где id — это идентификатор дополнительного поля, представляющий собой число. Чтобы его узнать, нужно зайти в базу данных в таблицу ibf_pfields_data и в столбце pf_id будет идентификатор. Саму переменную дополнительного поля лучше заключать в условие, вот так: Код: <if="$author['field_id']">{$author['field_id']}</if> Разжёвываем 1. Берём наш код, отвечающий за вывод полей в сообщении под аватаром: Код: {$author['title']}<br /> {$author['member_rank_img']}<br /><br /> {$author['member_group']}<br /> {$author['member_posts']}<br /> {$author['member_joined']}<br /> {$author['member_location']} {$author['member_number']}<br /> <if="$author['custom_fields'] != """> {$author['custom_fields']} </if> 2. Удаляем вот это: Код: <if="$author['custom_fields'] != """> {$author['custom_fields']} </if> Почему удаляем? Потому что мы будем все поля добавлять вручную. Конечно, есть некоторые неудобства, такие как, например, придётся постоянно лезть в базу данных и смотреть id нового поля. Однако, при этом сразу развязываются руки и можно перемещать своё поле по шаблону куда угодно. 3. Вставляем переменную нашего дополнительного поля: Код: {$author['title']}<br /> {$author['member_rank_img']}<br /><br /> {$author['member_group']}<br /> {$author['member_posts']}<br /> {$author['member_joined']}<br /> {$author['member_location']} {$author['member_number']}<br /> <if="$author['field_id']">{$author['field_id']}</if> где id — это идентификатор нашего поля. Всё! 2. Как добавить в профиль чтоб было кликабельно Открываем: Внешний вид - управление стилями - ваш стиль - шаблоны - профили пользователей - customFieldGroup__contact Там идем в самый конец и находим: Код: {$f->parsed} </if> </if> после него будет еще много </if> Итак, до {$f->parsed} добавляем следующее (разбираю на примере Vkontakte): Код: <if test="vk:|:$f->raw_data['pf_key'] == 'vk'"> <a class='url uid' rel="me" href='http://vk.com/{$f->parsed}'>{$f->parsed}</a> <else /> Здесь vk - это ваш ключ в дополнительных полях профиля, http://vk.com/ - это приставка, которая добавляется перед id После {$f->parsed} добавляем Код: </if> Вот и все))))