Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шаблонизатор своими руками 
:(
    Опции темы
alexey009
Дата 4.8.2008, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 28.7.2008

Репутация: 2
Всего: 2



BaNaNaS, сообщения внимательно читал?
Цитата(alexey009 @  2.8.2008,  00:10 Найти цитируемый пост)
НА ПРИМЕРЕ SMARTY


PM MAIL   Вверх
alexey009
Дата 7.8.2008, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 28.7.2008

Репутация: 2
Всего: 2



Вообщем понял, что смарти фуфлоsmile
И теперь соответственно вопрос!
Как задать цикл?
Код

@StartBlock@
//содержание
@EndBlock@

Все что между @Start@ и @End@ надо загнать в цикл. можно и в переменную..
 smile 
PM MAIL   Вверх
lisishe
Дата 23.8.2008, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 23.8.2008

Репутация: нет
Всего: нет



Код

class parse_class
    {
    var $vars     = array();
    var $template;

    function get_tpl($tpl_name)
      {
      if(empty($tpl_name) || !file_exists($tpl_name))
        {
        return false;
        }
      else
        {
        $this->template  = file_get_contents($tpl_name);
        }
      }
    function set_tpl($key,$var)
      {
      $this->vars[$key] = $var;
      }
    function tpl_parse()
      {
      foreach($this->vars as $find => $replace)
             {
             $this->template = str_replace($find, $replace, $this->template);
             }
      }
    }
$parse = new parse_class;
$parse->get_tpl('tpl/file2compile.tpl'); //Файл который мы будем парсить 
$parse->set_tpl('{NRAMKA}',$uramka);
$parse->set_tpl('{KRAMKA}',$dramka);
$parse->set_tpl('{BLOKS}',$bloks);
$parse->set_tpl('{TITLE}','Супер сайт'); //Установка переменной {TITLE}
$parse->set_tpl('{BGCOLOR}','#F2F2F2'); //Установка переменной { BGCOLOR }
$parse->set_tpl('{SOMETPLTAGS}','<font color=red>Это тэстовый сайт</font>'); //Установка переменной {SOMETPLTAGS}

$parse->tpl_parse(); //Парсим

print $parse->template; //Выводим нашу страничку


шаблон

Код

<html>
<head>
<title>{TITLE}</title>
</head>
<body bgcolor={BGCOLOR}>
<div align="center">
<br/>
{SOMETPLTAGS}
<br/>
{NRAMKA}
{SOMETPLTAGS}
{KRAMKA}
<br/>
{NRAMKA}
<br/><br/>
{BLOKS}
<br/><br/>
{KRAMKA}
<br/><br/>
{BLOKS}
</div>
</body>
</html>


Можно ещё проще 
Ну а переменные можно формировать отдельно при чём через этот же класс

Это сообщение отредактировал(а) lisishe - 23.8.2008, 22:14
PM MAIL   Вверх
ktulh
Дата 3.9.2008, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



Ну а почему бы не использовать нативный шаблон?
А если нужны повторяющиеся блоки, то просто их загонять в перменную а ее подключать в нужном месте основного шаблона.

PM MAIL   Вверх
ktulh
Дата 3.9.2008, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



Тут подумал... есть ли способ сделать шаблоны пр помощи heredoc?
PM MAIL   Вверх
ktulh
Дата 4.9.2008, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



index.tpl
Код

<html>
<title>$title</title>
<body>
$news
</body>
</html>

index.php
Код

$title="title";
$news="news message";
$tmpl=file_get_contents("./index.tpl");
$html= "echo <<<out\n".$tmpl."\nout;\n";
print eval($html);

НА выходе 
Код

<html>
<title>gsfd</title>
<body>
news message
</body>
</html>

загрузку шаблона можно по идее обернуть в функцию. а переменные передавать в качестве аргументов.
Хотя это и не обязательно. Они всреано продставляются из общего пространства.
Этот способ позволяет и подгражть какие-то внутренние шаблоны элементов.
Ток вот пока не думал на счет управляющих конструкции внутри шаблона.(а нужны ли они там, вет все можно сделать в скрипте.)

Это сообщение отредактировал(а) ktulh - 4.9.2008, 11:25
PM MAIL   Вверх
americanets
Дата 4.9.2008, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



это не есть шаблонновсть 



M
MoLeX
Модератор: мат!!!!


Это сообщение отредактировал(а) MoLeX - 7.9.2008, 18:57


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
ktulh
Дата 7.9.2008, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



Привиде тогда пример шаблонизатора с использованием heredoc
PM MAIL   Вверх
americanets
Дата 8.9.2008, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12





Molex, чет не подумал сразу о том что на мат похоже , сори . 

Просто в eval , не очень правильно  пихать все


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
ktulh
Дата 9.9.2008, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



И всеже жду предложения с использованием этого синтаксиса.
PM MAIL   Вверх
americanets
Дата 10.9.2008, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



ktulh

на примере твоего синтаксиса есть вариант , он php называется smile 

file.tpl

Код

<br/>
echo $mainText;
<br/>



index.php

Код

$mainText = 'Text Text';
include 'file.tpl';



--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
ktulh
Дата 10.9.2008, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



ну с инклюдами или заменои это понятно.. мне то интересен именно способ реализации через heredoc  или его впринципе без использования евал нет?!
PM MAIL   Вверх
gta4kv
Дата 10.9.2008, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



ktulh, а зачем вообще такая кривая реализация? Зачем шаблон выводить через eval!? И использовать для всего этого heredoc.. не понятно..
PM MAIL   Вверх
ktulh
Дата 11.9.2008, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



Ну допустим так сказать зацикл небольшои.. просто инетресен увидеть именно этим способом... и впринципе не особо важно целесообразность его использования.. просто сам принцип...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1115 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.