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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Самопальный простенький шаблонизатор 
:(
    Опции темы
Feldmarschall
Дата 9.5.2008, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Canarat, диалог возможен, когда есь четко сформулированный вопрос, который необходимо обсудить. Если каждый говорит ни о чем, безо всякой связи с остальными - то, разумеется, диалога не получится. Но причина будет не в предмете обсуждения.
PM   Вверх
Fortop
Дата 9.5.2008, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вот, чтобы далеко не ходить.

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  reports.rar 2,75 Kb


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
ksnk
Дата 9.5.2008, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Canarat, в этом случае данные должны прилететь в виде 'Описание компании ООО "<span>Пивзавод</span>".' После этого уже дело верстальщика стилями обеспечить раскраску этой фразы в нужные цвета в нужных местах. Никакого отношения к шоблонам этот случай не имеет smile


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Canarat
Дата 10.5.2008, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Попробую другой пример smile Из жизни.

Скрипт - галерея. Страница - вывод thumnail'ов. Выводятся они в виде двумерной таблицы 7х7. Каждая ячейка таблицы - по желанию заказчика - отдельный файл шаблон "тумбы". Как работает сейчас - в шаблоне страницы имеется кривейший костыль в виде тега TableBuilder, которому передается массив уже отпарсенных(т.е. файл ячейки уже открыт, и в цикле полностью обработан) тумб.

Недостаток - TableBuilder и необходимость подготовки каждой ячейки в скрипте. Как исправлять?

Замечание: я с большим трудом открестился от раскрашивания четных/нечетных ячеек, ибо шаблоны заказчик не хотел усложнять, а в код такой бред пихать я не согласен.
PM MAIL   Вверх
Fortop
Дата 10.5.2008, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Canarat, 
Цитата(Canarat @  10.5.2008,  07:55 Найти цитируемый пост)
я с большим трудом открестился от раскрашивания четных/нечетных ячеек

jQuery -> tablesorter -> widget - zebra 
Посмотри как там это организовано, возможно тебе поможет


Цитата(Canarat @  10.5.2008,  07:55 Найти цитируемый пост)
Выводятся они в виде двумерной таблицы 7х7. Каждая ячейка таблицы - по желанию заказчика - отдельный файл шаблон "тумбы". 

Что мешает использовать вложенные шаблоны?

есть общий шаблон - таблица
в каждую ячеку вставляешь шаблон "тумбы" smile


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Canarat
Дата 10.5.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Fortop, я предлагал заказчику раскрашивать на клиенте smile это было отнесено к разряду "да ну нафиг мне париться".

Цитата

есть общий шаблон - таблица
в каждую ячеку вставляешь шаблон "тумбы"

Тут немного недопонял. Размер таблицы не фиксирован, он зависит от опций, выбранных пользователем на сайте и от количества картинок в категории. Пустые ячейки сразу же отметаются.
PM MAIL   Вверх
Fortop
Дата 10.5.2008, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Canarat, 
Уточняющие вопросы.
1. За какую часть ты все же отвечаешь? smile почему javascript внутри шаблона - это  "да ну нафиг мне париться" для заказчика?

2. Насчет вложеных шаблонов.
Кто мешает сделать шаблон таблицы с достаточно сложной структурой?
- Получил он данные о твоих картинках
- посчитал их
- построил нужную таблицу
- а для каждой ячейки вызвал шаблон ячейки передав ему только кусочек данных.



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Canarat
Дата 10.5.2008, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Fortop, 
1. С моей стороны - программа, которая работает с данными, и программа-парсер шаблонов. Больше ничего.
2. Так ведь в данный момент все так и происходит smile Но суть в том, что шаблонный парсер очень прост. Пара булевых условий, {}-вставки и этот пресловутый TableBuilder. Который как раз таки и не вписывается в образ идеального шаблонизатора.

Поэтому в данный момент "шаблон таблицы с достаточно сложной структурой" - это суть РНР-скрипт.

Ты предлагаешь усложнить шаблонизатор?
PM MAIL   Вверх
Fortop
Дата 10.5.2008, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Canarat, 
Во-первых, я не вижу ничего проблемного в нахождении php кода внутри шаблона smile

Во-вторых, если ты хочешь чтобы итоговые шаблоны были только из HTML, то менять количество ячеек в таблице - не получится smile
Тебе в любом случае нужна управляющая часть для этого.
Т.е. некоторый мета-шаблон, который подключает в себя отдельные простые шаблончики.

Ну например

Код

$data['rows'] = $массив_данных;
$data['footer'] = $массив_других_данных;

$template = new template('table.phtml');
$page = $template->build($data, array('rows' => new template('cell.phtml'), 'footer' => new template('footer.phtml')));


Сам table.phtml - может содержать примерно такое

Код

<table>
<tbody>
<?php
foreach ($data['rows'] as $rowdata) {
    echo $templates['rows']->build($rowdata);
}
?>
</tbody>
<tfooter>
<?php
foreach ($data['footer'] as $footerdata) {
    echo $templates['footer']->build($footerdata);
}
?>
</tfooter>
</table>


Это сообщение отредактировал(а) Fortop - 10.5.2008, 13:03


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Canarat
Дата 10.5.2008, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Кто спорит, что так можно?

Редактирование шаблонов занимается именно заказчик, именно такой, который совершенно не хочет вкуривать в мою философию о том, что РНР-код в шаблоне это совсем неплохо smile

И этот самый мета-шаблон table.phtml он будет редактировать чуть ли не чаще чем эти маленькие ячейки, учитывая что в этом мета-шаблоне ещё находятся форма смены количества картинок на страницу, способа сортировки, навигации по категориям - и куча другого мусора.
PM MAIL   Вверх
Fortop
Дата 10.5.2008, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Canarat, 
ты же понимаешь, что и рыбку съесть и рот при этом не открыть - нереально.

Запрети редактировать ему мета-шаблоны.
Сделай шаблоны максимально модульными. 
Т.е. навигация, сортировка, форма и прочее - вынеси в отдельные шаблоны. 
Вплоть до того, что строка в таблице - это отдельный шаблон. который может в себя включать только ячейки и кое-какое оформление.
Ячейка - это отдельный шаблон.

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

Короче создай ему конструктор "сделай сам".

Добавлено через 3 минуты и 23 секунды
Твоя задача прописать базовые мета-шаблоны для 3-5ти страниц, содержащие внутри себя код. (для которых максимальное изменение - это CSS стили и не более)

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

Это сообщение отредактировал(а) Fortop - 10.5.2008, 14:06


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Canarat
Дата 10.5.2008, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

Мне ещё интересно услышать XSLT/Smarty любителей. Пусть у них будет такой заказчик как в моем примере и такая же область действия.
PM MAIL   Вверх
awers
Дата 10.5.2008, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

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



Я вижу только один выход - xslt/xml
PM MAIL WWW ICQ Skype   Вверх
Canarat
Дата 10.5.2008, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



awers, вот тебя то я и ждал  smile 

Давай, объясни, и с кодом пожалуйста.
PM MAIL   Вверх
awers
Дата 10.5.2008, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

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



Canarat, в смысле тебе шаблонизатор? )

Добавлено через 2 минуты и 41 секунду
если что - читать тут
PM MAIL WWW ICQ Skype   Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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