Вот его код:
Свернутый текст
<?php
###############################################
###Устанавливаем кодировку и уровень ошибок ###
header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);
class content
{
var $vars = array();
var $content;
function set($name, $val) {
$this->vars[$name] = $val;
}
function out_content($tpl) {
$this->content = file_get_contents($tpl);
foreach($this->vars as $key => $val)
{
$this->content = str_replace($key, $val, $this->content);
}
echo $this->content;
}
}
$content = new content();
?>
Он прекрасно работает, но возникла задача которая мне не по силам.
Объясню подробнее о том что пишу чтоб все было понятно.
Пишу сайт который состоит из модулей и .tpl файлов шаблона которые эти модули обрабатывают и показывают в браузере.
Есть главный модуль, main.php в нем из шаблона только
<title>
Который лежит в БД МуSql.Но встала задача подключить в то что уже есть в модуле main.php (дизайн главной страницы сайта с таблицой) Подключить модуль вывода коротких новостей.
Все файлы раскиданы по папкам, тоесть модули в папке MOD, .tpl файлы в папке templates
Например мод-main.php имеет шаблон main.tpl
Свернутый текст
Вот код с помощью которого я пытался подключить модуль в модуль.
Но почему то мод short_story.php... а вернее его шаблон short_story.tpl отображается в верхней части страницы а не в теле main.tpl
Вот исходный код:
$result = mysqlQuery ('SELECT * FROM st_settings');
$myrow = mysql_fetch_assoc($result);
$content->set('{header}', $myrow['title']);
$content->set('{short_story}', include_once('./shtorm/mod/short_story/short_story.php'));
Но почему то мод short_story.php... а вернее его шаблон short_story.tpl отображается в верхней части страницы а не в теле main.tpl
Вот исходный код:
<table align="center" width="700" border="1" cellspacing="0" cellpadding="0">
<tr>
<td bgcolor="#CCCCCC" height="60"><div align="center">1| Тестовая новость</div></td>
</tr>
<tr>
<td bgcolor="#DFEFFF" height="100%"><div align="center">Тестовая новость вывод short story</div></td>
</tr>
<tr>
<td bgcolor="#CCCCCC" height="20"><div align="center">Тестовая новость</div></td>
</tr>
</table>
ВОТ ПОШЛО ТЕЛО MAIN.TPL
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Тестовый сайт</title>
</head>
<body>
<table align="center" width="1000" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="120" background="/templates/Default/img/header.gif">
ВОТ ТУТ ДОЛЖНА БЫТЬ ТАБЛИЧКА
</td>
</tr>
<tr>
<td>1</td>
</tr>
<tr>
<td height="60" background="/templates/Default/img/footer.gif"> </td>
</tr>
</table>
Помогите разобратся, может я что то не так подключаю? Самое интересное что данные из БД мод short_story получает и прекрасно отображает... а вот сам отображатся там где надо не хочет

Спустя 2 часа, 20 минут, 22 секунды (19.08.2010 - 19:19) twin написал(а):
echo $this->content;вот этого лучше не делать в функциях и классах. Иначе вывод будет не там, где указано, а там, где вызов функции. Лучше значение возвращать, а переменную выводить там, где нужно.
Спустя 13 часов, 38 минут, 52 секунды (20.08.2010 - 08:57) Tokugava написал(а):
Цитата (twin @ 19.08.2010 - 16:19) |
echo $this->content;вот этого лучше не делать в функциях и классах. Иначе вывод будет не там, где указано, а там, где вызов функции. Лучше значение возвращать, а переменную выводить там, где нужно. |
Это как

Спустя 5 минут, 36 секунд (20.08.2010 - 09:03) Basili4 написал(а):
Tokugava
примерно так
function sdfsda()
{
return this->cintent
}
$a=sdfsda();
а $a выведешь где тебе нужно
примерно так
function sdfsda()
{
return this->cintent
}
$a=sdfsda();
а $a выведешь где тебе нужно
Спустя 19 минут, 34 секунды (20.08.2010 - 09:23) Tokugava написал(а):
Спасибо! А как (и вообще возможно ли), вместо переменных, сделать константами и сохранить в папке модуля шаблона?...
Ну тоесть... допустим есть постоянные каталоги и файлы... например:
Каталог theme - в котором лежать шаблоны сайта.
Как этот каталог запихать в константу и вызывать там где надо тегом {theme}?
чтоб не прописывать путь типо:
а чтоб ссылка выглядела
Подскажите пожалуста, можно это имея шаблонизатор как у меня (в первом посте код), такую штуку реализовать и примерно как?
Соображения у мну были... типо:
Но походу я не туда забрел...
Ну тоесть... допустим есть постоянные каталоги и файлы... например:
Каталог theme - в котором лежать шаблоны сайта.
Как этот каталог запихать в константу и вызывать там где надо тегом {theme}?
чтоб не прописывать путь типо:
('./theme/myshablon/main.tpl')
а чтоб ссылка выглядела
{theme}/main.tpl
Подскажите пожалуста, можно это имея шаблонизатор как у меня (в первом посте код), такую штуку реализовать и примерно как?
Соображения у мну были... типо:
define('{THEME}', 'http://'. $_SERVER['HTTP_HOST'] .'/')
Но походу я не туда забрел...
Спустя 1 час, 16 минут, 56 секунд (20.08.2010 - 10:39) Tokugava написал(а):
Помогите
я уже везь мозк себе сломал. Неужели никак нельзя так сделать



Спустя 10 минут, 5 секунд (20.08.2010 - 10:50) linker написал(а):
define('MYCONST', 'sdsdsd');
$val = 'MYCONST';
$content = str_replace($key, constant($val), $content);
Спустя 1 час, 19 минут, 44 секунды (20.08.2010 - 12:09) Tokugava написал(а):
Цитата (linker @ 20.08.2010 - 07:50) |
define('MYCONST', 'sdsdsd'); |
И что, вот такой константой можно определить папку?

_____________
人類の敵
Чем умнее человек, тем легче он признает себя дураком!