Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
weiss

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

Рекомендованные сообщения

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

 

В общем есть одна идея. У меня (думаю, как и у многих) в юзеринфо в темах форума выводятся дополнительные поля профиля. А в настройках форума, в разделе оптимизации, есть настройка: 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 выводит ключи групп дополнительных полей, а не названия самих доп. полей.

 

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

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

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

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

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

Поделиться сообщением


Ссылка на сообщение

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

 

<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

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...