|
|
Посмотрел как было, увы, было нехорошо... совсем.
Было "в лоб":
@printMessagesByParent[parentId;threadId]
^var[tmp1;$parentId]
^var[tmp2;$threadId]
^var[tmp3;$parentTitle]
^context[parent$parentId;
^sql[
select
id,
title,
author,
substring(message,1,1) as message,
date_format(posted, '%d.%m %H:%i') as posted_formatted,
date_format(posted, '%Y-%m-%d') as posted_formatted_date
from forum
where
parent_id = '^var[tmp1]' and
thread_id = '^var[tmp2]'
order by posted, id
]
<ul class="compact">
^menu[
<li type="disc">
^rem[ тут выводится сама строка с заголовком сообщения]
^macro[messageTitle.forum;^item[id];^item[title];^item[author];^item[posted_formatted];^eq[^item[posted_formatted_date];^date[%Y-%m-%d];1];^eq[^number[id];^item[id];1];^item[message]]
^macro[printMessagesByParent;^item[id];^var[tmp2]]
</li>
]
</ul>
]
(Я правда не знаю, сколько этой версии лет, но ничего новее я в _своих_ архивах не нашел).
Это ОЧЕНЬ плохой вариант, т.к. SQL сервер просто ляжет при больших деревьях.
У меня есть где-то рекурсивные обходы дерева на 2 парсере, но искать и затачивать для форума это меня ломает...
Вот хоть какой-то, но пример:
@reset[]
^ifdef[^var[reset_^var[reset_context]];
^locate[0;^var[reset_^var[reset_context]]]
;
^locate[0;deaddead]
^var[reset_^var[reset_context];^item[0]]
]
@draw_tree[]
^var[level;+;1]
^macro[reset]
^var[i;0]
^while[i<^item[count];
^eq[^item[parent_id];^var[parent_id];
^var[current_^var[level];^item[current]]
^var[parent_id_^var[level];^var[parent_id]]
^rem[ ???????? parent_id ????? ?????????? ?????????? ]
^var[parent_id;^item[id]]
<tr><td>
<table cellpadding=0 cellspacing=0 border=0>
<tr valign=middle>
<td>
^var[nbsp;^var[level]]
^while[nbsp > 0; ^; ^; ^; ^;^var[nbsp;-;1]]
</td>
<td> ^;</td>
<td>
<a href="message_id=^item[id]">^item[name]</a>
</td>
</tr>
</table>
</td></tr>
^macro[draw_tree]
^var[parent_id;^var[parent_id_^var[level]]]
^var[i;^var[current_^var[level]]]
^macro[reset]
^shift[^var[current_^var[level]]]
]
^shift[1]
^var[i;+;1]
]
^var[level;-;1]
@main
^context[tree;
^sql[SELECT id, name, object_id as parent_id FROM object ]
^var[reset_context;tree]
^var[parent_id;0]
<table>
^macro[draw_tree]
</table>
]
-Это пример НЕ форума, а обхода дерева.
-Писал НЕ я, я даже разбираться толком не стал, но знаю, что это работает :)
-Возможно придется поправить ошибки, которые внес я, убивая не относящееся к делу.
-Есссно нужно будет поменять форматирование табличками на <ul><li>...</li></ul>, или ещё как...
Удачи.
|