Автор Тема: Темплейты  (Прочитано 11375 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Темплейты
« : 20 Марта 2002, 20:39:52 »
Суть задачи:
все шаблоны лежат в базе для некоторых страниц существуют шаблоны с переменными (как в этом форуме). Изучал исходники форума, но там всё слишком запутано ничего не понял :(
в общем попытался сделать тупо:

list($header)=mysql_fetch_array(mysql_query("select content from znak_template where template_name=\\"header\\""));
eval(
$header);
print 
$header;

Шаблон header содержит:

<html>
<
head>
<
title>$title</title>
<
meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</
head>
<
body bgcolor="#FFFFFF" text="#000000">


пишет:


Parse error
parse error in \\index.php(136) : eval()\'d code on line 1


Что делать?
« Последнее редактирование: 20 Марта 2002, 21:02:28 от AlieN »
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Britva

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1660
  • +0/-0
  • 0
    • Просмотр профиля
    • http://eugeny.com
Темплейты
« Ответ #1 : 20 Марта 2002, 21:00:33 »
нужно вот так:
eval(\'print "\'.$header.\'";\');
Евгений aka Razor,

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Темплейты
« Ответ #2 : 20 Марта 2002, 21:03:45 »
Вот так?:

function gettemplate($name)
{
list(
$template)=mysql_fetch_array(mysql_query("select content from znak_template where template_name=\\"$name\\" "));
 return (
$template);
}
function 
print_start($title)
{
$title="yo";
$header=gettemplate("header");
eval(\
'print $header\');
}

Если да то всё равно ошибки
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Britva

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1660
  • +0/-0
  • 0
    • Просмотр профиля
    • http://eugeny.com
млииин
« Ответ #3 : 20 Марта 2002, 21:11:43 »
напиши так как я написал!!!

eval(\'print $header\'); - ну нельзя так писать, сразу несколько ошибок
1. нет точки с запятой после $header
2. не взят $header в кавычки
3. в одинарных кавычках пеерменные ($) не подставляются, \\n,  \\r и т.д.
Евгений aka Razor,

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Темплейты
« Ответ #4 : 20 Марта 2002, 21:16:13 »
Так?

function gettemplate($name)
{
list(
$template)=mysql_fetch_array(mysql_query("select content from znak_template where template_name=\\"$name\\" "));
 return (
"$template");
}
function 
print_start($title)
{
$title="yo";
$header=gettemplate("header");
eval(
"print \\"$header\\";");
}

Если нет по не пиши как исправлять а исправленный код плиз
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Britva

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1660
  • +0/-0
  • 0
    • Просмотр профиля
    • http://eugeny.com
эх
« Ответ #5 : 20 Марта 2002, 21:36:39 »
замени
Цитировать
return ("$template");

на
return addslashes($template);
Евгений aka Razor,

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Темплейты
« Ответ #6 : 21 Марта 2002, 00:30:51 »
возможна еще такая конструкция:
<?
eval(\
'$p= "\'.addslashes($tpl).\'";\');
?>
с уважением,
магистр белой магии.

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Темплейты
« Ответ #7 : 21 Марта 2002, 11:33:39 »
Ок код работает!
А как теперь грамотно их подгружать т.е. если на странице используется 20 шаблонов это 20 евалов и следовательно 40 операторов :(
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Britva

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1660
  • +0/-0
  • 0
    • Просмотр профиля
    • http://eugeny.com
Темплейты
« Ответ #8 : 21 Марта 2002, 11:42:21 »
Значит так и подгружать.
А лучше в файлах хранить. я же класс специально писал.
Может еще версию для БД сделаю.
Евгений aka Razor,

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Темплейты
« Ответ #9 : 21 Марта 2002, 12:30:48 »
Britva
да класс я видел но как бы это понять самому охота :)
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Britva

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1660
  • +0/-0
  • 0
    • Просмотр профиля
    • http://eugeny.com
Темплейты
« Ответ #10 : 21 Марта 2002, 12:57:19 »
Посмотри еще исходники форума XMB 1.5+
он использует шаблоны из БД, можешь также здесь скачать тут http://mybboard.com (бывшая команда XMB)
Евгений aka Razor,

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Темплейты
« Ответ #11 : 21 Марта 2002, 18:56:47 »
имхо, хранение шаблонов в файлах создает меньшую нагрузку на сервер, показывает большую производительность, плюс более безопасный вариант решения.
с уважением,
магистр белой магии.

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Темплейты
« Ответ #12 : 21 Марта 2002, 19:13:12 »
Dm
вроде в базе безопаснее т.к. можно выставить права на коннект только с локалхоста
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Dm

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1263
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Темплейты
« Ответ #13 : 21 Марта 2002, 21:46:02 »
AlieN
а если с localhost\'а еще кто-то подключится? ;)
вообще это вопрос спорный, который уже ни раз решали.
и все зависит от программера и админа.
с уважением,
магистр белой магии.

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Темплейты
« Ответ #14 : 22 Марта 2002, 14:39:11 »
Dm
Я программер и админ в одном лице :)
--------------------------------------------------
Теперь общий вопрос как-бы завершить тему:
--------------------------------------------------
У меня загружается скрипт
по условию он пределил в какую попрограмму ему подгружать это и так ясно теперь самое глуое:
это подгрузка шаблонов из базы , но тут возникает другой вопрос допустим для данной страницы требуется 3 шаблона
начало страницы c генерируемым титулом статическая часть и конец страницы тоже статический.

С этой подпрограммой всё ясно и понятно но тепербь другая подпрограмма: там порядка 7 темплейтов 5 из которых динамические т.е. как грамотно обрабатывать и подгружать не нагружая код одинаковыми опетаорами для каждого динамического темплейта?
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28