Forums / National / Russian / Вопросы и пожелания к движку

Для юзеров Seditio и новичков

Ratibor
#11139 2009-04-06 20:45
# Boss : Подозреваю, что это можно реализовать без дополнительного запроса. Просто в цикле смотрим (сравниваем) из какого CAT сейчас SECTION крутятся и как только CAT другой - делаем закрытие/открытие.
Можно, смотри мой самый первый вариант.
Но у него есть один существенный недостаток - там все блоки будут через )(.

Вот как будет выглядеть шаблон:
<!-- BEGIN: FORUMS_SECTIONS_ROW -->
<!-- BEGIN: FORUMS_SECTIONS_ROW_CAT -->

<!-- BEGIN: FORUMS_SECTIONS_FOOTER -->
</table>
<!-- END: FORUMS_SECTIONS_FOOTER -->

<h1>{FORUMS_SECTIONS_ROW_CAT_SHORTTITLE}</h1>
<table class='cells'>
<tr>
   <th>Раздел</th>
   <th>Тем</th>
   <th>Сообщений</th>
   <th>Крайнее сообщение</th>
</tr>
<!-- END: FORUMS_SECTIONS_ROW_CAT -->
 
<!-- BEGIN: FORUMS_SECTIONS_ROW_SECTION -->
<tr>
   <td>
   <h2><a href='{FORUMS_SECTIONS_ROW_URL}'>{FORUMS_SECTIONS_ROW_TITLE}</a></h2>
   <div>{FORUMS_SECTIONS_ROW_DESC}</div>
   </td>
   <td>{FORUMS_SECTIONS_ROW_TOPICCOUNT}</td>
   <td>{FORUMS_SECTIONS_ROW_POSTCOUNT}</td>
   <td>{FORUMS_SECTIONS_ROW_LASTPOST} ...</td>
</tr>
<!-- END: FORUMS_SECTIONS_ROW_SECTION -->
 
<!-- END: FORUMS_SECTIONS_ROW -->

Причем после <!-- END: FORUMS_SECTIONS_ROW --> надо будет добавить еще раз то, что находится внутри секции FORUMS_SECTIONS_FOOTER, т.е. в твоем конкретном случае будет выглядеть так:

<!-- BEGIN: FORUMS_SECTIONS_ROW -->
<!-- BEGIN: FORUMS_SECTIONS_ROW_CAT -->

<!-- BEGIN: FORUMS_SECTIONS_FOOTER -->
</table>
<!-- END: FORUMS_SECTIONS_FOOTER -->

<h1>{FORUMS_SECTIONS_ROW_CAT_SHORTTITLE}</h1>
<table class='cells'>
<tr>
   <th>Раздел</th>
   <th>Тем</th>
   <th>Сообщений</th>
   <th>Крайнее сообщение</th>
</tr>
<!-- END: FORUMS_SECTIONS_ROW_CAT -->
 
<!-- BEGIN: FORUMS_SECTIONS_ROW_SECTION -->
<tr>
   <td>
   <h2><a href='{FORUMS_SECTIONS_ROW_URL}'>{FORUMS_SECTIONS_ROW_TITLE}</a></h2>
   <div>{FORUMS_SECTIONS_ROW_DESC}</div>
   </td>
   <td>{FORUMS_SECTIONS_ROW_TOPICCOUNT}</td>
   <td>{FORUMS_SECTIONS_ROW_POSTCOUNT}</td>
   <td>{FORUMS_SECTIONS_ROW_LASTPOST} ...</td>
</tr>
<!-- END: FORUMS_SECTIONS_ROW_SECTION -->
 
<!-- END: FORUMS_SECTIONS_ROW -->

</table>

Нравится тебе такое ? Я думаю нет.
Так что либо делать через задницу, либо добавить 1 sql запрос,
тем более который обрабатывается только один раз за секцию.

Еще раз повторю на пальцах что происходит при обработке:
считывается строка из базы и идет сравнение новая это секция или нет и если новая то выводится заголовок. Это справедливо только для заголовка, но ты не можешь предугадать к какой секции будет принадлежать следующая строка в базе. Вот я и ввел цикл, теперь считывается строка из базы и как и раньше идет проверка к новой секции она принадлежит или нет и если к новой, то считаем сколько строк будет в этой секции и как секция закончится, то закрываем ее футером. После этого все отрабатывается четко и шаблон по человечий выглядит.

Если конечно ты сможешь предсказать к какой секции будет принадлежать следующая строка в базе без sql запроса, то предлагай ?
Не задавай глупых вопросов, не услышишь вранья.
This post was edited by Ratibor (2009-04-06 20:54, 15 years ago)