Форум → Программирование → Пыхнуть хотите? → F.A.Q. → О шаблонных механизмах. XTemplate.
О шаблонных механизмах. XTemplate.
Страницы: ← Предыдущая страница • Следующая страница →
-
26 марта 2008 г. 11:03, спустя 32 минуты 46 секунд
кстати говоря, первый шаблонизатор, который я встретил, был как раз таки X-Template… но боюсь тогда оно мне нафиг не надо было)все умрут, а я изумруд -
26 марта 2008 г. 12:40, спустя 1 час 36 минут 57 секунд
Возможно имеет смысл какой-нибудь FAQ краткий набросать.
хотя бы фак, да.. ибо спецификацию новичкам сложновато будет грызть -
26 марта 2008 г. 12:54, спустя 13 минут 48 секунд
Да мне не совсем понятно в какой задаче новички смогут применить XSLT преобразования. -
27 марта 2008 г. 12:21, спустя 23 часа 27 минут 25 секунд
Эмм, полагаю XSLT не совсем в теме, ведь он обрабатывается браузером, не скриптом. -
27 марта 2008 г. 12:45, спустя 23 минуты 36 секунд
Ну это все девичьи фантазии :)
Эмм, полагаю XSLT не совсем в теме, ведь он обрабатывается браузером, не скриптом.
Гляди сюда:
http://ru2.php.net/manual/ru/ref.xsl.php
Кстати, "XSLT обрабатывается" крайне корявое сочетание. -
23 апреля 2008 г. 19:00, спустя 27 дней 5 часов 14 минут
Попробуем теперь сделать нативный шаблон. Честное слово, я старался писать как можно компактнее, но тем не менее у меня получилось вот что:
<table cellpadding="3">
<?php
for($i=0; $i<sizeof($teams)/3; $i++)
{
?>
<tr>
<?php
for($j=0; $j<3; $j++)
{
$index = $i*3 + $j;
if ($index >= sizeof($teams)) break;
?>
<td><b><?php echo $teams[$index]['name'] ?></b></td>
<?php
}
?>
</tr>
<tr>
<?php
for($j=0; $j<3; $j++)
{
$index = $i*3 + $j;
if ($index >= sizeof($teams)) break;
?>
<td><?php echo $teams[$index]['city'] ?><br><br></td>
<?php
}
?>
</tr>
<?php
}
?>
</table>
Ну на самом деле можно это сделать гораздо красивее, например так:<table cellpadding="3">
<?for($i=0; $i<sizeof($teams); $i+=3):?>
<tr>
<?for($j=$i; $j<$i+3; $j++):?>
<td><b><?=$teams[$j]['name']?></b></td>
<?endfor?>
</tr>
<tr>
<?for($j=$i; $j<$i+3; $j++):?>
<td><b><?=$teams[$j]['city']?></b></td>
<?endfor?>
</tr>
<?endfor?>
</table>
Да, в принципе, остаются те же три цикла. Но - при использовании блочного шаблонизатора, разве на самом деле, при генерации страницы не будет тех же самых циклов? -
23 апреля 2008 г. 21:28, спустя 2 часа 28 минут 24 секунды
sap, при использовании "коротких тегов" проблем еще не было?) допустим со строчкой "<?xml"…https://smappi.org/ - платформа по созданию API на все случаи жизни -
23 апреля 2008 г. 21:41, спустя 13 минут 27 секунд
sap, при использовании "коротких тегов" проблем еще не было?)
Были =) Но это уже другой вопрос. -
23 апреля 2008 г. 22:01, спустя 19 минут 26 секунд
Ну на самом деле можно это сделать гораздо красивее
Да примерно то же самое. Ну немного компактнее, засчет применения нетрадиционной формы записи без фигурных скобочек и коротких тегов. Это очень сильно на любителя. Куча людей будет плеваться. Также выкинута проверка на некратное число комманд, что пораждает варнинг.Но - при использовании блочного шаблонизатора, разве на самом деле, при генерации страницы не будет тех же самых циклов?
Ты еще на уровне машинных кодов пересчитай операции. Причем тут сколько циклов будет в шаблонном движке? На то он и движок, чтобы освобождать нас от ручного написания этих циклов и делать наш код прозрачным, засчет того, что перебираем в одном цикле напрямую сущности (команды), а не абстрактные i и j.
А потом, данный скрипт всего лишь тестовый пример, который показывает, что нативные шаблоны далеко не всегда так просты и прозрачны, как это расписывается в различных статьях, где рассматривают только банальный <?php echo ?> Чуть усложнилась верстка - и нате получите кучу вложенных циклов. А в реальной жизни верстка куда как посложней бывает. Я уж молчу про деревья, где в шаблон переползет рекурсия. (В следующей статье поподробней остановлюсь на этом моменте). -
23 апреля 2008 г. 22:24, спустя 23 минуты 13 секунд
Это очень сильно на любителя. Куча людей будет плеваться.
Ну так можно про что угодно сказать.Ты еще на уровне машинных кодов пересчитай операции. Причем тут сколько циклов будет в шаблонном движке? На то он и движок, чтобы освобождать нас от ручного написания этих циклов и делать наш код прозрачным, засчет того, что перебираем в одном цикле напрямую сущности (команды), а не абстрактные i и j.
Опять же - кому как удобнее. Лично мне проще оперировать циклами, чем блоками.Я уж молчу про деревья, где в шаблон переползет рекурсия. (В следующей статье поподробней остановлюсь на этом моменте).
Вот как раз очень интересный момент. Приходилось делать подобное, получалось очень некрасиво (на нативных шаблонах, на Smarty, если честно, вообще этого не представляю). Так что жду с нетерпением =) -
23 апреля 2008 г. 22:34, спустя 9 минут 33 секунды
Если удобней писать три (а то и больше, см. статью) цикла вместо одного, то тогда конечно. Тут просто разные представления об удобстве. ))
Опять же - кому как удобнее. Лично мне проще оперировать циклами, чем блоками. -
24 апреля 2008 г. 2:36, спустя 4 часа 2 минуты 40 секунд
Вот пришло в голову. Допустим, есть список категорий (например, в массиве). При верстке список выглядит как меню. Соответственно, можно просматривать содержимое категорий. Активная категория, само собой, должна быть выделена и не должна быть ссылкой, все остальные - ссылки. При использовании нативных шаблонов это выглядит примерно так:
Контролер:$categories = array (
array ('id' => '1', 'title' => 'Category1'),
array ('id' => '2', 'title' => 'Category2'),
array ('id' => '3', 'title' => 'Category3')
);
$template->assign ("categories", $categories);
$template->assign ("selected_category", $_GET['category']);
Шаблон:<table border="0" width="100">
<?for ($i=0; $i<count($categories); $i++):?>
<tr><td>
<?if ($categories[$i]['id'] != $selected_category):?>
<a href="/category/<?=$categories[$i]['id']?>"><?=$categories[$i]['title']?></a>
<?else:?>
<b><?=$categories[$i]['title']?></b>
<?endif?>
</td></tr>
<?endfor?>
</table>
Как это реализовать с использованием блочного шаблонизатора? Делать для каждой категории отдельный шаблон? Или приписывать теги еще в контроллере? -
24 апреля 2008 г. 12:27, спустя 9 часов 50 минут 17 секунд
<!– BEGIN:item –>
<tr>
<td>
<!– BEGIN:link –>
<a href="/category/{cat.id}">{cat.title}</a>
<!– END:link –>
<!– BEGIN:nolink –>
<b>{cat.title}</b>
<!– END:nolink –>
</td>
</tr>
<!– END:item –> -
-
4 июня 2008 г. 15:55, спустя 41 день 1 час 50 минут
Я честно под*аеьался с этим XTemplate.
Вопросы
$xtpl->assign_file('inside', 'templates/inside.xtpl')
переменная должна называться именно inside как и название файла?
<!– BEGIN:index–>
{FILE {structure}}
<!– END:index –>
не срабатывает ($xtpl->assign_file прописываю, путь верный)
Файл structure.xtpl, а именно родительский блок называет тоже - index. Может быть из за этого?
Если я допустим подключаю файл шапка.xtpl, а шапка у меня динамическая. То тут как быть?
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!