Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

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

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

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

 

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

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

Опубликовано:

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

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

Опубликовано:

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

Опубликовано:
  • Автор

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

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

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

Опубликовано:

@-LoRD-,

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

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

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

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

Опубликовано:
  • Автор

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

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

Опубликовано:

-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

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.