манго-манго |
18.11.2009 19:18 |
самописный движок смарти
Суть проблемы:
Ссылки отображаються только вверху до тегов html.
Сайт включаеться последовательно, через класы шаблонов tpl
я прописал шаблон, вставил в шаблон php код
<?
global $sape;
echo $sape->return_links();
?>
делал и так {PHP} код {/PHP}
всеравно код в нужном месте отображаеться текстом.
Предполагаю что стоит фильтр на html или текст, т.е. кроме них ничего не хочет отображаться.
вот код файла functions.php
который как мне кажеться отвечает за эту фильтрацию
PHP код:
function get_http_var($method, $var_name)
{
// Функция получения информации отправленной по типу GET или POST ,COOKIE , FILES
// Если переменная не существует возвращает NULL
static $method_list = array("GET" => 1, "POST" => 1, "COOKIE" => 1, "FILES" => 1); // Возможные виды $method
if (!isset($method_list[$method])) return NULL;
if ($method != "FILES") $global_array = "HTTP_" . $method . "_VARS";
else $global_array = "HTTP_POST_FILES";
global ${$global_array};
if (isset(${$global_array}[$var_name]))
{
if (($method == "GET" || $method == "POST") && !is_string(${$global_array}[$var_name])) return NULL;
return ${$global_array}[$var_name];
}
else return NULL;
}
function escape($str)
{
// фильтр строки
return stripcslashes(mysql_escape_string(htmlspecialchars(trim($str))));
}
сайт собираеться index.php > functions.php > template.php > main.tpl (хэдер , футер и так далее)
Добавлено через 3 часа 58 минут
на всякий случай прилогаю как файл template.php
PHP код:
<?php
/*
* Класс для обработки шаблонов.
*
* Шаблон представляет собой файл или строковую переменную, в которой могут
* присутствовать именованные поля подстановки вида <%name%>,
* где name - имя данного поля.
* Класс позволяет выполнять замену именованных полей любыми данными.
*
* Использование:
*
* 1) $tpl = new Template();
* Создание объекта класса Template. При создании объекта данного класса
* в скобках можно указать путь к файлу, где находится требуемый шаблон.
* Пример:
* $tpl = new Template("/usr/local/www/templates/template1.html");
* При этом в объект загружается шаблон из указанного файла.
*
* 2) $tpl->prepare($string);
* Если шаблон находится не в файле, а в переменной $string, то данный метод
* позволит загрузить этот шаблон в объект $tpl.
*
* 3) $tpl->set_var($name, $value);
* Заменяет значение поля с именем $name, входящем в шаблон, на $value.
*
* 5) $value = $tpl->get_var($name);
* Возвращает текущее значение поля с именем $name, входящего в шаблон.
*
* 6) $text = $tpl->get_doc();
* Данный метод возвращает документ, полученный на основе шаблона, учитывая
* все сделанные до его вызова подстановки полей.
*/
class Template
{
var $a, $b;
var $vars;
var $n;
function read_from_file($filename)
{
$fp = NULL;
$text = "";
$fp = fopen($filename, "rb");
if (!($fp === false))
{
$text = fread($fp, filesize($filename));
fclose($fp);
}
return $text;
}
function Template($filename = "")
{
$text = "";
if ($filename != "")
{
$text = Template::read_from_file($filename);
}
Template::prepare($text);
}
function prepare($text)
{
$this->a = array();
$this->b = array();
$this->vars = array();
$tmp = explode('%>', $text);
$n = count($tmp);
$this->n = $n;
if ($n > 1)
{
$j = 0;
for ($i = 0; $i < $n; $i++)
{
$tmp1 = explode('<%', $tmp[$i], 2);
if (count($tmp1) == 2)
{
$this->a[$i] = $tmp1[0];
if (!isset($this->vars[$tmp1[1]])) $this->vars[$tmp1[1]] = '<%' . $tmp1[1] . '%>';
$this->b[$i] = & $this->vars[$tmp1[1]];
}
else
{
$this->a[$i] = $tmp1[0];
$this->b[$i] = '';
}
}
}
else
{
$this->a[0] = $tmp[0];
$this->b = '';
}
}
function get_doc()
{
$i = 0;
$text = "";
for ($i = 0; $i < $this->n; $i++)
{
$text .= $this->a[$i] . $this->b[$i];
}
return $text;
}
function set_var($name, $value)
{
$this->vars[$name] = $value;
}
function get_var($name)
{
return $this->vars[$name];
}
}
?>
задача наконец запустить php
global $sape;
echo $sape->return_links();
|