Не секрет то, что в phpbb есть возможность добавлять дополнительные поля в профиль, они могут быть разного назначения, очень полезная вещь.
Форма добавления дополнительных полей находится в Админка - Пользователи и группы - Дополнительные поля.
Не забудьте так же включить отображение для них в Админка - Общие - Нагрузка на сервер - Дополнительные поля
Не забудьте так же включить отображение для них в Админка - Общие - Нагрузка на сервер - Дополнительные поля
Хотелось бы отметить, что данная статья рассчитана на более продвинутых админов, нужны минимальные познания в HTML и в банальной верстке дивами или таблицами.
Вообщем то, единственным минусом стандартного вывода дополнительных полей является их однообразность, они выводятся в одном и том же месте, в мини-профилях, профилях, настройках профиля. Если полей несколько - они идут друг за другом. А что делать если хочется какое либо поле приукрасить или перенести выше(ниже) в профиле, поставить в другое место ???
Оказывается есть решение, притом достаточно простое. Но требующее определенных жертв. Основной жертвой будет вырезание стандартного вывода полей, а полезностью будет размещение полей в любом месте профиля, независимое притом размещение. Готовы к такому шагу ??? Я покажу лишь на одном примере, но этого будет достаточно.
Приглядитесь к моему мини-профилю, в область ника. Что там видите ??? Правильно, под ником отображается мое имя. Как я сделал ??? С помощью дополнительных полей. Вообщем приступаем, вырезаем для начала стандартный вывод полей, открываем шаблон
Для стилей на основе просильвера
Код: Выделить все
<!-- IF postrow.S_PROFILE_FIELD1 -->
<!-- Use a construct like this to include admin defined profile fields. Replace FIELD1 with the name of your field. -->
<dd><strong>{postrow.PROFILE_FIELD1_NAME}:</strong> {postrow.PROFILE_FIELD1_VALUE}</dd>
<!-- ENDIF -->
<!-- BEGIN custom_fields -->
<dd><strong>{postrow.custom_fields.PROFILE_FIELD_NAME}:</strong> {postrow.custom_fields.PROFILE_FIELD_VALUE}</dd>
<!-- END custom_fields -->
Для стилей на основе сабсильвер2
Код: Выделить все
<!-- IF postrow.S_PROFILE_FIELD1 -->
<!-- Use a construct like this to include admin defined profile fields. Replace FIELD1 with the name of your field. -->
<br /><b>{postrow.PROFILE_FIELD1_NAME}:</b> {postrow.PROFILE_FIELD1_VALUE}
<!-- ENDIF -->
<!-- BEGIN custom_fields -->
<br /><b>{postrow.custom_fields.PROFILE_FIELD_NAME}:</b> {postrow.custom_fields.PROFILE_FIELD_VALUE}
<!-- END custom_fields -->
После этого идем в шаблон
Для стилей на основе просильвер
Код: Выделить все
<!-- BEGIN profile_fields -->
<dl>
<dt><label<!-- IF profile_fields.FIELD_ID --> for="{profile_fields.FIELD_ID}"<!-- ENDIF -->>{profile_fields.LANG_NAME}:<!-- IF profile_fields.S_REQUIRED --> *<!-- ENDIF --></label>
<!-- IF profile_fields.LANG_EXPLAIN --><br /><span>{profile_fields.LANG_EXPLAIN}</span><!-- ENDIF --></dt>
<!-- IF profile_fields.ERROR --><dd class="error">{profile_fields.ERROR}</dd><!-- ENDIF -->
<dd>{profile_fields.FIELD}</dd>
</dl>
<!-- END profile_fields -->
Для стилей на основе сабсильвер2
Код: Выделить все
<!-- BEGIN profile_fields -->
<tr>
<td class="row1" width="35%">
<b class="genmed">{profile_fields.LANG_NAME}: </b>
<!-- IF profile_fields.S_REQUIRED --><b>*</b><!-- ENDIF -->
<!-- IF profile_fields.LANG_EXPLAIN --><br /><span class="gensmall">{profile_fields.LANG_EXPLAIN}</span><!-- ENDIF -->
</td>
<td class="row2">{profile_fields.FIELD}<!-- IF profile_fields.ERROR --><br /><span class="gensmall error">{profile_fields.ERROR}</span><!-- ENDIF --></td>
</tr>
<!-- END profile_fields -->
После этого открываем файл
Код: Выделить все
$template->assign_block_vars('profile_fields', array(
Вставляем после найденного
Код: Выделить все
'IDENT'=> $row['field_ident'],
Все, подготовка закончена. Теперь мат.часть

Для начала нам надо создать само поле в админке, идем, создаем. Отмечаем флажки - отображать на страницах тем и в центре пользователя
Внимание !!! Имя поля должно быть написано английскими маленькими буквами !!! Иначе ничего не выйдет
Запоминаем имя, в моем случае это было
Код: Выделить все
<!-- IF postrow.S_PROFILE_NAMME -->
{postrow.PROFILE_NAMME_VALUE}
<!-- ENDIF -->
В данном коде мы прописали имя нашего поля заглавными буквами

<!-- IF postrow.S_PROFILE_NAMME -->
{postrow.PROFILE_NAMME _VALUE}
<!-- ENDIF -->
Помните, что данный код можно оформить как угодно, допустим написать какой нибудь текст
Или добавить какой нибудь элемент
Вот почему я требую от вас минимальных знаний в HTML и добавлять элементы надо строго внутри условия
Цитата:


{postrow.PROFILE_
<!-- ENDIF -->
Помните, что данный код можно оформить как угодно, допустим написать какой нибудь текст
Код: Выделить все
<!-- IF postrow.S_PROFILE_NAMME -->
Меня зовут {postrow.PROFILE_NAMME_VALUE}
<!-- ENDIF -->
Или добавить какой нибудь элемент
Код: Выделить все
<!-- IF postrow.S_PROFILE_NAMME -->
<img src="адрес картинки" alt="" /> {postrow.PROFILE_NAMME_VALUE}
<!-- ENDIF -->
Вот почему я требую от вас минимальных знаний в HTML и добавлять элементы надо строго внутри условия
Код: Выделить все
<!-- IF postrow.S_PROFILE_NAMME -->
тут код нашего поля
<!-- ENDIF -->
Далее нам надо сделать так, чтобы данное поле могли пользователи настроить в Центре Пользователя, идем в шаблон
Код: Выделить все
<!-- IF profile_fields.IDENT eq 'namme' -->
<!-- IF profile_fields.S_REQUIRED --><b>*</b><!-- ENDIF -->
<!-- IF profile_fields.LANG_EXPLAIN --><br /><span>{profile_fields.LANG_EXPLAIN}</span><!-- ENDIF -->
{profile_fields.FIELD}<!-- IF profile_fields.ERROR --><br /><span>{profile_fields.ERROR}</span><!-- ENDIF --><!-- ENDIF -->
В строке
идет присвоение идентификатора поля думаю сами заметили.
Этот код можно так же разнообразить HTML и текстовыми вставками, следите чтобы верстка не нарушилась.
Код: Выделить все
<!-- IF profile_fields.IDENT eq 'namme' -->
идет присвоение идентификатора поля думаю сами заметили.
Этот код можно так же разнообразить HTML и текстовыми вставками, следите чтобы верстка не нарушилась.
Вот таким образом и я сделал себе дополнительное поле для ввода имени, вопросы у вас в любом случае будут, задавайте
