IP.Board:Дополнительные поля под аватаркой

Материал из CSI

Перейти к: навигация, поиск

Как добавить определённое дополнительно поле в сообщение под аватар? Как перемещать это дополнительное поле в мини-профиле пользователя в сообщении? Сейчас я попытаюсь ответить на эти вопросы.

Содержание

[править] 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 — это идентификатор нашего поля.

Всё!

[править] Ссылки

Дополнительные поля под аватаркой IP.Board v2.3

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Категории
Инструменты