PDA

View Full Version : Блок Content для разных категорий


atex
23.04.2007, 00:48
Попытался создать блок для модуля Content вот такого содержания: в таблицу из 3-х столбцов нужно вставить три статьи, причем в каждый столбец, например, по две последних статьи из соответствующих категорий модуля. То есть, в первом столбце - катерогия 1 (cid=1), статья 1 (pid=1) и краткое содержание 1 (page_header1), и т.д.
Вот так выглядит таблица
<table border="0" cellpadding="0" cellspacing="4" width="100%" height="109">
<tr>
<td width="33%" align="center" height="26">Категория1</td>
<td width="33%" align="center" height="26">Категория2</td>
<td width="34%" align="center" height="26">Категория3</td>
</tr>
<tr>
<td width="33%" valign="top">title1</td>
<td width="33%" valign="top">title2</td>
<td width="34%" valign="top">title3</td>
</tr>
<tr>
<td width="33%" valign="top">page_header1</td>
<td width="33%" valign="top">page_header2</td>
<td width="34%" valign="top">page_header3</td>
</tr>
</table>
Вот так выглядит фрагмент кода для для этого модуля, но для случая вывода посто последних новостей без указания конкретной категории:
$content = "<table width=\"100%\" border=\"0\"><tr><td align=\"LEFT\" bgcolor=\"$bgcolor1\">";
$sql3 = "SELECT pid, cid, title, active, page_header, UNIX_TIMESTAMP(date) as postdate FROM ".$prefix."_pages WHERE cid !='0' AND active = '1' ORDER BY pid DESC LIMIT 2";
$result3 = $db->sql_query($sql3);
if ($numrows = $db->sql_numrows($result3) > 0) {
while ($row = $db->sql_fetchrow($result3)) {
$p_pid = $row[pid];
$p_title = $row[title];
$p_page_header = $row[page_header];

Известно, что для вывода последних 2 новостей из конкретной категории (5) записывается так:
$sql3 = "SELECT pid, cid, title, active, page_header, UNIX_TIMESTAMP(date) as postdate FROM ".$prefix."_pages WHERE cid ='5' AND active = '1' ORDER BY pid DESC LIMIT 2";
Но совместить все это так, чтобы выводились в каждом из столбцов новости для конкретной категории не получается.
Подскажите хотя бы принцип реализации данного алгоритма.

Soniks
23.04.2007, 18:38
Самое простое это поменять вывод HTML.

<table border="0" cellpadding="0" cellspacing="0" width="100%" height="109">
<tr>
<td width="33%" align="center" height="26"><table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" height="26">Категория1</td> </tr>
<tr>
<td valign="top">title1</td> </tr>
<tr>
<td valign="top">page_header1</td> </tr>
</table> </td> <td width="33%" align="center" height="26"><table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" height="26">Категория2</td> </tr>
<tr>
<td valign="top">title2</td> </tr>
<tr>
<td valign="top">page_header2</td> </tr>
</table> </td> <td width="33%" align="center" height="26"><table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" height="26">Категория3</td> </tr>
<tr>
<td valign="top">title3</td> </tr>
<tr>
<td valign="top">page_header3</td> </tr>
</table> </td>

После чего проходим двумя циклами по двум запросам, первый проходи по запросу к категориям, выводит название категории, второй внутри него выводит 2 последние страницы.

atex
23.04.2007, 21:02
Спасибо, soniks, я не догдался о таком подходе, сделал, отталкиваясь от моего html-кода. Получилось, но только выводится по одной последней статье. Теперь попробую предложенный тобой подход.
Как закончу, дам ссылку.
Еще раз, спасибо.

atex
03.05.2007, 12:44
Блок благополучно работает, если есть желание, можете посмотреть на странице www.bizbank.ru