Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Создание системы шаблонов
 
 автор: PHPer   (29.03.2006 в 09:24)   письмо автору
 
 

Люди добрые, кто может объяснить что это такое? Сколько читал, понял только одно - все это используется для разделения php и html, а на практике нифига. Если взять уже готовый (написаный кем-то) сайт, то не могу понять, как можно создать систему шаблонов? Помогите....

   
 
 автор: Денис   (29.03.2006 в 12:55)   письмо автору
 
   для: PHPer   (29.03.2006 в 09:24)
 

Ну начнем с того, что вам желательно почитать Smarty - система постоения шаблонов. В документации довольно понятно объяснено, зачем нужно разделять логику от дизайна, кому это нужно и чем это выгодно.

   
 
 автор: PHPer   (29.03.2006 в 13:02)   письмо автору
 
   для: Денис   (29.03.2006 в 12:55)
 

А где можно скачать этот Smarty?

   
 
 автор: cheops (из кафе)   (29.03.2006 в 13:36)
 
   для: PHPer   (29.03.2006 в 09:24)
 

Исчерпывающая статья по шаблонам расположена по ссылке http://providerz.ru/articles/php/templates.html.

   
 
 автор: PHPer   (29.03.2006 в 13:55)   письмо автору
 
   для: cheops (из кафе)   (29.03.2006 в 13:36)
 

Я читал эту статью, но мне не понятно другое: например, как создать шаблон, если уже имеется готовая страница? Ведь как я понимаю шаблоны применяют при разработкересурсов, а не после того как они созданы. Ведь так? или я ошибаюсь?

   
 
 автор: Loki   (29.03.2006 в 15:23)   письмо автору
 
   для: PHPer   (29.03.2006 в 13:55)
 

Для этого сначала надо понять как, конкретно ваш, шаблон будет работать.
Если я правильно понимаю, то под "разработкой ресурса" вы подразумеваете верстку, а следовало-бы - код. Тогда и вопросов не будет.
ЗЫ А страницу все равно сначала верстают целиком.

   
 
 автор: PHPer   (29.03.2006 в 15:37)   письмо автору
 
   для: Loki   (29.03.2006 в 15:23)
 

Loki, я хотел у вас узнать: как я понял шаблон используется для вывода, так или нет? Т.е. шаблон - это то же html, разве что с добавлением специальных тэгов. Это так? Просто хотелось бы понять принцип работы шаблонов на простом примере, а не на словах, как это обычно встречается

   
 
 автор: Loki   (29.03.2006 в 15:50)   письмо автору
 
   для: PHPer   (29.03.2006 в 15:37)
 

Самый простой пример шаблона:
index.tpl

<html>
<head>
<title>{_title_}</title>
</head>
{_content_}
</html>


index.php
<?
$data
=file_get_contents("index.tpl"); 
$data=str_replace("Название страницы""{_title_}"$data);
$data=str_replace("Данные выводимые на страницу""{_content_}"$data);
echo 
$data;
?>

Это самый простой вариант шаблона. Если его усложнять, то можно его собирать как матрешку из более мелких частей. Причем, пометки что и куда вставлять можно оставлять в самом шаблоне. Правда, при этом мы теряем в скорости работы, так как нам приходится сначала разобрать весь шаблон в поисках спец. тегов, но выигрываем в скорости разработки. Но hgjbuhsdftv на том, что придется изобрести и запомнить мини язык программирования, используемый внутри шаблона...
В общем, ничто не идеально.

Кстати, по ссылке выше как раз прекрасная иллюстрация моим словам. Напрасно вы не стали читать.

   
 
 автор: AlexSol   (29.03.2006 в 16:06)   письмо автору
 
   для: Loki   (29.03.2006 в 15:50)
 

кажется речь примерно об этом:
1,рисуете как должна выглядеть страница
2,воспроизводите ее на html
3,переименовываете его в index.php и производите следующие операции:

было index.html

<html>
<head>
</head>
<body>
<!--  шапка-->
<h3>шапка</h3>
<!--  навигация-->
<a href="page2.html">ссылка</a>
<!--  текст-->
<p> текст  текст  текст  текст  текст  текст</p>
</body>
</html>


стало index.php

<html>
<head>
</head>
<body>
<!--  шапка-->
<h3>шапка</h3>
<!--  навигация-->
<a href="?ref=page2">ссылка</a>
<?php
if (empty($ref)) {
$ref='maim_part';
}
$filenamet=$ref ".html";
include(
$filenamet);    
?>        
</body>
</html>


