Ну, девелоперы, колитесь!

pachanga

Новичок
Ну, девелоперы, колитесь!

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

Если кто пользует доморощенную (или утащенную :) )CMS(Content Management System), пусть тоже делятся инфой!

Т.е. весь процесс: нарезка шаблонов, написание кода...etc.

Чтобы было понятно, о чем я, приведу нашу упрощенную схему, итак:

Наша собственная CMS будет еще долго в разработке, так что мы разработали следующую стратегию:

1)Мы пользуем DreamWeaver для создания шаблонов и дизайна. Тот факт, что DreamWeaverMX наконец поддерживает вложенные шаблоны - просто чудо. Почему именно DreamWeaver? IMHO это самый пристойный визуальный html редактор с поддержкой шаблонов.

2)Шаблон представляет из себя смешанный html и php код, с редактируемыми участками(кто знаком с DreamWeaver, тот поймет). Обычно делается несколько шаблонов для нескольких типов страниц.

К примеру, для основных страниц http://www.capvidia.be мы используем следующий шаблон:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=windows-1252">
<META http-equiv="Content-Language" content="en-us">
<!-- #BeginEditable "doctitle" --> 
<TITLE>Capvidia home page</TITLE>
<!-- #EndEditable --> 
<?
require_once($DOCUMENT_ROOT.'/setup.php'); 
require(PHP_DIR.'css.php'); 
?>
</HEAD>
require(PHP_DIR.'java_script.php') ?>

<BODY background="/images/backcross.gif" onclick="HideAllMenu()" bgcolor="#FFFFFF">

<? 
require(TEMPLATES_DIR.'logo_div.htm');
require(TEMPLATES_DIR.'header_div.htm'); 
require(PHP_DIR.'navigation.php'); 
require(TEMPLATES_DIR.'left_menu_div.htm'); 
require(TEMPLATES_DIR.'begin_content.htm');
?>

<!-- #BeginEditable "content" --> <!-- #EndEditable --> 

<? 
require(TEMPLATES_DIR.'end_content.htm') 
?>

</BODY>
</HTML>
Как видите, похоже на вермишель. Неудобно же от того, что приходится мешать html и php :(
Как это обойти без CMS, используя подручные средства?

Повторяемые участки html кода мы подключаем при помощи
require(TEMPLATES_DIR.'*.htm');. В принципе, это идентично SSI. Но вот дизайнеру не удобно :( Он-то не видит layout в редакторе.

А полностью динамические участки подключаем при помощи
require(PHP_DIR.'*.php');

При всех минусах, эта схема удобна тем, что конечный пользователь может сам добавлять контент без нашей помощи, пользуя DreamWeaver(естессно паленый).

А как делает народ?
 

pachanga

Новичок
У меня там ошибка закралась в шаблоне:
не
require(PHP_DIR.'java_script.php') ?>,
а
PHP:
<? require(PHP_DIR.'java_script.php') ?>
 

confguru

ExAdmin
Команда форума
Чего тут колоться :)

5 Золотых правил серьезных проектов на PHP

1. Никакого кода в шаблонах
2. Никакого language-specific вывода (для
интернализации проекта и универсального
вывода ошибок)
3. Использование библиотеки основных
функций
4. Структура проекта должна быть понятна
новому человеку команды в течении одного дня..
5. Проектирование структуры не должно быть меньше по времени чем создание самого кода
 

Foshvad

Guest
А как лучше работать с шаблонами?

Можно через eval() задавая в него что-то типа "<td>$text</td>" и определяя $text заранее.

Можно все на include'ах делать, но это, ессно, не удобно.

А как профессионалы делают? :)
 

dr.vint

Guest
Я использую FastTemplate
есть главный шаблон, в него загружаются шаблоны конкретных страниц, навигация и тп
 

Foshvad

Guest
А как выглядит этот самый FastTemplate?
И как к нему обращаться? Тоже через eval() ?
 

Flying

