Передача переменной в шаблон showCard и инициализация шаблона - Дизайн и модификация Invision Power Board

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

 

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

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

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

php в шаблонах

Страница 1 из 1
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в этой теме

Передача переменной в шаблон showCard и инициализация шаблона

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

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 145
  • Регистрация: 01-Август 13
  • Репутация: 12
  • IPB version:3.4.x
 

Отправлено 02 Август 2013 - 10:29

И снова здравствуйте!

У шаблона listWarnings имеется переменная $canWarn которая удобно используется в теле шаблона через условия типа <if test="canWarn:|:$canWarn">

Мне необходимо задействовать эту переменную в шаблоне showCard.

Простое добавление переменной приводит к ошибке, поскольку шаблон инициализируется с одной переменной таким кодом:

$this->returnHtml( $this->registry->getClass('output')->getTemplate('profile')->showCard( $member ) );

Как можно добавить в этот код инициализации шаблона вторую переменную? Просто $canWarn не срабатывает, $this->canWarn тоже.

Мне кажется, что эта переменная видна только в том классе, в котором она создана. Шаблон showCard выводится в файле admin/applications/members/modules_public/ajax/card.php а шаблон listWarnings в файле admin/applications/members/modules_public/profile/warnings.php

Спасибо!
0

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

 
 
  • Почетный робот
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
 

Отправлено 02 Август 2013 - 10:30

Обратите внимание

"Board url", указанный вами в профиле, некорректен, либо недоступен на данный момент. Пожауйста, заполните его, потому что он скорее всего потребуется при диагностике вашей проблемы.


0

#3 Пользователь не на сайте   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
 

Отправлено 02 Август 2013 - 21:53

Вы не до конца понимаете суть работы шаблонизатора. Сначала проводятся какие-то вычисления, собираются все необходимые данные, потом эти данные передаются в шаблон для последующего формирования исходного кода страницы. Не достаточно просто передать переменную "$canWarn" с аналогичным названием которая используется где-то в другом месте. Сначала вычислить, присвоить результат, потом уже передать в шаблоне.
Локальные переменные доступны только в текущем методе.

Весь код по обработке $canWarn начинается с комментария /* Can we view? */ по /* Load reasons */

ПС

Цитата

'select' => 'count(*) as dracula'

Lol :)
0

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

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 145
  • Регистрация: 01-Август 13
  • Репутация: 12
  • IPB version:3.4.x
 

Отправлено 02 Август 2013 - 22:21

Да, видел дракулу эту. Про шаблоны всё прекрасно понял и задал конкретный вопрос. Просто PHP не знаю толком. Если в том классе объявить $canWarn как global не поможет? Или без инициализации класса это бесполезно? Пока сделал всё без $canWarn и просто отобразил кнопку только админам. Но так не очень нравится и хочется разобраться в сути вопроса.

Без $canWarn кнопка отображается даже в профиле пользователя, которого настройками запрещено предупреждать, поэтому и не нравится такой обходной вариант.
0

#5 Пользователь не на сайте   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
 

Отправлено 02 Август 2013 - 22:32

Просмотреть сообщениеtasker сказал(а):

Если в том классе объявить $canWarn как global не поможет? Или без инициализации класса это бесполезно?

Не поможет, это два разных преставления и отрабатывают они в разных моментов.
Подключить класс не получится, потому что он участвует в генерации исходного кода, это не отдельное АПИ.
В этом случае придется продублировать код вычисления переменной в нужном месте.
0

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

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 145
  • Регистрация: 01-Август 13
  • Репутация: 12
  • IPB version:3.4.x
 

Отправлено 02 Август 2013 - 22:38

Спасибо! Странная архитектура. В идеале надо сделать отдельный класс, который можно инициализировать и в котором будет глобальная переменная $canWarn. Или добавить её инициализацию в другой класс, который всегда инициализируется и ничего не выводит.
0

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

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 145
  • Регистрация: 01-Август 13
  • Репутация: 12
  • IPB version:3.4.x
 

Отправлено 02 Август 2013 - 22:43

Мелкий вопрос, а зачем в условиях типа этого <if test="isadmin:|:$this->memberData['g_access_cp'] == 1"> вот эта часть isadmin:|:
0

#8 Пользователь не на сайте   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
 

Отправлено 02 Август 2013 - 23:00

Просмотреть сообщениеtasker сказал(а):

Спасибо! Странная архитектура.

Архитектура как раз нормальная.

Просмотреть сообщениеtasker сказал(а):

В идеале надо сделать отдельный класс, который можно инициализировать и в котором будет глобальная переменная $canWarn.

Зачем? Эта проверка выполняется только в одном месте, при выдаче предупреждений, и нигде больше. Так что особой необходимости для выведения в отдельный класс нету.

Просмотреть сообщениеtasker сказал(а):

Мелкий вопрос, а зачем в условиях типа этого <if test="isadmin:|:$this->memberData['g_access_cp'] == 1"> вот эта часть isadmin:|:

Метка для хуков
0

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

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 145
  • Регистрация: 01-Август 13
  • Репутация: 12
  • IPB version:3.4.x
 

Отправлено 02 Август 2013 - 23:07

Просмотреть сообщениеsiv1987 02 Август 2013 - 23:00 сказал(а):

Зачем? Эта проверка выполняется только в одном месте, при выдаче предупреждений, и нигде больше. Так что особой необходимости для выведения в отдельный класс нету.


Ну вот понадобилось мне использовать эту переменную в других шаблонах и не могу. Скажем, объект (массив) с данными пользователя виден везде, он типа глобального. Это позволяет использовать фишки типа $this->memberData['is_mod'] или $author['g_access_cp'] почти во всех шаблонах.
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
 

Отправлено 02 Август 2013 - 23:22

Просмотреть сообщениеtasker сказал(а):

Ну вот понадобилось мне использовать эту переменную в других шаблонах и не могу.

Мало ли кому что может понадобится в другом шаблоне. Там где это нужно выведено в отдельное АПИ.
Массив пользователя это важные данные, по суть приложение на нем держится. А $author['g_access_cp'] локальная переменная, хотя она может передаваться во многих шаблонах.
0

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

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 145
  • Регистрация: 01-Август 13
  • Репутация: 12
  • IPB version:3.4.x
 

Отправлено 02 Август 2013 - 23:29

Хорошо. Спасибо!

Могу тут описать как сделал такие кнопки предупреждений.

Вложение  warn1.JPG (2,32К)
Количество загрузок: 7
Вложение  warn2.JPG (2,79К)
Количество загрузок: 6

Если надо кому-нибудь.
0

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

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

Отправлено 03 Август 2013 - 01:31

А можно ? очень интересно мне
0

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

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 145
  • Регистрация: 01-Август 13
  • Репутация: 12
  • IPB version:3.4.x
 

Отправлено 03 Август 2013 - 10:38

mvArts, в отдельной теме сегодня опубликую.
0

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


Страница 1 из 1
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в этой теме

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
При копировании материалов с сайта
прямая ссылка на источник обязательна