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

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

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

Добрый вечер.

Задача у меня очень простая:

Нужно вывести в boardIndexTemplate содержимое переменной starter_name из таблицы topics. (на главной, под отображением последней темы и последнего ответившего- вывести автора этой последней темы) last_topic_id получить удается и все запросы к таблице forums проходят нормально через переменную $forum_data а вот как обратится к таблице topics? Похоже, что нужно как-то декларировать переменную, содержащую данные из topics но как и где это сделать я не нашел. Добавить дополнительную переменную к шаблону (через кнопку в шапке редактора) не удается, так как при сохранении вылазят ошибки и переменная не добавляется.

 

Буду очень благодарен за любые наводки, так же если есть где-то FAQ по логике шаблонов 3.x.x - буду благодарен.

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


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

Может надо способ вывода в forums (где список тем) смотреть?

Как туда данныйе о ТС выводятся?

  • Upvote 1

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


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

Возможно я не очень правильно понимаю как работает IPB. Но что значит декларировать переменную? Ее нужно не только декларировать ей нужно присвоить соответствующее значение. Сначала в соответсвующем скрипте формируются массив переменных посредством запросов к базе, и потом вызывается шаблон.

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


Ссылка на сообщение
03/13/11 19:15 (изменено)

Сначала в соответсвующем скрипте формируются массив переменных посредством запросов к базе, и потом вызывается шаблон.

Нельзя просто добавить даже использующуюся в других шаблонах скина переменную, она просто не будет функционировать. Поэтому в этом и весь вопрос. Как сопоставить переменную определенного шаблона и присвоение ей значения из базы?

Изменено пользователем -LoRD-

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


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

@-LoRD-,

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

Так она же существует только в конкретный момент времени работы соответствующего скрипта.

Поэтому в этом и весь вопрос. Как сопоставить переменную определенного шаблона и присвоение ей значения из базы?

Стандартным образом. Идете в php скрипт, который заполняет BoardIndexTemplate, формируете запрос в базу, получаете значение и вызываете шаблон, в котором предварительно вставляете вашу переменную. А вот куски кода можно взять из скрипта, который заполняет шаблон, там где это переменная есть.

  • Upvote 1

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


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

Судя по всему вы отлично разбираетесь в этом. Если вас не затруднит, могли бы вы привести конкретные фаилы для описанного в первом сообщении.

Заранее благодарен.

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


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

-LoRD-, если это чем-нибудь поможет, то файл admin\applications\forums\modules_public\forums\boards.php :)

Вам нужно выбрать данные из таблицы topics, где tid темы (topics) равен last_id из таблицы forums.

 

А лучше бросить эту затею.

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


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

Значение присвоено. Как теперь вызвать переменную в конкретном шаблоне?

 

А лучше бросить эту затею.

Почему? Думаю не мне одному пригодятся знания по этой теме.

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


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

@-LoRD-, ну тогда дерзай, сегодня как раз попался кусок этот, если я правильно понял, что речь идет о хуке "Последние сообщения"

Это в файле

.....\admin\applications\forums\sources\classes\forums\class_forums.php

 

строка 2420, там такой запрос

$this->registry->DB()->build( array( 
													'select'   => 't.tid, t.title, t.title_seo, t.start_date, t.starter_id, t.starter_name, t.moved_to, t.views, t.posts',
													'from'     => array( 'topics' => 't' ),
													'where'    => 't.tid IN (' . implode( ',', array_values( $_topics ) ) . ')',
													'add_join' => array(
																		array(
																				'select'	=> 'm.member_id, m.members_display_name, m.members_seo_name',
																				'from'  	=> array( 'members' => 'm' ),
																				'where' 	=> 'm.member_id=t.starter_id',
																				'type'  	=> 'left',
																			)
																	)
										)	 );

если его немного модифицировать ....t.starter_name, t.last_poster_name, t.moved_to,... , то в шаблоне hookRecentTopics можно будет использовать $r['last_poster_name'].

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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