Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
weiss

Дополнительные поля профиля в HoverCard на IPB 3.2.x

Recommended Posts

Хочу попросить помощи по модификации одного шаблона.

 

В общем есть одна идея. У меня (думаю, как и у многих) в юзеринфо в темах форума выводятся дополнительные поля профиля. А в настройках форума, в разделе оптимизации, есть настройка: Allow custom profile field info be used in topic view (If set to "yes", this will add a LEFT JOIN onto the custom profile field table). Т. е. при просмотре тем выполняется довольно тяжелый запрос к БД, чтобы эти доп. поля показать. Я решил от него избавиться, при этом сохранив удобный просмотр этих доп. полей.

 

В IPB 3.2 появилась такая замечательная вещь как hovercard — всплывающее окошко с инфой о юзере, которое появляется при наведении на его ник. Оно использует AJAX, что и позволит нам избавиться от лишнего запроса на страницах тем. Короче ближе к делу. В шаблоне showCard (группа Profile) прописал следующее (скопировал из userInfoPane просто и маленько подправил):

 

<foreach loop="customFieldsOuter:$member['custom_fields'] as $group => $data">
<foreach loop="customFields:$member['custom_fields'][ $group ] as $field">
	<if test="$field != ''">
		<dt>{$group}</dt>
		<dd>{$field}</dd>
	</if>
</foreach>
</foreach>

 

На выходе это должно выглядить так:

<dt>Название поля 1:</dt>
<dd>Значение поля 2:</dd>
<dt>Название поля 2:</dt>
<dd>Значение поля 2:</dd>
<dt>Название поля 3:</dt>
<dd>Значение поля 3:</dd>

С помощью CSS dt идет налево, dd идет направо, получается списочек. По аналогии с остальными пунктами хаверкард.

 

Нужно помочь доработать foreach. Проблема в том, что $group выводит ключи групп дополнительных полей, а не названия самих доп. полей.

 

Кто сообразит?

Share this post


Link to post
Share on other sites

Судя по $member['custom_fields'][ $group ] там многомерный массив.

Share this post


Link to post
Share on other sites

С помощью print_r() вывел массив в шаблон, чтоб посмотреть, что там есть. Структура следующая:

Array (
[contact] => Array (
	[icq] => тут icq
	[jabber] =>
	[skype] => тут скайп
)
[profile_info] => Array (
	[gender] => Мужчина
	[location] => тут город
	[interests] => тут интересы
	[gm] => мое доп. поле
	[faction] => мое доп. поле
	[veteran] => мое доп. поле
)
)

Названий доп. полей значит нет, только ключи и значения. Получается надо еще прописать вывод названия ключам...

Share this post


Link to post
Share on other sites

В общем разобрался сам. Правда сделал специфично, для себя. Но принцип понятен.

 

<if test="authorcfields:|:$member['custom_fields'] != """>
<foreach loop="customFieldsOuter:$member['custom_fields'] as $group => $data">
<foreach loop="customFields:$member['custom_fields'][ $group ] as $key => $field">
<if test="$field != ''">
	<if test="$key == 'faction'">
	<span class="faction">{$field}</span>
	</if>
	<if test="$key == 'gm'">
	<span class="gmMask">{$field}</span>
	</if>
	<if test="$key == 'veteran'">
	<span class="legend"><img src="/forum/public/style_images/custom/legend.png" alt="{$field}"></span>
	</if>
</if>
</foreach>
</foreach>
</if>

  • Upvote 3

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...