+ maim_part.html с содержанием

<p> текст  текст  текст  текст  текст  текст</p>


теперь можно наделать кучу файлов и вставлять их в тело страницы, при этом везде останется навигация и шапка

   
 
 автор: Loki   (29.03.2006 в 17:05)   письмо автору
 
   для: AlexSol   (29.03.2006 в 16:06)
 

Это как раз пример того, для избавления от чего и используются шаблоны: для отделения php кода от html:)

   
 
 автор: AlexSol   (29.03.2006 в 17:10)   письмо автору
 
   для: Loki   (29.03.2006 в 17:05)
 

извиняйте, был неправ... заблуждался...

   
 
 автор: PHPer   (29.03.2006 в 17:21)   письмо автору
 
   для: AlexSol   (29.03.2006 в 17:10)
 

Спасибо народ, теперь проясняется:-)

   
 
 автор: PHPer   (29.03.2006 в 17:30)   письмо автору
 
   для: Loki   (29.03.2006 в 17:05)
 

Loki, хотел ещё вот что узнать: а зачем в FastTemplate или Smarty используют класс шаблона, а от не порождают объект и с ним работают? По-моему твой пример выше проще и всё понятно что к чему, а вот этот класс не совсем. Зачем это нужно?

   
 
 автор: cheops   (29.03.2006 в 18:54)   письмо автору
 
   для: PHPer   (29.03.2006 в 17:30)
 

Возможно разработчики оформили код в виде класса, для того, чтобы потом систему можно было легко расширить путём наследования или просто отдали дань моде...

   
 
 автор: Loki   (29.03.2006 в 21:04)   письмо автору
 
   для: PHPer   (29.03.2006 в 17:30)
 

В реальном приложении мой код все равно оформлен в виде функции. Кроме того, данный шаблон достаточно прост. А, например, тот что приведен по ссылке выше, не будучи функцией и работать не будет, так как там используется рекурсивный вызов.

   
 
 автор: PHPer   (29.03.2006 в 22:03)   письмо автору
 
   для: Loki   (29.03.2006 в 21:04)
 

Loki, я заметил вы часто говорите о какой-то своей шаблонной системе, а можно получить на неё ссылочку? Было бы интересно разобраться в ней, у вас достаточно подробно всегда всё пишется на PHP

   
 
 автор: Loki   (29.03.2006 в 23:53)   письмо автору
 
   для: PHPer   (29.03.2006 в 22:03)
 

Ну "моя" система недалеко ушла от примера который я вам привел. Несколько раз порывался ее усложнить, но при этом сразу же потеряю в скорости и гибкости. Такую использую не только я. Примеры можете посмотреть тут:
http://softtime.ru/forum/read.php?id_forum=1&id_theme=9641&page=1
http://softtime.ru/forum/read.php?id_forum=1&id_theme=10367&page=1

   
 
 автор: Ziq   (29.03.2006 в 22:16)   письмо автору
 
   для: Loki   (29.03.2006 в 21:04)
 

А мне всегда было интересно, зачем нужно создавать какой-то файл *.tpl, когда можно так

template.php

<html>
<head><title><? echo $title_page ?></title></head>
<body>
<? echo $text_page?>
</body>
</html>


А сам код оформить так

$title_page = "Заголовок";
$text_page = "Текст";

include "template.php";


Чем такой вариант хуже? Ведь он будет выполняться быстрее.

   
 
 автор: Loki   (29.03.2006 в 23:59)   письмо автору
 
   для: Ziq   (29.03.2006 в 22:16)
 

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

Если отделить код от оформлеия, то с оформлением может работать любой маломальски подготовленный человек. В то же время, php код получается очень компактным и его легко отлаживать. Собственно, это как функции или классы: на начальном этапе труда придется затратить больше, зато потом скорость разработки возрастает, а сопровождение упрощается.

   
 
 автор: PHPer   (31.03.2006 в 21:53)   письмо автору
 
   для: Loki   (29.03.2006 в 23:59)
 

Кто может сказать можно ли (если да то как) написать одни шаблон, например, к двум разным html-кам? К примеру, на основной странце присутствует ссылка на вторую странице, причём обе они генерируются одни и тем же шаблоном. Такое можно сделать?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования