Помогите пожалуста, запутался с шаблонами...

AlexandrKa

Новичок
Помогите пожалуста, запутался с шаблонами...

Есть сайт. Сайт написан самописно - не мной. Сейчас я его поддерживаю. Дело такое, в шаблон типа [tmpl:name][/tmpl:name], нужно вставить код. Код для этой страницы шаблона вызывается из специального файла модуля к этому сайту. Тык у меня вопрос такой (ниже код дам): Немогу понять почему, то что я пытаюсь всавить в этот шаблон, появляется вверху над всем сайтом, а не в том месте где у меня должно стоять. Значит код:

код файла (функции), так устроен сайт:
ournews.php

PHP:
<?
class ournews extends site_module{
    function main(){

	$aaa['Novost'] = include 'empty.php';

		    tmpl_iterate($this->Template, 'rowsour');
		    tmpl_set($this->Template, 'rowsour', $aaa);
			
	}	
}
?>
И есть шаблон:
main.html
PHP:
<table cellspacing="0" cellpadding="0">
	<tr>
                          <td class="spec"><CENTER>Скоро тут будут наши новости!
<tmpl:ournews>
              <table cellpadding="0" cellspacing="0">
<tmpl:rowsour>
	<tr>
		<td>

								</td>
	</tr>
</tmpl:rowsour>
	</table>
</tmpl:ournews>
	</CENTER></td>
	</tr>
</table>
B вот между этими тэгами
PHP:
<tmpl:ournews>
и
PHP:
</tmpl:ournews>
должны вставиться инклудированный файл empty.php, но он вставляется почему то в самый верх страницы!

Скорее всего у меня ошибка где то тут
PHP:
	$aaa['Novost'] = include 'empty.php';

		    tmpl_iterate($this->Template, 'rowsour');
		    tmpl_set($this->Template, 'rowsour', $aaa);
ГОРЮ!!
ПОМОГИТЕ ПОЖАЛУСТА!!!

СПАСИБО, огромное всем откликнувшимся!
 

white phoenix

Новичок
PHP:
$aaa['Novost'] = include 'empty.php';
Забавная конструкция... как я понимаю в $aaa['Novost'] надо записать результат выполнения empty.php. Сделай
PHP:
$tmp = ob_get_contents();
ob_end_clean();
ob_start();
include 'empty.php';
$aaa['Novost'] = ob_get_contents();
ob_clean();
echo $tmp;
 

AlexandrKa

Новичок
white phoenix,

в файле empty.php содержиться следующий код:

PHP:
<?

		include 'newz/head.php';
		$number = 5;
		include $cutepath.'/show_news.php'; 	

?>

Также попробывал твой код, прописал его в файл ournews.php, но всёравно ничего не получается! Вообще ничего не выводит! :(
 

white phoenix

Новичок
Покажи
PHP:
var_dump($aaa['Novost']);
Исполнение empty.php выводит то что нужно? Возможно $tmp используется, замени попробуй на $blablabla_tmp.
 

AlexandrKa

Новичок
white phoenix
Да, файл empty.php нормально работает, выводит с МОИМ кодом то что надо, но не вставляет в шаблоне его куда надо, а закидывает на самый верх страницы! и получется на самом верху страницы исполненный код empty.php !!

Чтож делать? :(
 

white phoenix

Новичок
AlexandrKa
Естественно. Надо включить буференизацию, выполнить код, и отловить значение буфера. Как это сделать я написал выше. [m]ob_start[/m].
 

AlexandrKa

Новичок
white phoenix скажи пожалуста, вот твой код где должен быть размещен? Я так понимаю должен выглядеть так? :

PHP:
<?
class ournews extends site_module{
    function main(){


$tmp = ob_get_contents(); 
ob_end_clean(); 
ob_start(); 
include 'empty.php'; 
$aaa['Novost'] = ob_get_contents(); 
ob_clean(); 
echo $tmp;
		    tmpl_iterate($this->Template, 'rowsour');
		    tmpl_set($this->Template, 'rowsour', $aaa);
	}
}
?>
Или я нет? :(
 

white phoenix

Новичок
Судя по всему да. Что показывает
PHP:
var_dump($aaa['Novost']);
которая должна идти после
PHP:
$aaa['Novost'] = ob_get_contents();
?
 

AlexandrKa

Новичок
white phoenix

понимаеш я на прямую не могу воспользоваться файлом ournews.php в котором содержиться этот код. Так как он содержиться там же где и код портала которые не досутпен в public_html. Но если создать отдельный файл в public_html с этим содержимым и запустить его то вижу следующее (как раз сами новости)

PHP:
string(1050) " 12.01.2006 23:24
Новость 8 тут!! 
12.01.2006 23:23
Здесь идет новость 7 
12.01.2006 23:23
Новость 6 
12.01.2006 23:20
Новость 5 
12.01.2006 23:00
Тест добавления фотографий к новостям 

1 2 >

"
 

white phoenix

Новичок
AlexandrKa
string(1050) от предложеного var_dump? То что нужно? Так в чем проблема? В шаблон передавай.
 

white phoenix

Новичок
AlexandrKa
> а что означает string(1050) ?
string - тип переменной, 1050 - размер в байтах.
> Сверху исчезает (как было с моим кодом)
PHP:
class ournews extends site_module{ 
    function main(){ 

ob_start();  
include 'empty.php';  
$aaa['Novost'] = ob_get_contents();  
ob_end_clean();
            tmpl_iterate($this->Template, 'rowsour'); 
            tmpl_set($this->Template, 'rowsour', $aaa); 
    } 
}
 

AlexandrKa

Новичок
Знаеш теперь какая фигня получилась с данным кодом...

то что содержиться в файле empty.php - должно вызвыть новости которые лежат в БД. А если использовать твой код, то он берет новости которые сохранились в кэшэ! А если на прямую грузить empty.php (ну что бы проверить) то нормально открываются новости даже если почистить кэш! :( Что можно сделать? :(
 

AlexandrKa

Новичок
Да точно. Вот в админке от новостей есть ссылка "Очистить кэш" его очищаеш и на главной странице где вызывается этот модуль
PHP:
class ournews extends site_module{.........
появляются ошибки чтения из кэша функции типа fopen()... Но стоит открыть отдельно страницу empty.php в папке /cache появляются файлы типа ****.tmp и новости на главной грузяться!
 
Сверху