Welcome to PHPClub
В эти выходные на LinuxFest v.12! Поляна от PHPClubа Мастер-классы по Javascript, AJAX/COMET, jQuery!
Боишься нашего дизайна?
поиск:
   
 Начало | Настройки | Расширенный поиск | РегистрацияПосмотреть новые сообщения 
  
PHP Club форумы: > Разное > Offtopic > Для кого мы делаем шаблоны?
Страниц (4): « 1 [2] 3 4 » |  

Автор
Тема ОТВЕТИТЬ
StUV
Rotaredom

На форуме с: Feb 2003
Cообщений: 2086
Город: Moscow, Russia

 
программист как правило такой работы бежит


уточнение - наверное все-таки "php-программист" ?

среди "веб2.0/etc-программистов" много хороших профи, пришедших в програминг толстых клиентов на JS с "более серьезных" технологий..

Old Post 22.10.07 14:44 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
С.
Помощник санитара PHPCluba

На форуме с: Nov 2005
Cообщений: 528
Город:

Я сам, будучи программистом, занимаюсь и дизайном, и версткой. То есть на деле я работаю по варианту 1. Однако меня не устраивает внутренний вид получаемых документов. Я стремлюсь к варианту 2, не потому что надо проще, а для того чтобы шаблон отвечал принципам эстетики кода. На strict php далеко не уедешь, а не-strict php или Смарти с php вставками воспринимается также "несъедобно" как программа, написанная без отступов.

Old Post 22.10.07 17:50 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
dark-demon
d(^-^)b

На форуме с: Feb 2007
Cообщений: 652
Город:

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

кусок хтмл:

<div id="mmenu">
  <
ul>
     <
li class="item"><a href="#"><sample>пункт1</sample></a></li>
  </
ul>
</
div>


псевдокод:

var menudoc.xpath"//*[@id='mmenu']" );
var 
curitemmenu.xpath"//*[@class='item']" );
var 
menuitemcuritem.clone(); // шблон вывода одного пункта меню.
if( data ) for( item in menudata ){
    var 
newitemmenuitem.clone();
    
newitem.xpath'//sample' )= item.title;
    
newitem.xpath'//@href' )= item.uri;
    
curitem.insertAfternewitem );
    
curitemnewitem;
} else 
menu.die();



результат:

<div id="mmenu">
  <
ul>
     <
li class="item"><a href="/abc/">щёлкни меня!</a></li>
     <
li class="item"><a href="/dfe/">нетменя!</a></li>
     <
li class="item"><a href="/fgh/">и меняи меня!</a></li>
     <
li class="item"><a href="/ijk/">прищёлкни себя!</a></li>
  </
ul>
</
div>


но это уже рассчитано на совсем мифического верстальщика и очень трудолюбивого программиста

Отредактировано dark-demon 22.10.07 в 18:42

Old Post 22.10.07 18:28 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
fixxxer
Старожил PHPCluba

На форуме с: May 2003
Cообщений: 3884
Город: Moscow, Russia

о, вот dark-demon близок к тому, о чем я думаю, но его вариант в таком виде нежизнеспособен все таки %)

Old Post 23.10.07 00:51 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
С.
Помощник санитара PHPCluba

На форуме с: Nov 2005
Cообщений: 528
Город:

dark-demon говорит о нормальном варианте 2, но как обычно "Баба Яга против!". См. вариант реализации этого способа.

Old Post 23.10.07 02:45 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
dark-demon
d(^-^)b

На форуме с: Feb 2007
Cообщений: 652
Город:

fixxxer, потому и "псевдокод"

С., нет, это не этот способ. ты зачем-то заменяешь угловые скобочки на вопросительные угловые скобочки, излишне плодишь тэги, поощряешь дедовщину (старшие браться влияют на младших), делаешь шаблоны активными ("шаблон лезет за данными", а "не данные впрыскиваются в шаблон"), предоставляешь программисту не набор вложенных шаблонов, а конечную вёрстку, не предполагающую расширение (добавление полей, например).
у тебя - как раз тот самый "вариант номер два". третий вариант выглядил бы так:

