Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

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

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Переменные в шаблоне 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'].

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

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.