Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
HooLIGUN

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

Recommended Posts

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

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

 

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

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

 

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...