Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Дополнительные поля профиля в 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>

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

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.