Полезная информация


----

Начать новую тему Ответить на тему
АвторСообщение

 Сообщение Свои доп.поля в профиле phpbb 2012-10-30

Аватар пользователя

Всем доброго времени суток, хотелось бы сегодня поделиться еще маленькой частью своего опыта в phpbb. Конкретней, излить пару мыслей по поводу дополнительных полей в профиле и методе их украшательства.

Не секрет то, что в phpbb есть возможность добавлять дополнительные поля в профиль, они могут быть разного назначения, очень полезная вещь.

Форма добавления дополнительных полей находится в Админка - Пользователи и группы - Дополнительные поля.
Не забудьте так же включить отображение для них в Админка - Общие - Нагрузка на сервер - Дополнительные поля


Хотелось бы отметить, что данная статья рассчитана на более продвинутых админов, нужны минимальные познания в HTML и в банальной верстке дивами или таблицами.

Вообщем то, единственным минусом стандартного вывода дополнительных полей является их однообразность, они выводятся в одном и том же месте, в мини-профилях, профилях, настройках профиля. Если полей несколько - они идут друг за другом. А что делать если хочется какое либо поле приукрасить или перенести выше(ниже) в профиле, поставить в другое место ???

Оказывается есть решение, притом достаточно простое. Но требующее определенных жертв. Основной жертвой будет вырезание стандартного вывода полей, а полезностью будет размещение полей в любом месте профиля, независимое притом размещение. Готовы к такому шагу ??? Я покажу лишь на одном примере, но этого будет достаточно.

Приглядитесь к моему мини-профилю, в область ника. Что там видите ??? Правильно, под ником отображается мое имя. Как я сделал ??? С помощью дополнительных полей. Вообщем приступаем, вырезаем для начала стандартный вывод полей, открываем шаблон /styles/ваш стиль/template/viewtopic_body.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 -->
 

После этого идем в шаблон /styles/ваш стиль/template/ucp_profile_profile_info.html и удаляем следущее.
Для стилей на основе просильвер
<!-- 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 -->
 

После этого открываем файл includes/functions_profile_fields.php и находим
$template->assign_block_vars('profile_fields', array(
 

Вставляем после найденного
'IDENT'=> $row['field_ident'], 
 

Все, подготовка закончена. Теперь мат.часть :-0=)
Для начала нам надо создать само поле в админке, идем, создаем. Отмечаем флажки - отображать на страницах тем и в центре пользователя
Внимание !!! Имя поля должно быть написано английскими маленькими буквами !!! Иначе ничего не выйдет

Запоминаем имя, в моем случае это было namme. Теперь нам надо добавить код поля на страницу просмотра тем, открываем шаблон viewtopic_body.html и в области между условиями <!-- BEGIN postrow --> и <!-- END postrow --> (код между этими условиями отвечает за отображение одного сообщения) вставляем следущее
<!-- IF postrow.S_PROFILE_NAMME -->
         {postrow.PROFILE_NAMME_VALUE}
      <!-- ENDIF -->
 

В данном коде мы прописали имя нашего поля заглавными буквами
Цитата:
<!-- IF postrow.S_PROFILE_NAMME -->
{postrow.PROFILE_NAMME_VALUE}
<!-- 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 -->
 

Далее нам надо сделать так, чтобы данное поле могли пользователи настроить в Центре Пользователя, идем в шаблон ucp_profile_profile_info.html и добавляем туда, в более подходящее для вас место
<!-- 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 -->
 

В строке
<!-- IF  profile_fields.IDENT eq 'namme' -->
 

идет присвоение идентификатора поля думаю сами заметили.
Этот код можно так же разнообразить HTML и текстовыми вставками, следите чтобы верстка не нарушилась.


Вот таким образом и я сделал себе дополнительное поле для ввода имени, вопросы у вас в любом случае будут, задавайте :bra_vo:


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!

Теги темы
Свои доп.поля в профиле phpbb
          Вернуться наверх  
 


Аватар пользователя

SENSEY - DeaDRoMeO!
Пожалуйста Зарегистрируйтесь чтобы увидеть ссылку
Ситуация с регистром а админке:

Пожалуйста Зарегистрируйтесь чтобы увидеть ссылку



Пробовал поставить и такой код для поля отображаемого в центре пользователя:

Цитата:
Но данный код абсолютно не вписывается в стройный перечень таблиц данной формы, в файле - ucp_profile_profile_info.html
Пришлось придумать, нечто вроде нижеследующего кода:
<tr>
<td class="row1" width="35%"><b class="genmed">{L_NAMME}: </b></td>
<td class="row2"><textarea class="post" name="namme" rows="3" cols="30">{NAMME}</textarea></td>
</tr>


Теперь, после вашего сообщения попробовал и такой код:
<tr>
<td class="row1" width="35%"><b class="genmed">{L_namme}: </b></td>
<td class="row2"><textarea class="post" name="namme" rows="3" cols="30">{namme}</textarea></td>
</tr>[/quote]

Результат все тот же — ничего не изменилось((


Вопрос, о том, где и в какой форме должен располагаться нижеследующий код, для меня остается загадкой и я его не понимаю куда и как пристроить:

Цитата:
Отсюда следует вывод, что присутствие в файле - ucp_profile_profile_info.html нижеследующего кода ни на что не влияет:
<!-- 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 -->

Его можно и убрать и поставить, но форма с заполненным дополнительным полем не отправится ни при каких обстоятельствах, ибо сам код, либо не на своем месте, либо неполон, либо представлен с грубейшими ошибками.


С безграничным уважением :uch_tiv:


_________________
Подпись:
Как узнать, что ты на верном пути? Проще простого: если рядом с тобой не осталось никого, значит, ты действительно близок к сути. © Эмиль Мишель Чо́ран
          Вернуться наверх  
 


Аватар пользователя

Beksssss, задумайтесь вот о чём: тот код, что представлен

<!-- 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 -->
 


вроде должно быть так:

<!-- IF profile_fields.IDENT eq 'namme' -->
<tr>
      <td class="row1" width="35%">
         <!-- 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>
<!-- ENDIF -->
 


отличается от того, что было только наличием идентификатора namme. верно?
в админке при этом никаких изменений, удалений и тому подобного не производилось.
а в старом варианте при создании дополнительного поля в админке именно этот код выводил и название и поля ввода и т.д. в нормальном варианте, то есть этот код

<tr> 
<td class="row1" width="35%"><b class="genmed">{L_NAMME}: </b></td>
<td class="row2"><textarea class="post" name="namme" rows="3" cols="30">{NAMME}</textarea></td>
</tr>
 


абсолютно неверен.

//вы уже создавали доп поля в админке в старом варианте?
///сложно сказать что именно не так, но... вы, при создании доп поля в админке, выбирали создать однострочное/многострочное поле?

это так, рассуждения. у меня сейчас нет возможности проверить на реале.


_________________
Подпись:
три головы - это хорошо. но как же трудно придти к согласию...
* белк может помочь, но ставить за кого-то моды не будет... ни платно, ни бесплатно. *
          Вернуться наверх  
 


Аватар пользователя

Поставить доп.поле можно, но только стандартным методом — действительно работает.
Правда неудобство, заключается в том, что оно ставится не туда куда подсказывает элементарный здравый смысл. После того, когда потеряешь массу времени, на его поиски, понимаешь всю прелесть данного извращения.
Впрочем, к моему великому сожалению, в силу своего недалекого ума, не сумел его обнаружить и в предлагаемом решении данной задачи, в данном анонсе.
Дорогой Белк, огромное спасибо за поддержку и за искреннее желание помочь.
Сейчас же буду судорожно вникать в каждое слово сказанное Вами, ибо фишка мне нужна весьма и весьма.
Возможно, кто-то и отзовется, из тех кто уже ставил мод, ибо я уже сильно сомневаюсь в своих умственных способностях. :uch_tiv:


_________________
Подпись:
Как узнать, что ты на верном пути? Проще простого: если рядом с тобой не осталось никого, значит, ты действительно близок к сути. © Эмиль Мишель Чо́ран
          Вернуться наверх  
 


Аватар пользователя

поставил сейчас эту модификацию. победить вывод в личном разделе не удалось, а в теме нормально отобразилось где хотел.
больше пока причину искать не буду. мне кажется главное как в минипрофиле выглядит....


_________________
Подпись:
три головы - это хорошо. но как же трудно придти к согласию...
* белк может помочь, но ставить за кого-то моды не будет... ни платно, ни бесплатно. *
          Вернуться наверх  
 


Аватар пользователя

В воскресенье попробую глянуть, может и ошибся где. А может стоит заменить profile_fields.FIELD на profile_fields.NAMME , где NAMME и есть идентификатор вашего поля большими буквами

Сообщение добавлено... спустя 2 минуты 34 секунды:
И для начала использовать все же такой кусок
<!-- IF profile_fields.IDENT eq 'namme' -->
<tr>
      <td class="row1" width="35%">
         <!-- 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.NAMME}<!-- IF profile_fields.ERROR --><br /><span class="gensmall error">{profile_fields.ERROR}</span><!-- ENDIF --></td>
   </tr>
<!-- ENDIF -->
 


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

DeaDRoMeO писал(а):

И для начала использовать все же такой кусок

не получается...


_________________
Подпись:
три головы - это хорошо. но как же трудно придти к согласию...
* белк может помочь, но ставить за кого-то моды не будет... ни платно, ни бесплатно. *
          Вернуться наверх  
 


Аватар пользователя

DeaDRoMeO писал(а):

Внимание !!! Имя поля должно быть написано английскими маленькими буквами !!! Иначе ничего не выйдет

Запоминаем имя, в моем случае это было namme. Теперь нам надо добавить код поля на страницу просмотра тем, открываем шаблон viewtopic_body.html и в области между условиями <!-- BEGIN postrow --> и <!-- END postrow --> (код между этими условиями отвечает за отображение одного сообщения) вставляем следущее
Код: Выделить все
<!-- IF postrow.S_PROFILE_NAMME -->
         {postrow.PROFILE_NAMME_VALUE}
      <!-- ENDIF -->
 
В данном коде мы прописали имя нашего поля заглавными буквами

Перед тем как ставить данную модификацию, внимательно прочитал первый пост и сразу же вопрос: почему где написано Внимание - ... английскими маленькими буквами ... и следом поля заглавными буквами
*******
И еще в этом коде не понял:

<!-- IF postrow.S_PROFILE_NAMME -->
         Меня зовут {postrow.PROFILE_NAMME_VALUE}
      <!-- ENDIF -->
 


Где это будет отображаться? Внутри профиля пользователя? Или под аватарой, снизу ника?
Зачем там добавлять какую то картинку? :du_ma_et:


          Вернуться наверх  
 


Аватар пользователя

маленькими английскими буквами идентификатор поля (его название) прописывается в админке при создании поля.
чтобы его вывести в шаблон (viewtopic_body) - его прописывают заглавными буквами.

<!-- IF postrow.S_PROFILE_NAMME -->
         Меня зовут {postrow.PROFILE_NAMME_VALUE}
      <!-- ENDIF -->
 


это - сам код вывода имени. отображаться сие будет там, куда вы его поставите.


_________________
Подпись:
три головы - это хорошо. но как же трудно придти к согласию...
* белк может помочь, но ставить за кого-то моды не будет... ни платно, ни бесплатно. *
          Вернуться наверх  
 


Аватар пользователя

Вроде все сделал и даже включил Дополнительные поля в профилях - нагрузка на сервер. Но нет поля, не вижу ... :du_ma_et:
дополнительное поле через админку создал
***
Может быть из-за того что просто вставил неправильно код в файл ucp_profile_profile_info.html :smu:sche_nie: :sh_ok:

<fieldset>
       <!-- 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 -->
   <!-- IF ERROR --><p class="error">{ERROR}</p><!-- ENDIF -->
   <dl>
      <dt><label for="icq">{L_UCP_ICQ}:</label></dt>
      <dd><input type="text" name="icq" id="icq" maxlength="15" value="{ICQ}" class="inputbox" /></dd>
   </dl>
   <dl>
 


Сообщение добавлено... спустя 29 минут 42 секунды:
Сделал так:
 <!-- IF profile_fields.IDENT eq 'namme' -->
<dl>
      <dt>
         <!-- IF profile_fields.S_REQUIRED --><b>*</b><!-- ENDIF -->
         <!-- IF profile_fields.LANG_EXPLAIN --><br /><span>{profile_fields.LANG_EXPLAIN}</span><!-- ENDIF -->
      </dt>
      <dd>{profile_fields.NAMME}<!-- IF profile_fields.ERROR --><br /><span>{profile_fields.ERROR}</span><!-- ENDIF --></dd>
   </dl>
<!-- ENDIF -->
 

Но все равно не вижу поля


          Вернуться наверх  
 


Аватар пользователя

И правки сделали все? Дайте скриншот созданного допполя в админке


_________________
Подпись:
-_- -_-
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
          Вернуться наверх  
 


Аватар пользователя

DeaDRoMeO писал(а):

И правки сделали все? Дайте скриншот созданного допполя в админке

Спасибо за беспокойство, Сергей. :-ok-:
Правки делал все, но модификация не заработала. Судя по некоторым постам в этой теме не только у меня. :nez-nayu:
Откатил все обратно и поставил ту модификацию которую выложил Андрей (Белк). Все заработало! :ya_hoo_oo:
А вот кнопку до сих пор не поставил, новую. Возможно придется отказаться от этой идеи до лучших времен :du_ma_et:


          Вернуться наверх  
 
 
Начать новую тему Ответить на тему


Дополнительные возможности

  Похожие темы  Автор  Ответов  Просмотров  Последнее сообщение 
Аватар пользователя Новые поля в профиле
Новые поля в профиле, которые просили некоторые пользователи-администраторы своих ресурсов

DeaDRoMeO

15

1328

Аватар пользователя

09 ноя 2012, 21:58

DeaDRoMeO

Аватар пользователя Восстановление дополнительного поля в профиле

fialkina

6

455

Аватар пользователя

17 дек 2012, 12:57

akella1900

Аватар пользователя Запрет на самостоятельное заполнение поля "Сайт" в профиле

ursego

8

469

Аватар пользователя

26 окт 2014, 09:52

Tatyana_S

Аватар пользователя Свои страницы ошибок (400, 401, 403, 404, 500) для phpbb3
Анонсирую мини-мод для создания страниц ошибок сервера в стиле форума

DeaDRoMeO

28

4682

Аватар пользователя

20 май 2016, 05:18

DeaDRoMeO

Аватар пользователя Создаем свои страницы в стиле форума phpbb3
Статейка о создании страниц в стиле вашего форума

DeaDRoMeO

27

3335

Аватар пользователя

09 дек 2015, 05:28

DeaDRoMeO

Оставить свой комментарий

Поделиться темой с помощью

Ссылки на тему

Прямая ссылка:
BB-код для форумов, сайтов, блогов:
HTML ссылка:
 


cron

Самая неформальная поддержка phpBB :P