Переменные в шаблонах IPB 3.4.8 - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

Теги не найдены

  • 2 Страниц +
  • 1
  • 2

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

#1 Пользователь не на сайте   HooLIGUN ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 47
  • Регистрация: 04-Декабрь 11
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 13 Январь 2016 - 19:13

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

Допустим мне нужно получить {$member['member_id']} в шаблоне customField__generic
Для этого я открываю шаблон, например, profileModern , список переменных, беру оттуда переменную $member=array(), и вставляю ее в нужный мне шаблон.
В шаблоне я указываю {$member['member_id']} , но оно естественно не работает.
Как правильно пользоваться переменными в шаблонах?
0

#2 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 289
  • Регистрация: 20-Март 09
  • Репутация: 2 087
  • IPB version:3.1.x
 

Отправлено 13 Январь 2016 - 21:01

Шаблоны это функции которым посредством переменных передаются некие данные. Если нужные данные в этом шаблоне отсутствуют, в коде где вызывается этот шаблон нужно их передать.

Передача переменной в шаблон
0

#3 Пользователь не на сайте   kgb ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 81
  • Регистрация: 11-Май 13
  • Репутация: 28
  • IPB version:2.3.x
 

Отправлено 13 Январь 2016 - 22:18

Цитата

беру оттуда переменную $member=array(),

Ты бы лучше написал, что надо сделать, чем то, что делаешь.
0

#4 Пользователь не на сайте   HooLIGUN ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 47
  • Регистрация: 04-Декабрь 11
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 16 Январь 2016 - 16:26

Не совсем понял, как их передать.
У меня в базе в таблице members есть поле steamid
оно вызывается в разрешенных шаблонах - {$member['steamid']}
А я хочу вызвать эту переменную в каком либо другом шаблоне..
0

#5 Пользователь не на сайте   kgb ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 81
  • Регистрация: 11-Май 13
  • Репутация: 28
  • IPB version:2.3.x
 

Отправлено 16 Январь 2016 - 17:31

Цитата

Не совсем понял, как их передать.

Никак. Надо понимать, что каждый шаблон - это функция, точнее метод класса. И переменные в шаблоне - это аргументы, которые передаются в эту функцию при вызове. В customField__generic приходит переменная $f, которая содержит созданные доп. поля профиля.
Я правильно понимаю, что ты хочешь в профиле пользователя добавить поле, которое будет содержать данные из поля steamid ? Если так, тогда создаешь доп шаблон в группе Profiles , например My_customField__generic с переменной, ну скажем тот же $member / А затем вызываешь этот шаблон в нужном месте из profileModern через {parse template="My_customField__generic" group="profileModern" params="$member"} , если как ты говоришь, в profileModern в массиве $member нужное значение есть. Только это сразу profileModern можно прописать. Непонятно, что тебе надо в итоге
0

#6 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 289
  • Регистрация: 20-Март 09
  • Репутация: 2 087
  • IPB version:3.1.x
 

Отправлено 16 Январь 2016 - 18:41

Цитата

Не совсем понял, как их передать.

Прочитайте внимательно тему выше, там все написано.

Цитата

У меня в базе в таблице members есть поле steamid
оно вызывается в разрешенных шаблонах - {$member['steamid']}
А я хочу вызвать эту переменную в каком либо другом шаблоне..

Если в этом шаблоне не предусмотренны такие данные, в месте где вызывается шаблон нужно их передать. Шаблоны это те же функции.
Так как править исходный код форума не всегда рационально, проще использовать данные там где они предусмотренны.
0

#7 Пользователь не на сайте   kgb ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 81
  • Регистрация: 11-Май 13
  • Репутация: 28
  • IPB version:2.3.x
 

Отправлено 16 Январь 2016 - 18:44

Цитата

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

А если нет, можно в принципе и так

<php>
$member_id	= intval( $this->request['id'] ) ? intval( $this->request['id'] ) : intval( $this->request['MID'] );
$member	= IPSMember::load( $member_id );
  echo '<pre>';
  print_r($member);
  echo '</pre>';
</php>
<if test="$f->parsed != ''">
	<span class='row_title'>{$f->raw_data['pf_title']}</span>
	<div class='row_data'>
		<if test="genericIsArray:|:is_array($f->parsed)">
			{parse expression="implode( '<br />', $f->parsed )"}
		<else />
			{$f->parsed}
		</if>
	</div>
</if>




Но, млин, зачем этот огород все таки?
0

#8 Пользователь не на сайте   HooLIGUN ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 47
  • Регистрация: 04-Декабрь 11
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 16 Январь 2016 - 22:01

Как еще проще объяснить?
Есть данные в поле steamid
Нужно вывести эти данные в профиле юзера (если оно есть соответственно)
Например в customField__generic вывести :
<if test="$member['steamid'] != ''">
	<span class='row_title'>STEAMID</span>
	<div class='row_data'>{$member['steamid']}</div>
</if>


Да и вообще хочу научится запрашивать разные данные о пользователях в разных шаблонах..

