Дополнительные поля профиля в HoverCard на IPB 3.2.x - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

Теги не найдены
Страница 1 из 1
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в этой теме

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

#1 Пользователь не на сайте   weiss »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 113
  • Регистрация: 07-Август 11
  • Репутация: 14
  • Откуда:Rivendell
  • IPB version:3.2.x
 

Отправлено 03 Февраль 2012 - 18:39

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

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

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

#2 Пользователь не на сайте   weiss »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 113
  • Регистрация: 07-Август 11
  • Репутация: 14
  • Откуда:Rivendell
  • IPB version:3.2.x
 

Отправлено 03 Февраль 2012 - 19:17

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

#3 Пользователь не на сайте   weiss »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 113
  • Регистрация: 07-Август 11
  • Репутация: 14
  • Откуда:Rivendell
  • IPB version:3.2.x
 

Отправлено 03 Февраль 2012 - 19:27

С помощью print_r() вывел массив в шаблон, чтоб посмотреть, что там есть. Структура следующая:
Array (
	[contact] => Array (
		[icq] => тут icq
		[jabber] =>
		[skype] => тут скайп
	)
	[profile_info] => Array (
		[gender] => Мужчина
		[location] => тут город
		[interests] => тут интересы
		[gm] => мое доп. поле
		[faction] => мое доп. поле
		[veteran] => мое доп. поле
	)
)

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

#4 Пользователь не на сайте   weiss »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 113
  • Регистрация: 07-Август 11
  • Репутация: 14
  • Откуда:Rivendell
  • IPB version:3.2.x
 

Отправлено 03 Февраль 2012 - 20:11

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

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

2

Сообщить об этой теме:


Страница 1 из 1
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в этой теме

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Заказ дизайна форума

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.3 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2012 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна