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

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

Recommended Posts

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Edited by -LoRD-

Share this post


Link to post
Share on other sites

@-LoRD-,

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

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

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

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

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

 

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

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

Share this post


Link to post
Share on other sites

@-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'].

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...