Цитата

А затем вызываешь этот шаблон в нужном месте из profileModern через {parse template="My_customField__generic" group="profileModern" params="$member"}

Почему group="profileModern" , если группа шаблонов group="skin_profile"
profileModern я вообще в пример привел, так как там выше описанный код работает.
Но мне не удобно писать код в том шаблоне, мне его нужно вывести совсем в другое место, например, как и говорил в customField__generic
0

#9 Пользователь не на сайте   kgb ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 81
  • Регистрация: 11-Май 13
  • Репутация: 28
  • IPB version:2.3.x
 

Отправлено 16 Январь 2016 - 22:29

Цитата

Почему group="profileModern" , если группа шаблонов group="skin_profile"

Ну да, skin_profile , торопился.

Цитата

Как еще проще объяснить?
Есть данные в поле steamid
Нужно вывести эти данные в профиле юзера (если оно есть соответственно)
Например в customField__generic вывести :


Ну не будет там этой переменной, откуда ей взяться? Либо грубо лезть в файлы и добавлять ее там, т.е.

Цитата

править исходный код форума
либо получать ее в шаблоне. Код выше я привел, попробуй
Проверь,

Цитата

echo '<pre>';
print_r($member);
echo '</pre>';


Есть она там? Если есть, то
<if test="$member['steamid'] != ''">
    <span class='row_title'>STEAMID</span>
    <div class='row_data'>{$member['steamid']}</div>
</if>


должен работать
0

#10 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 289
  • Регистрация: 20-Март 09
  • Репутация: 2 087
  • IPB version:3.1.x
 

Отправлено 16 Январь 2016 - 22:52

Цитата

либо получать ее в шаблоне. Код выше я привел, попробуй

Логика в шаблоне признак дурного тона, обычно это ведет только к говнокоду. Пример выше добавит +1 sql запрос, хотя эти данные уже один раз были загружены.

Цитата

Да и вообще хочу научится запрашивать разные данные о пользователях в разных шаблонах.

Во всех шаблонах вы можете "запрашивать" только данные текущего пользователя. Остальные данные зависят от шаблоны - предусмотренны они в нем или нет, и не важно кому они принадлежат пользователям или кому-то еще.
0

#11 Пользователь не на сайте   kgb ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 81
  • Регистрация: 11-Май 13
  • Репутация: 28
  • IPB version:2.3.x
 

Отправлено 16 Январь 2016 - 23:30

Цитата

Логика в шаблоне признак дурного тона, обычно это ведет только к говнокоду. Пример выше добавит +1 sql запрос

Так то оно так, н предложи решение. Если ТС хочет получить эти данные именно в этом шаблоне. Да и потом, IPB сам активно использует логику в шаблонах. Ну а 1 sql-запрос, если он будет только в профиле пользователя не страшен.
0

#12 Пользователь не на сайте   Dmitriy427 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 574
  • Регистрация: 15-Октябрь 11
  • Репутация: 149
  • Откуда:Россия, Тула
  • IPB version:3.3.x
 

Отправлено 17 Январь 2016 - 00:08

В шаблоне дополнительных полей профиля, и многих других, можно использовать данные из объекта $this, не делая лишних запросов к базе.
<if test="$this->memberData[steamid'] != ''">
    <span class='row_title'>STEAMID</span>
    <div class='row_data'>{$this->memberData['steamid']}</div>
</if>

Кроме пользователя, там обычно есть настройки, кэш, данные активного приложения... вобщем, почти все, что вам может понадобиться. Смотрите "var_dump($this);".
0

#13 Пользователь не на сайте   HooLIGUN ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 47
  • Регистрация: 04-Декабрь 11
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 17 Январь 2016 - 00:29

При таком использовании выходит ошибка
Fatal error: Cannot use object of type ips_MemberRegistry as array

А если заменить member на memberData , то будет выводится информация о текущем юзере (то есть обо мне)
0

#14 Пользователь не на сайте   Dmitriy427 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Specialist
  • Сообщений: 574
  • Регистрация: 15-Октябрь 11
  • Репутация: 149
  • Откуда:Россия, Тула
  • IPB version:3.3.x
 

Отправлено 17 Январь 2016 - 00:39

Не то имя массива, четверкой занимался в последнее время, вот и путаюсь бывает. Поправил.

Что вам мешает самому заглянуть в дамп и узнать все наверняка?
0

#15 Пользователь не на сайте   kgb ответил: »

 
 
  • Member
  • **
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 81
  • Регистрация: 11-Май 13
  • Репутация: 28
  • IPB version:2.3.x
 

Отправлено 17 Январь 2016 - 00:40

Цитата

В шаблоне дополнительных полей профиля, и многих других, можно использовать данные из объекта $this, не делая лишних запросов к базе.

$this->member и $this-memberData содержат данные текущего пользователя, т.е. того, кто просматривает. А ТС нужны данные владельца профиля
0

Сообщить об этой теме:


  • 2 Страниц +
  • 1
  • 2


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна