Не совсем организация шаблона на PHP
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Не совсем организация шаблона на PHP - 2008-05-21 03:48:35.903333
|
|
|
SaBo
Сообщений: 1089
Оценки: 0
Присоединился: 2005-02-17 20:16:54
|
Всем привет! У меня есть шаблон login.tmpl с содержанием: quote:
<?php $content=new content(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title><?php echo $content->title; ?></title> … </head> <body> … <h1 style="margin-bottom:30px"><?php echo $content->headline; ?></h1> [здесь должен выводиться контент] </body> </html> И есть файл index.php: quote:
<?php … class content{ public $content; public $title; public $headline; function content(){ $this->title='титл'; $this->headline='заголовок'; echo('контент'); return true; }//function content() }//class content require_once('../templates/nologin.tmpl'); ?> При этом совершенно логично у меня в самом верху странички появляется слово "контент". Но мне надо, что бы контент появлялся на странице в месте, обозначенном [здесь должен выводится контент] Если вызывать функцию в месте вывода контента, то тогда, обращаясь к $content->title и $content->headline, я получу пустой результат, т.к. значения в эти переменные присваиваются в ф-ии content(), которая в тот момент ещё не была вызвана. Я пока сделал такой вариант: nologin.tmpl: quote:
<?php $content=new content(); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title><?php echo $content->title; ?></title> … </head> <body> … <h1 style="margin-bottom:30px"><?php echo $content->headline; ?></h1> <?php echo $content->content; ?> </body> </html> index.php: quote:
<?php … class content{ public $content; public $title; public $headline; function content(){ $this->title='титл'; $this->headline='заголовок'; $this->content='контент'; return true; }//function content() }//class content require_once('../templates/nologin.tmpl'); ?> Но это не совсем то, что мне нужно, т.к. всё время писать $this->content.='строка1'; и т.д. не удобно, гораздо приятнее писать echo(), но, что бы функция выполнялась в начале кода, но её результат бы выводился в середине. Это вообще возможно? Если чего не понятно описал - задавайте наводящие вопросы =))
|
|
|
RE: Не совсем организация шаблона на PHP - 2008-05-21 07:51:30.590000
|
|
|
userec
Сообщений: 30
Оценки: 0
Присоединился: 2007-07-23 21:32:11.240000
|
используй еще одну функцию.
|
|
|
RE: Не совсем организация шаблона на PHP - 2008-05-21 08:19:52.253333
|
|
|
SaBo
Сообщений: 1089
Оценки: 0
Присоединился: 2005-02-17 20:16:54
|
Не могу, т.к. у меня значения генерируются в ф-ии content();, а вынести их не могу, т.к. это просто не удобно. Собственно, ради удобства всё и затевалось.
|
|
|
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;
}
|
|
|
RE: Не совсем организация шаблона на PHP - 2008-05-21 14:13:38.376666
|
|
|
Parano1d
Сообщений: 423
Оценки: 0
Присоединился: 2008-05-21 13:40:17.093333
|
Можно сделать как oRb написал, собственно, где у него include там делать echo… но все же самый правильный вариант будет, как ты уже сам писал, сделать через $this->content='контент'; в этом и заключается смысл шаблона… что ты выводишь в нем echo $content->content; а в самом классе использовать echo нежелательно. Не знаю почему тебе не нравится такой подход…
|
|
|
RE: Не совсем организация шаблона на PHP - 2008-05-21 14:30:19.156666
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
quote:
Не знаю почему тебе не нравится такой подход… ибо шаблоны сложнее становятся. Ламера не посадишь их клепать, а самому конечно лень =). Да и вообще с echo проще, чем собирать по крупицам. А инклюд у меня для подключения как раз шаблона. Единственный минус - область видимости переменных…
|
|
|
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->content; сложно для понимания? Как раз на разных страницах этот content может быть разным…
|
|
|
RE: Не совсем организация шаблона на PHP - 2008-05-21 15:06:24.506666
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
короч, подождем ТС. мне показалось он про это спрашивал. я просто счас никакой. особо дискутировать не могу)
|
|
|
RE: Не совсем организация шаблона на PHP - 2008-05-25 05:33:52.743333
|
|
|
SaBo
Сообщений: 1089
Оценки: 0
Присоединился: 2005-02-17 20:16:54
|
Да, мн нужно именно то, что oRb подсказал. Только чё-то у меня нихрена не получилось. Попробую ещё завтра на свежую голову
|
|
|
|
|