<form method=post id="myForm" class="x-form-items">
    <
label>
        <
sample>Label1:</sample>
        <
input name="Element1" type="text" class="x-field" />
    </
label>
    <
label>
        <
sample>Label2:</sample>
        <
input name="Element2" type="checkbox" value="yes" class="x-flag" />
    </
label>
    <
label>
        <
sample>Label3:</sample>
        <
select name="Element3" class="x-select"></select>
    </
label>
    <
label>
        <
sample>Label4:</sample>
        <
textarea name="Element4" class="x-smalltext"></textarea>
    </
label>
</
form>

этой вёрстки достаточно, чтобы соорудить форму из произвольного числа полей "однострочный текст", "флаг", "выпадающий список" и "небольшой многострочный текст".

Отредактировано dark-demon 23.10.07 в 18:43

Old Post 23.10.07 18:28 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
Dreammaker
***=Ф=***

На форуме с: Jul 2005
Cообщений: 466
Город: Made in Ukraine

dark-demon, а поисковые боты будут тоже JS рендерить?

Old Post 23.10.07 22:43 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
jonjonson
Охренеть

На форуме с: Dec 2006
Cообщений: 566
Город: Nakhodka

Dreammaker, поисковые боты формы индексируют?

Old Post 24.10.07 00:54 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
С.
Помощник санитара PHPCluba

На форуме с: Nov 2005
Cообщений: 528
Город:

Люди, люди! Мы здесь о "высоком".
dark-demon -- черная дыра конкретики, постарайтесь не притягиваться к ней.

Old Post 24.10.07 03:34 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
dark-demon
d(^-^)b

На форуме с: Feb 2007
Cообщений: 652
Город:

Dreammaker, поисковым ботам и устаревшим браузерам надо отдавать готовую html вёрстку

Old Post 24.10.07 18:23 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
berkut
Санитар PHPClubа

На форуме с: Jul 2004
Cообщений: 1150
Город:

чёрт, подскажите ламеру, что такое strict-php? сознательное использование только определённых конструкций или же "програмное" ограничение на допустимые к использованию конструкции?? если второе - то как это реализуется без охренительного парсера, если первое - то как-же насчёт идеологии смарти, что можно "разграничивать" права на использование функций(типо шоб дизайнер не вызвал случайно фатал еррор)?

Old Post 24.10.07 21:57 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
Pigmeich
Активист PHPClub

На форуме с: Oct 2007
Cообщений: 386
Город:

Strict-PHP - это разработка с уровнем error_reporting(E_STRICT).

Этот уровень репортить всякие крутые нарушения стиля.

Суть разработки в Strict - ни один strict-message не должен остаться в релизе. Ну и варнинги с нотайсами до кучи.

Old Post 25.10.07 00:07 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
HraKK
Демиург

На форуме с: Dec 2005
Cообщений: 2670
Город: Киев

berkut
 
типо шоб дизайнер не вызвал случайно фатал еррор


Пусть дизайнер напишет такое {hack}
бгхх. Фатал еррор. Какая ты говоришь идеалогия?))

Old Post 25.10.07 08:52 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
Silex
unitecsys

На форуме с: Apr 2002
Cообщений: 326
Город: Kharkov, UA

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

Плюс подхода - на выходе от верстальщика имеем "чистый" хтмл, который потом можно подвязать к любому шаблонизатору. А это особенною важно, когда исполнитель неизвестен заранее (выбираем фрилансера) или случаются форс-мажоры (текущий разработчик на смарти заболел, в наличии любитель другого шаблонизатора). Еще плюс - бОльшая управляемость отображением, ибо есть всевозможная извращенная логика отображения, которой верстальщику забивать голову совсем необязательно, тем более, в конечном итоге отвечает программист за результат, а не "какой-то там верстальщик".

