Перейти к публикации
View in the app

A better way to browse. Learn more.

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

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

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

Сейчас на странице 0

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.