Вывод данных из php в другой темплейт при указании параметра

Сложный вопрос (ну для меня это точно =))

 • Просмотры: 441
Te
Tetrix
Сообщения: 207
Зарегистрирован: 06 июн 2010, 23:23
Сообщение

Вывод данных из php в другой темплейт при указании параметра

11 ноя 2010, 10:48

Идея такая, на примере вьюфорума допустим, можно ли сделать так:
при запросе viewforum.php&f=XXX - использовался бы темплейт viewforum_body.html или viewforum_tracker_body.html - как и стандартно, а при запросе вида: viewforum.php&f=XXX?mode=anothertpl - допустим viewforum_body_anothertpl.html и соответственно viewforum_tracker_body_anothertpl.html
Достаточно одного такого параметра, т.е. мне просто нужен механизм вывода контента в другом виде, но без задваивания php файлов, ведь можно создать еще один вьюфорум.пхп и ему назначить другие темплейты, но не хочется =) итак форум тяжелый (у меня :D ) еще сильнее его нагружать - ну его нафик.

Умельцы - объясните!!!!! Помогите, спасите!
Аватара пользователя
serrrios
Благодарил (а): 11 раз
Поблагодарили: 119 раз
Сообщения: 1532
Зарегистрирован: 29 май 2009, 20:22
Сообщение

Вывод данных из php в другой темплейт при указании параметра

11 ноя 2010, 11:18

Набросал на коленке, по идеи должно работать:
Открываем viewtopic.php
Находим:

Код: Выделить всё

$user->session_begin();
$auth->acl($user->data);
Добавляем после:

Код: Выделить всё

$mode=request_var('mode', '');
Находим:

Код: Выделить всё

if($forum_astracker)
{
	$template->set_filenames(array(
		'body' => ($view == 'print') ? 'viewtopic_print.html' : 'viewtopic_tracker_body.html')
	);
}
else
{
	$template->set_filenames(array(
		'body' => ($view == 'print') ? 'viewtopic_print.html' : 'viewtopic_body.html')
	);
}
Меняем на:

Код: Выделить всё

if($mode == '')
{
if($forum_astracker)
{
	$template->set_filenames(array(
		'body' => ($view == 'print') ? 'viewtopic_print.html' : 'viewtopic_tracker_body.html')
	);
}
else
{
	$template->set_filenames(array(
		'body' => ($view == 'print') ? 'viewtopic_print.html' : 'viewtopic_body.html')
	);
}
}
if($mode == 'anothertpl')
{
if($forum_astracker)
{
	$template->set_filenames(array(
		'body' => ($view == 'print') ? 'viewtopic_print.html' : 'viewtopic_tracker_body_anothertpl.html')
	);
}
else
{
	$template->set_filenames(array(
		'body' => ($view == 'print') ? 'viewtopic_print.html' : 'viewtopic_body_anothertpl.html')
	);
}
}
http://aniproject.ru - перспектива... велком епта..
http://www.ppkbb3cker.ru/viewtopic.php?f=35&t=1042 - мои платные услуги по трекеру.
Te
Tetrix
Сообщения: 207
Зарегистрирован: 06 июн 2010, 23:23
Сообщение

Вывод данных из php в другой темплейт при указании параметра

11 ноя 2010, 11:28

serrrios
как я понял сам модификатор нужно вписывать в

Код: Выделить всё

if($mode == ' ')
между апострофами?
типа так:

Код: Выделить всё

if($mode == ' модификатор')
Последний раз редактировалось Tetrix 11 ноя 2010, 11:29, всего редактировалось 1 раз.
Аватара пользователя
serrrios
Благодарил (а): 11 раз
Поблагодарили: 119 раз
Сообщения: 1532
Зарегистрирован: 29 май 2009, 20:22
Сообщение

Вывод данных из php в другой темплейт при указании параметра

11 ноя 2010, 11:30

Ога.
http://aniproject.ru - перспектива... велком епта..
http://www.ppkbb3cker.ru/viewtopic.php?f=35&t=1042 - мои платные услуги по трекеру.
Te
Tetrix
Сообщения: 207
Зарегистрирован: 06 июн 2010, 23:23
Сообщение

Вывод данных из php в другой темплейт при указании параметра

11 ноя 2010, 11:33

а все, понял, кажись.
Спасибо, попробую вечером, отпишусь.
Te
Tetrix
Сообщения: 207
Зарегистрирован: 06 июн 2010, 23:23
Сообщение

Вывод данных из php в другой темплейт при указании параметра

12 ноя 2010, 05:31

во вьюфоруме не работает:

Код: Выделить всё

[phpBB Debug] PHP Notice: in file /viewforum.php on line 155: Undefined variable: mode
[phpBB Debug] PHP Notice: in file /viewforum.php on line 170: Undefined variable: mode
как я понял эту переменную как-то надо объявить что-ле там.
Буду разбираться на примере вьютопика, но боюсь тщетно, поэтому смиренно жду помощи :D
Te
Tetrix
Сообщения: 207
Зарегистрирован: 06 июн 2010, 23:23
Сообщение

Вывод данных из php в другой темплейт при указании параметра

12 ноя 2010, 05:57

так проблему решил.
надо дописать:

Код: Выделить всё

// Start initial var setup
...blah-blah...
$mode		= request_var('mode', '');
только теперь такая проблема, если ввести в строке &mode=(любое другое значение кроме anothertpl или пустоты)
Выходит ошибка:

Код: Выделить всё

template->_tpl_load(): No file specified for handle body
все понятно, это кстати мной и ожидалось, поэтому и проверил, но как исправить??????? :cry: :cry: :cry:
Te
Tetrix
Сообщения: 207
Зарегистрирован: 06 июн 2010, 23:23
Сообщение

Вывод данных из php в другой темплейт при указании параметра

12 ноя 2010, 06:05

Всем спасибо, всем отбой, решил так,
вместо

Код: Выделить всё

if($mode == ' ')
Поставил

Код: Выделить всё

if($mode != 'anothertpl ')
т.е. если не равняется нужному значению - грузить обычный, равняется - грузить другой.
Аватара пользователя
serrrios
Благодарил (а): 11 раз
Поблагодарили: 119 раз
Сообщения: 1532
Зарегистрирован: 29 май 2009, 20:22
Сообщение

Вывод данных из php в другой темплейт при указании параметра

12 ноя 2010, 09:34

Ну да, так правильней =)
http://aniproject.ru - перспектива... велком епта..
http://www.ppkbb3cker.ru/viewtopic.php?f=35&t=1042 - мои платные услуги по трекеру.

Вернуться в «Вопросы, ответы и примеры решений»