Old Post 26.10.07 09:57 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
AmdY
Санитар PHPClubа

На форуме с: Jan 2007
Cообщений: 1842
Город: Belarus, Minsk

Я считаю что шаблонами должен заниматься программист иначе приходится сильно ограничивать себя.
А какой шаблонизатор, это зависит от того, что будет в шаблонах.
Нет смысла заменять <?= $var ?> на {$var}, особенно если нет компиляции шаблонов, то это только вредит. Другое дело Smarty и Quicky, которые являются инструментом для программиста и которые делают намного больше простого "echo if foreach", мне удобно использовать именно них, но я не завидую тому, кто будет после меня разбираться в конструкциях а-ля "{message type="info"}....{/message}"
Ну и XSLT, очень удобно, что данные в формате XML, их можно затем сунуть хоть в XSLT, хоть во флеш, хоть в сторонний клиент на С++. Использование exslt делает этот вариант ещё мощнее, ещё один плюс - работа с этим добром в браузере. Но, есть одно большое "НО", очень геморно бороться с валидностью, дп и формат довально громоздкий в плане ресурсов.
dark-demon, а вот мой вариант для форм на смарти, а сама описание формы хранится в XML

<div class="formDiv">
    {if 
$form->formValidate}
        <
div class="error_message">
            {foreach 
from=$form->formValidate item="v"}
                {
$v.text}
            {/foreach}
        </
div>
    {/if}
    <
div class="formFields">
        {
$form->begin()}
        {foreach 
from=$form->formFields item="field"}
            <
div class="formCaption">{if $form->getCaption()}{$form->getCaption()}</div>{/if}
            <
div class="formField">{$form->next()}</div>
        {/foreach}
        {
$form->end()}
    </
div>
</
div>

dark-demon по поводу селекта, item="field" хранит информацию о текущем поле type, name, class, validate и прочее.

{foreach from=$form->formFields item="field"}
    <
div class="formCaption">{if $form->getCaption()}{$form->getCaption()}</div>{/if}
    {if 
$field->type=='select'}
        <
div class="formFieldSelect">{if $field->validate}<span class="red bold">*</span>{/if}{$form->next()}</div>
    {else}
        <
div class="formField">{$form->next()}</div>
    {/if}
{/foreach}


__________________
Keep It Simple, Stupid.
Отредактировано AmdY 27.10.07 в 18:36

Old Post 26.10.07 23:00 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
WP
^_^

На форуме с: Apr 2006
Cообщений: 2545
Город: Moscow, Russia. currently Saint-Peterburg, Russia

Говорю как человек измученный нарзаном.
Шаблонизатор надо юзать тот который будет удобен тем людям которые заняты в проекте. Если программисту нравится что клиенты его будут насиловать в мозг при необходимости вывести данные в две колонки, а не в три, - пусть пишет скрипт view а затем использует блочный шаблонизатор чтоб дать возможность редактирования html (Blitz). Если же хочет вынести всю логику представления в шаблон вместо отдельного скрипта - php native, если при этом хочет облегчить жизнь верстальщику, получить доп. инструменты и возможность настройки безопасности (чтоб бекдоров не навставляли) - Quicky.
Необходимо понимать что разница между Blitz и Quicky лишь в том что в Blitz мы сначала всю полноту фантазии выражаем в скрипте, а потом прогоняем через набор циклов и получаем html.
Если верстальщик может залезть в скрипт и исправить там то ему ничто не помешает исправить шаблон Quicky, иначе - он будет долбить программиста чтоб тот исправил, и теряется одно из главных достоинств шаблонизатора - сохранение девственности мозга программера. На правах рекламы, Quicky поддерживает синтаксис blitz и в одном проекте я использовал гибридную схему (по желанию заказчика) т.е. каждый шаблон представлял собой сначала обработку входных данных и генерацию информации для вывода методом аля блитз, а далее шел шаблон с синтаксисом блитза.
Таким образом если человек в состоянии исправить логику - пусть правит, если не в состоянии - пусть правит html и дергает за рукав того кто может (не меня), а мне на этих людей класть с прибором т.к. я в скрипте проассигнил данные и забыл. Могут вдруг передумать и переписать шаблон на чистый Quicky без предварительной обработки - я буду не нужен.
К XSLT и прочему бесовству отношусь негативно т.к. это опять же требует от верстальщика программерских знаний и не только, да еще и сильно вредит гибкости.

