...ещё спецов для написания php_templates? negative. этот проект веду я один. я всегда включу в CVS чей-то bugfix (при условии, что он хорош, ессно), но реализацию новых фич оставляю за собой. это -- лишь необходимая мера для поддержания порядка в проекте.Думаю надо найти еще спецов по написамнию модулей - чтоб дело спорилось
//-- БД: "parts" -> каталоги, "articles" -> статьи. Привязка по полям `cat_id` каждой из таблиц.
//--
if (tmpl_type_of ($template,'subcat')) {
$query = "SELECT `cat_id`, `name`, `description`FROM `parts`";
$result = mysql_query($query);
//-- Получили строки каталогов --
while($row = mysql_fetch_assoc($result)) {
tmpl_iterate($template, 'subcat');
tmpl_set($template, 'subcat', $row);
//-- Получаем статьи, привязанные к текущему в цикле каталогу --
if (tmpl_type_of ($template,'art_lim')) {
$query = "SELECT `name`, `description`FROM `articles`WHERE `cat_id` = ".$row['cat_id'];
$result1 = mysql_query($query);
while($row1 = mysql_fetch_assoc($result1)) {
tmpl_iterate($template, 'art_lim');
tmpl_set($template, 'art_lim', $row1);
}
}
}
}
<tmpl:subcat>
<table>
<tr>
<td>
{name}
</td>
</tr>
<tr>
<td>
{description}
</td>
</tr>
</table>
</tmpl:subcat>
<tmpl:art_lim>
<table>
<tr>
<td>
{name}
</td>
</tr>
<tr>
<td>
{description}
</td>
</tr>
</table>
</tmpl:art_lim>
<table class="menu">
<tmpl:cat>
<tr><th>{part_name}</th></tr>
<tmpl:subcat>
<tr><td>-- {article_name}</td></tr>
</tmpl:subcat>
</tmpl:cat>
</table>
$sql = "SELECT parts.*, articles.*, parts.name AS part_name, articles.name AS article_name FROM parts INNER JOIN articles USING(cat_id) GROUP BY articles.id ORDER BY parts.name, parts.id, articles.name";
$q = mysql_query($sql) or die("SQL error: ".mysql_error());
$cat = 0;
while($D = mysql_fetch_assoc($q))
{
extract($D);
if($cat != $cat_id)
{
tmpl_iterate($tmpl, "cat");
tmpl_set($tmpl, "cat", $D);
$cat = $cat_id;
}
tmpl_iterate($tmpl, "cat/subcat");
tmpl_set($tmpl, "cat/subcat", $D);
}
<?php
//-- Загрузка левого меню --
$template = tmpl_open('./blocks/left_menu.html');
$query = "SELECT t1.`cat_id`,t1.`cat_level`,t2.`name`,t3.`mod_id`, t3.`file`
FROM `parts` AS t1
LEFT JOIN `part_names` AS t2 ON t1.`cat_id` = t2.`cat_id`
LEFT JOIN `modules` AS t3 ON t2.`mod_id` = t3.`mod_id`
WHERE t1.`cat_level` IN (1,2)
ORDER BY t1.`cat_left`";
$result = $db->Execute($query);
$i=1;
while($row = $result->FetchRow()) {
if ($row['cat_level'] == 1) {
tmpl_iterate($template, 'topic');
tmpl_set($template, 'topic', $row);
}
if ($row['cat_level'] == 2) {
if ($i == 1) {
tmpl_iterate($template, 'topic/menu_ord');
tmpl_set($template, 'topic/menu_ord', $row);
$i = 0;
} else {
tmpl_iterate($template, 'topic/menu_even');
tmpl_set($template, 'topic/menu_even', $row);
$i = 1;
}
}
}
echo tmpl_parse($template);
?>
<table>
<tmpl:topic>
<tr>
<td>Topic - {name}</td>
</tr>
<tmpl:menu_ord>
<tr>
<td>ord - {name}</td>
</tr>
</tmpl:menu_ord>
<tmpl:menu_even>
<tr>
<td>even - {name}</td>
</tr>
</tmpl:menu_even>
</tmpl:topic>
</table>
<tmpl:menu_item>
<tmpl:menu_odd>
</tmpl:menu_odd>
<tmpl:menu_even>
</tmpl:menu_even>
</tmpl:menu_item>
tmpl_iterate($tmpl, "menu_item");
tmpl_set($tmpl, "menu_item/".($i % 2 ? "menu_odd" : "menu_even"), $D);
да-да, приглашаю всех тестировать и высказывать свои пожелания !Автор оригинала: su1d
неа, мануал есть только тот, что уже есть.
глянь ещё -- http://raa.livejournal.com/85358.html -- здесь Fisher понятно объяснил принципы работы контекстов, и может быть ещё тебе понравится его новый шаблонизатор.
diff -r e25edcf39d28 templates.c
--- a/templates.c Tue Aug 21 05:01:45 2012 +0000
+++ b/templates.c Tue Aug 21 05:02:46 2012 +0000
@@ -48,7 +48,7 @@
int le_templates;
/* {{{ templates_functions[] */
-function_entry templates_functions[] = {
+static const zend_function_entry templates_functions[] = {
PHP_FE(tmpl_open, NULL)
PHP_FE(tmpl_load, NULL)
PHP_FE(tmpl_close, NULL)