Guest
Я использую связку XML+XSLT. При наличии дополнительного инструметрария по пре- и пост- обработки страниц можно добиться того, что шаблоны страниц можно будет редактировать как на уровне HTML с вкраплениями инородных тегов (для неквалифицированного персонала) так и на достаточно глубоком уровне проработки (для профессионалов).
Кроме того подобная связка хороша еще тем что:
1) она основана на технологиях, являющихся стандартами W3C. Это означает наличие огромного количества инструментов для работы, документации, поддержки и т.п.
2) дополнительные технологии (например XPath) серьезно облегчают разработку шаблонов. А когда XSLT 2.0 и XPath 2.0 вырастeт до уровня стандартов - это будет еще интереснее.
 

Flying

Guest
Originally posted by Foshvad какого именно, можно поинтересоваться?
Собственноручно написанного, естественно.

А по поводу шаблонов - забей на FastTemplates, лучше посмотри Smarty - http://smarty.php.net Самый продвинутый templates engine, который я видел (хотя я их и не использую)
 

kvn

programmer
Автор оригинала: R.A.N.dom

см . http://www.thewebmasters.net/php/
Там всё есть.
действительно, очень удобно...
1. Забудь. ФастТемплаты - ДАЛЕКО не Фаст. И не совсем они и удобные. Ессно, удобнее, чем фарш ПХП+ХТМЛ, но все же есть и другие ТПЛ-движки..
2. Те ФТ, что на thewebmasters.net, разработаны давно для пхп3, и для 4-го требуют доработки (даже и не пытайтесь юзать переменные типа MY_VAR, они должны выглядеть как по доке: {MY_VAR} - глюк описанный и давно общеизвестный).
3. Они уже не суппортяться..
4. Советую смотреть в сторону более свежих технологий (если это тпл-движки, то там xtpl, PEAR, PHPLib, или XML+XSLT).
5. думаю меня дополнят...

П.С. Сам использую PHPLib : Template.php
 

Foshvad

Guest
FastTemplates (открылись наконец-то) уж очень, imho, тяжелый, на регах....

smarty.php.net - дюже интересно, жать что на английском, но будем разбираться! Спасибо за ссылку!
 

R.A.N.dom

Guest
Да, адрес верный. Смарти не пробовал.
Фаст, по крайней мере, позволяет разделить код от дизайна...
 

kvn

programmer
Автор оригинала: Foshvad
А где про этот PHPLib можно почитать?
http://phplib.sf.net/
http://www.sanisoft.com/phplib/manual/
http://www.sanisoft.com/phplib/manual/template.php


По поводу SMARTY, да забыл я его.

Позвольте процитировать себя (это я написал PHP:pEAR девелоперам по поводу смарти, после этого тред закрылся):

1-е письмо (НЕ ОТ МЕНЯ):
i know this topic was on the list so often, but anyway :)
the current discussion on some issues in IT[X] just made me write this
mail (again).
may u just take it as an info (also regarding the current discussion on
the IT-patch)

i have written and already used successfully in a lot of projects
a template class with another approach then IT[X]
some catchy points:
- no assigns in the php necessary
(u can use any var in the tpl that is defined in php)
- block building by indention (makes code cleaner too)
- no template language to learn
- compiling (and soon caching too)
- easy to use for multilanguage sites, using PEAR::I18N
see example, below
- each tpl is configurable individually via XML tags or file(s)

project homepage is
http://sf.net/projects/simpletpl
docs and example is at:
http://wolfram.kriesing.de/libs/php/SimpleTemplate/examples/fullFeatured

a short example to show how the template class works:

******* php file ********
<?php
$aVar = 'some text to show in the tpl';
$anArray = array( 'one' , 'two' , 'three' );

// the $tpl needs to be instanciated somewhere above
// for easier reading this is left out here
$tpl->compile( 'tpl-filename.tpl' );
include( $tpl->getCompiledTemplate() )
?>
******** tpl-file *********
print out the text:
{$aVar}
loop through $anArray
{if(sizeof($anArray)<10)}
{foreach( $anArray as $key=>$val )}
{$key} =&gt; {$val}
<br>