Кстати, использую "компоненты" и мне нравится т.к. часто нужно вызвать какой-то обособленый скрипт или не вызвать (это решается непосредственно в шаблоне), а включать/выключать подгрузку PHP-кода того или иного модуля было бы неудобно где-то отдельно от шаблона.
А также, что приятно, использую свои нововведения по части управления компиляцией из шаблона

Отредактировано WP 27.10.07 в 04:08

Old Post 27.10.07 04:05 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
Фанат
oncle terrible

На форуме с: Jul 2003
Cообщений: 33516
Город: Broomfield, United States

 
Quicky поддерживает синтаксис blitz


очень интересная фишка, но схему их взаимоействия я не очень, признаться, понял.
можно поподробнее?

-~{}~ 27.10.07 12:50:

в смысле - квики генерил не пхп-страницу, а пхп-страницу плюс шаблон для блиц?!

Old Post 27.10.07 09:48 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
cDLEON
Онанист РНРСlub

На форуме с: Aug 2005
Cообщений: 1025
Город: Лида

WP
Даааа. А использование "плагинов", "компонентов" и прочей хрени не требует программерских знаний. Особенно если поведение этого "плагина" нужно немного поменять....
Ну-ну...
ПС. Я конечно понимаю, ты написал опенсоурс, но зачем кричать о нём по всему форуму и сравнивать ? (К этой теме это не относится)

Old Post 27.10.07 10:28 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
dark-demon
d(^-^)b

На форуме с: Feb 2007
Cообщений: 652
Город:

фигасе, xslt вредит гибкости? 8-[___]

AmdY, в твоём шаблоне верстальщик теряет контроль над тем, как будут выводиться инпуты различных типов. например, может потребоваться select обернуть в специальный div, чтобы обрезать убогие псевдо-3д бордюры в ие.

Old Post 27.10.07 10:51 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
WP
^_^

На форуме с: Apr 2006
Cообщений: 2545
Город: Moscow, Russia. currently Saint-Peterburg, Russia

cDLEON
Дык смотри, у меня компонент module_load, в шаблоне пишу {module_load name='news' as_module=1}
И в том месте страницы появляется модуль новостей (блоком или страницей), при этом module_load инклюдит нужный PHP-скрипт, тот работает с СУБД, ассигнит данные и показывает шаблон news.tpl. При этом верстальщик легко поймет конструкцию и залезет в news.tpl если надо.
Фaнат
Поддерживает в том плане что синтаксис блитз компилируется в PHP-код, и можно использовать как замену блитза где нет возможности поставить модуль (класс-эмулятор API Blitz'а прилагается).
А была использована следующая схема, сначала в шаблоне идет обработка проассигненых данных и перевод их в набор итераций, а затем идет текст шаблона аля блитз где эти итерации обрабатываются. Главное - программист самого скрипта не участвует.
Для скорости (правда не знаю что будет быстрее, Blitz или скомпилированный код в for'ы (+ eAccelerator)) - можно отдавать парсинг шаблона самому Blitz, а преобразователь из проассигненных данных в итерации хранить в шаблоне.

Old Post 27.10.07 16:21 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
Время GMT. Текущее время 23:19. Подписаться на Тему | Версия для Печати
Страниц (4): « 1 [2] 3 4 » |  

PHP Club форумы: > Разное > Offtopic > Для кого мы делаем шаблоны?
     
 
 
 

 © 1997-2010 PHPClubTeam      

Powered by vBulletin Copyright © 2000-2010 Jelsoft Enterprises Limited.