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

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

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

Да и потом, IPB сам активно использует логику в шаблонах.

Не использует. Использует логические условия а не бизнес логику.

 

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

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

 

Так то оно так, н предложи решение

Использовать данные там где они есть. Так ли они нужны в этом шаблоне?

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


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

Ну а 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()

 

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

  • Upvote 1

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


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

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

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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