******* or a configured template file ******
<!-- configure, set different delimiter -->
<SimpleTemplate>
| <delimiter begin="[[" end="]]"/>
|</SimpleTemplate>

print out the text:
[[$aVar]]
loop through $anArray
[[foreach( $anArray as $aVal )]]
[[$aVal]]<br>

-----------------------------------
очень, конечно интересно, но:

From: "Vitaly N. Kravchenko" <[email protected]>
To: [email protected]

> "Richard Heyes" <[email protected]> wrote:
> > If there are only developers/technical people why use template engines
> > at all?
> > Keep the html in seperate files for the template effect and use short
> > snippets of
> > embedded php to do the dynamic parts. Using short tags, <?= and
> > alternative control
> > syntax makes it look pretty much like a template language anyway.
> Note that, imho, templates do not have to contain any logic. But there
> is different points of views, and every one got their own needs ;)).
Right. IMO we must have solution to divide logic(php code) and presentation (html code).
I think - it must be general idea of template using, and using template-engine.
Designers doesn't like logic - where are designers (art people), and we are programmers.
And tell me one thing, why I need to use template-language to create block?
It's looking like programmer want get out from his own job, and give this job to designer.
I mean job - is creating logic in web-page..

Thanks.

--
Best regards, KVN.
PHP4You (<http://php4you.kiev.ua/>)
PEAR [ru] (<http://pear.php.net/manual/ru/>)
mailto:[email protected]




Извините за мой английский.
 

tony2001

TeaM PHPClub
http://e-taller.net/dev/php
где-то там лежат тесты su1d'а
кроме того, su1d пишет свой экстеншен для темплейтов.

p.s.
я юзаю свой класс темплейтов.
 

[DAN]

Старожил PHPClub
Начинал я, как и все, наверное, с винигрета "пхп+хтмл".
Полгода поковырялся, понял, что это все ботва. Попробовал с include поработать, та же ботва :(
Оглянулся вокруг, увидел "всеми любимый" FastTemplate. Попробовал - понравилось. Юзал где-то полгода, пока не наткнулся на smarty. Попробовал - блеванул. Engine, конечно, прикольный, но навороченный уж очень сильно. Вобщем, опять пересел на "всеми любимый".
Сделал на нем 3-4 проекта, но потом понял, что и это тоже ботва. Много времени уходило на написание этих шаблонов. Кодингом вообще перестал заниматься :(
Оглянулся вокруг, увидел XML, XSL. Попробовал - очень понравилось. Пытался как-то пристроить его к вебу, выходило хреново. Вобщем, окунулся с головой в эти технологии, чем занимаюсь и по сей день.
На сегодняшний день я не вижу _ни_одной_ реальной замены этим технологиям в вебе. Все предельно просто, прозрачно и формализовано.
Есть данные, есть их структура. Есть шаблоны. Накладываешь одно на другое и готово. Помимо всего этого есть еще много фич и наворотов, про которые можно не одну книгу написать.
 

confguru

ExAdmin
Команда форума
Только шаблоны должны верстальщики
делать имхо :))
 

Poltergeist

Guest
Народ, объясните мне такую вещь. Зачем пользоваться темплейтами, если можно загонять нужный элемент(меню например) в переменную типа $menu, а далее в нужном месте
<? echo $menu; ?> .
Я просто не могу Вас понять, Вы то кричите что PHP тормозно работает, то используете технологии, написанные на том же "тормозном"(это с Вашей же точки зрения) языке, и соответственно еще более "тормозные". Объясните мне в чем суть таких разногласий?
По-моему - PHP это уже язык шаблонов (грубо), и мне он нравится потому, что я могу объяснить дизайнеру или верстальщику, что для вывода определенного элемента ему надо сделать так <? echo $element_name; ?>, а ему не надо думать, что происходит внутри.
 
Сверху