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

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

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

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

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

Переменные в шаблонах IPB 3.4.8

Здравствуйте.

Подскажите пожалуйста,как пользоваться переменными в шаблонах IPB?

 

Допустим мне нужно получить {$member['member_id']} в шаблоне customField__generic

Для этого я открываю шаблон, например, profileModern , список переменных, беру оттуда переменную $member=array(), и вставляю ее в нужный мне шаблон.

В шаблоне я указываю {$member['member_id']} , но оно естественно не работает.

Как правильно пользоваться переменными в шаблонах?

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

Ну а 1 sql-запрос, если он будет только в профиле пользователя не страшен.

В случае профиля для загрузки данных пользователя используется стандартный метод IPSMember::load. Используя в вызове те же таблицы, можем получить пользователя из кеша без дополнительных sql запросов.

Но следует понимать, что шаблон customField__generic привязан к дополнительным полям а не к профилю, он может вызываться где угодно и не имеет никакого конкретного отношения к переменным $this->request['id'] или $this->request['MID'] - они могут быть, могут не быть, а могут относится вообще к другим сущностям.

 

Единственный более менее приемлемый вариант это правка исходного кода и передача данных пользователя в шаблоне.

\admin\sources\classes\customfields\profileFields.php

 

					$__func = 'customField__generic';

					if( method_exists( ipsRegistry::getClass( 'output' )->getTemplate( $this->skinGroup ), $__func ) )
					{
						$this->out_fields[ $field->raw_data['pf_group_key'] ] [ $field->raw_data['pf_key'] ] = ipsRegistry::getClass( 'output')->getTemplate( $this->skinGroup )->$__func( $field );
						continue;
					}

 

Заменить на

 

					$__func = 'customField__generic';

					if( method_exists( ipsRegistry::getClass( 'output' )->getTemplate( $this->skinGroup ), $__func ) )
					{
						$this->out_fields[ $field->raw_data['pf_group_key'] ] [ $field->raw_data['pf_key'] ] = ipsRegistry::getClass( 'output')->getTemplate( $this->skinGroup )->$__func( $field, ( ! empty( $this->member_data ) ? $this->member_data : array() ) );
						continue;
					}

 

В шаблоне customField__generic, на вкладке Переменные, добавить через запятую вторую переменную $member=array()

 

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

  • Автор

Спасибо, ваш "костыль" помог вывести нужную мне переменную.

По сути я понял, что не получиться просто так вставить переменную в шаблон. Всё очень сложно с этим...

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

Аккаунт

Навигация

Поиск

Поиск

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

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