Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Не совсем организация шаблона на PHP

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Не совсем организация шаблона на PHP
Имя
Сообщение << Старые топики   Новые топики >>
Не совсем организация шаблона на PHP - 2008-05-21 03:48:35.903333   
SaBo

Сообщений: 1089
Оценки: 0
Присоединился: 2005-02-17 20:16:54
Всем привет!

У меня есть шаблон login.tmpl с содержанием:

quote:

&lt;?php $content=new content(); ?&gt;
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;&lt;?php echo $content-&gt;title; ?&gt;&lt;/title&gt;



&lt;/head&gt;
&lt;body&gt;



&lt;h1 style="margin-bottom:30px"&gt;&lt;?php echo $content-&gt;headline; ?&gt;&lt;/h1&gt;

[здесь должен выводиться контент]

&lt;/body&gt;
&lt;/html&gt;


И есть файл index.php:

quote:

&lt;?php



class content{
public $content;
public $title;
public $headline;

function content(){
$this-&gt;title='титл';
$this-&gt;headline='заголовок';
echo('контент');
return true;
}//function content()
}//class content

require_once('../templates/nologin.tmpl');
?&gt;


При этом совершенно логично у меня в самом верху странички появляется слово "контент".
Но мне надо, что бы контент появлялся на странице в месте, обозначенном [здесь должен выводится контент]
Если вызывать функцию в месте вывода контента, то тогда, обращаясь к $content->title и $content->headline, я получу пустой результат, т.к. значения в эти переменные присваиваются в ф-ии content(), которая в тот момент ещё не была вызвана.

Я пока сделал такой вариант:

nologin.tmpl:

quote:

&lt;?php $content=new content(); ?&gt;
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;&lt;?php echo $content-&gt;title; ?&gt;&lt;/title&gt;



&lt;/head&gt;
&lt;body&gt;



&lt;h1 style="margin-bottom:30px"&gt;&lt;?php echo $content-&gt;headline; ?&gt;&lt;/h1&gt;

&lt;?php echo $content-&gt;content; ?&gt;

&lt;/body&gt;
&lt;/html&gt;


index.php:

quote:

&lt;?php



class content{
public $content;
public $title;
public $headline;

function content(){
&nbsp;$this-&gt;title='титл';
&nbsp;$this-&gt;headline='заголовок';
$this-&gt;content='контент';
&nbsp;return true;
}//function content()
}//class content

require_once('../templates/nologin.tmpl');
?&gt;


Но это не совсем то, что мне нужно, т.к. всё время писать $this->content.='строка1'; и т.д. не удобно, гораздо приятнее писать echo(), но, что бы функция выполнялась в начале кода, но её результат бы выводился в середине. Это вообще возможно?

Если чего не понятно описал - задавайте наводящие вопросы =))
Post #: 1
RE: Не совсем организация шаблона на PHP - 2008-05-21 07:51:30.590000   
userec

Сообщений: 30
Оценки: 0
Присоединился: 2007-07-23 21:32:11.240000
используй еще одну функцию.
Post #: 2
RE: Не совсем организация шаблона на PHP - 2008-05-21 08:19:52.253333   
SaBo

Сообщений: 1089
Оценки: 0
Присоединился: 2005-02-17 20:16:54
Не могу, т.к. у меня значения генерируются в ф-ии content();, а вынести их не могу, т.к. это просто не удобно. Собственно, ради удобства всё и затевалось.
Post #: 3
RE: Не совсем организация шаблона на PHP - 2008-05-21 10:55:18.480000   
oRb

Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
используй буферы.
перед тем как вызвать echo открываешь буфер, после закрываешь буфер и сливаешь его содержимое в переменную
Типо вот так:

function compile_file($path) { ob_start(); if ( file_exists($path) ) include($path); $temp = ob_get_contents(); ob_end_clean(); return $temp; }
Post #: 4
RE: Не совсем организация шаблона на PHP - 2008-05-21 14:13:38.376666   
Parano1d

Сообщений: 423
Оценки: 0
Присоединился: 2008-05-21 13:40:17.093333
Можно сделать как oRb написал, собственно, где у него include там делать echo… но все же самый правильный вариант будет, как ты уже сам писал, сделать через $this-&gt;content='контент';
в этом и заключается смысл шаблона… что ты выводишь в нем echo $content-&gt;content; а в самом классе использовать echo нежелательно.
Не знаю почему тебе не нравится такой подход…
Post #: 5
RE: Не совсем организация шаблона на PHP - 2008-05-21 14:30:19.156666   
oRb

Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
quote:

Не знаю почему тебе не нравится такой подход…

ибо шаблоны сложнее становятся. Ламера не посадишь их клепать, а самому конечно лень =). Да и вообще с echo проще, чем собирать по крупицам.
А инклюд у меня для подключения как раз шаблона. Единственный минус - область видимости переменных…
Post #: 6
RE: Не совсем организация шаблона на PHP - 2008-05-21 14:43:44.920000   
Parano1d

Сообщений: 423
Оценки: 0
Присоединился: 2008-05-21 13:40:17.093333
ниче не понял… ну вот давай твою функцию рассмотрим:

function compile_file($path)
{
ob_start();

if ( file_exists($path) )
include($path);

$temp = ob_get_contents();
ob_end_clean();
return $temp;
} ну сначала включаем буферизацию вывода, затем этот вывод буферизируем, потом получаем наш буфер, ну и возвращаем… а как автору то это поможет? нет, ну идея то конечно норм про буферизацию, но просто реализовать надо не так…

-ибо шаблоны сложнее становятся
хым… ну неужели echo $content-&gt;content; сложно для понимания? Как раз на разных страницах этот content может быть разным…
Post #: 7
RE: Не совсем организация шаблона на PHP - 2008-05-21 15:06:24.506666   
oRb

Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
короч, подождем ТС. мне показалось он про это спрашивал. я просто счас никакой. особо дискутировать не могу)
Post #: 8
RE: Не совсем организация шаблона на PHP - 2008-05-25 05:33:52.743333   
SaBo

Сообщений: 1089
Оценки: 0
Присоединился: 2005-02-17 20:16:54
Да, мн нужно именно то, что oRb подсказал. Только чё-то у меня нихрена не получилось.
Попробую ещё завтра на свежую голову
Post #: 9
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Не совсем организация шаблона на PHP







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.