[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Шаблоны...
Flame_of_Death
Доброго времени суток, уважаемые форумчане!

На CodeNet есть хорошая статья по поводу шаблонов: тут.

Хотелось бы развить код, допустим, предположим структура сайта следующая:

index.php
templates
--theme1
----css
------ ...
----img
------ ...
----index.tpl
----news.tpl
---- ...
--theme2
----css
------ ...
----img
------ ...
----index.tpl
----news.tpl
---- ...
cms
--inc
----template.php
----config.php
--lang
---- ...
--mode
----addnews.php
----viewing.php
--init.php

Исходные коды пока практически без изменения взяты из статьи:
template.php
PHP
<?php
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;


Часть index.php:
PHP
require('./cms/inc/template.php'); 
$parse->set_tpl('{THEME}','Default');
$parse->get_tpl('./templates/Default/index.tpl'); 
$parse->set_tpl('{TIMER}','Страница сгенерированна за: '$timer .' мкс.'); 
$parse->tpl_parse(); //Парсим
print $parse->template//Выводим нашу страничку


Часть шаблона index.tpl:
HTML
<div id="content">
<h1>Реклама</h1>
<center><img src="./templates/{THEME}/images/banner468x60.jpg" alt="Баннер"></center>
<hr>
<h1>Краткое содержание новости</h1>
<h2>Опубликовал: <b><a href="">User</a></b>, Дата: <b>03.07.2009</b></h2>
Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла,
Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла,
Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла,
Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла,
Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла, Бла,
<h3>Комментарии: [0], <a href="">Подробнее...</a></h3>
<hr>
</div>


Хотелось бы сделать так, чтобы index.tpl выглядел так:
HTML
<div id="content">
<h1>Реклама</h1>
<center><img src="./templates/{THEME}/images/banner468x60.jpg" alt="Баннер"></center>
<hr>
{CONTENT}
</div>


А news.tpl имел вид:
HTML
<h1>{NEWS_TITLE}</h1>
<h2>{NEWS_HEAD}</h2>
{NEWS_BODY}
<h3>{NEWS_FOOTER}</h3>
<hr>


И формировался шаблон из файла: viewing.php, который бы осуществлял краткий просмотр определенного количества новостей, используя шаблон news.tpl, в переменную {CONTENT} файла index.php

Подскажите пожалуйста куда направить ход мыслей по поводу решения данной задачи и \ или предложите что-либо (в примерах желательно)!

Заранее всем ответившим спасибо!

P.S. По моему сумбурно как то описал, просто мысли путаются одна за одной...



Спустя 11 часов, 13 минут, 44 секунды (3.07.2009 - 18:45) Flame_of_Death написал(а):
Товарищи форумчане, прошу внимания к моей теме! Хотя бы минимальное! Правда хочу разобраться с парсингом шаблонов, но пока умная мысль меня не посетила, к сожалению... sad.gif

Спустя 1 день, 23 часа, 20 минут, 31 секунда (5.07.2009 - 18:05) Flame_of_Death написал(а):
huh.gif Вопрос остался без ответа, очень жаль.... sad.gif

Спустя 52 минуты, 55 секунд (5.07.2009 - 18:58) glock18 написал(а):
Flame_of_Death
а я че-т вопрос не понял. в чем он, собственно?

Спустя 11 минут, 8 секунд (5.07.2009 - 19:09) Flame_of_Death написал(а):
Цитата (Flame_of_Death @ 3.07.2009 - 04:31)
Хотелось бы развить код
..........
Хотелось бы сделать так, чтобы index.tpl выглядел так:
HTML
<div id="content">
<h1>Реклама</h1>
<center><img src="./templates/{THEME}/images/banner468x60.jpg" alt="Баннер"></center>
<hr>
{CONTENT}
</div>


А news.tpl имел вид:
HTML
<h1>{NEWS_TITLE}</h1>
<h2>{NEWS_HEAD}</h2>
{NEWS_BODY}
<h3>{NEWS_FOOTER}</h3>
<hr>


И формировался шаблон из файла: viewing.php, который бы осуществлял краткий просмотр определенного количества новостей, используя шаблон news.tpl, в переменную {CONTENT} файла index.php

Подскажите пожалуйста куда направить ход мыслей по поводу решения данной задачи и \ или предложите что-либо (в примерах желательно)!

Как разбить шаблон на несколько его составляющих, которые формировались бы в ходе выполнения определенных задач программы? Если дело в template.php, то как его изменить?

Спустя 7 минут, 20 секунд (5.07.2009 - 19:17) glock18 написал(а):
а что за шаблонизатор, не могу понять. сам что ли делаешь? если сам, то не пойму в чем проблема. а если не сам, то не пойму что это за шаблонизатор.

Спустя 5 минут, 52 секунды (5.07.2009 - 19:22) Flame_of_Death написал(а):
Не сам, пытаюсь разобраться в функциях, и как их преобразовать до нужного мне принципа действия! Ссылка на статью откуда взято, в первом посте во 2-й строке!

Спустя 9 минут, 25 секунд (5.07.2009 - 19:32) glock18 написал(а):
кажется, это очень мааленький template engine. Возьми нормальный готовый и используй его. Пример - Smarty

Спустя 55 минут, 46 секунд (5.07.2009 - 20:28) twin написал(а):
Хорошо там написано:
Цитата
Прежде чем использовать шаблоны, подумайте, действительно ли они вам так нужны?

Посмотри сюда, может и не нужно это тебе совсем.


Спустя 12 часов, 59 минут, 59 секунд (6.07.2009 - 09:28) Flame_of_Death написал(а):
glock18, объемная конструкция, но пока внедрять готовое решение не охото, охото развить имеющийся код.

twin, не то.

Смотрите, как изменить данный класс, чтобы он мог работать по аналогии DataLifeEngine! Так вопрос может быть будет понятнее...

Спустя 9 минут, 42 секунды (6.07.2009 - 09:37) glock18 написал(а):
Flame_of_Death
я че-т не пойму. тебе охота развить (я так понимаю, чтобы научиться), а хочешь, чтобы это сделали за тебя. сядь и разберись что там и зачем - там весь шаблонизатор 20 с половиной строк.

Спустя 12 минут, 10 секунд (6.07.2009 - 09:50) Flame_of_Death написал(а):
Так конструкция его мне ясна:
get_tpl проверяет переменную $tpl_name и наличие файла, если есть, то загружает файл построчно в $template
set_tpl устанавливает переменные для замены
tpl_parse заменяет присвоенную переменную на значение.

Ладно, буду пробовать..... wink.gif

Спустя 11 минут, 3 секунды (6.07.2009 - 10:01) glock18 написал(а):
PHP
print $parse->template//Выводим нашу страничку


ничто не мешает положить результат в переменную и назначить для другого шаблона.

Спустя 7 минут, 28 секунд (6.07.2009 - 10:08) Flame_of_Death написал(а):
Об этом я не подумал сразу, но перед прочтением поста уже сделал так, хорошо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.