а можно расписать по шагам, буду очень благодарен
Можно. С Вас 15-20$
.
1. в файле articles_function.php
1.1 в function articlesGetArticlesToCustomer
строку
$q = db_query( "select AID, uri, update_date, title, textToPrePublication from ".ARTICLES_TABLE." order by ordering DESC LIMIT 0,".CONF_NEWS_COUNT_IN_CUSTOMER_PART);
заменяем на
$q = db_query( "select AID, uri, update_date, title, textToPrePublication, bid from ".ARTICLES_TABLE." order by ordering, update_date DESC");
1.2. в function articlesGetAllArticles
строку
$q = db_query( "select AID, uri, update_date, title from ".ARTICLES_TABLE." order by update_date DESC" );
заменяем на
$q = db_query( "select AID, uri, update_date, title, bid from ".ARTICLES_TABLE." order by update_date DESC" );
1.3. в function articlesUpdateArticles
строку
function articlesUpdateArticles( $id_articles, $title, $uri, $textToPrePublication, $textToPublication, $metaDescription, $metaKeywords )
заменяем на
function articlesUpdateArticles( $id_articles, $title, $uri, $textToPrePublication, $textToPublication, $metaDescription, $metaKeywords, $bid )
после строки
" uri='".xToText($uri)."', ".
вставляем строку
"bid=".$bid.",".
2. в файле modules_articles.php
2.1. после
die('<font color="green">Первый запуск модуля, инсталляция. Обновите страницу.</font>');
}
вставляем (ниже фигурной скобки, если кто ее не заметил!)
$data = mysql_query("desc ".ARTICLES_TABLE);
while ($row[] = mysql_fetch_assoc($data));
$flag = true;
foreach ($row as $cur_row) if ($cur_row['Field'] == "bid") {$flag=false; break;}
if ($flag) mysql_query("ALTER TABLE ".ARTICLES_TABLE." ADD bid int(11) DEFAULT 0");
$data = db_query("SELECT bid, title FROM ".BLOCKS_TABLE." WHERE url='articles.tpl.html' ORDER BY title");
$blocks[] = array('bid' => 0, 'title' => '- ');
while ($row = db_fetch_assoc($data)) $blocks[] = $row;
$smarty->assign("blockselect",$blocks);
2.2. строку
articlesUpdateArticles($_POST["edit_articles_id"], $_POST["title"], $_POST["uri"], $_POST["textToPrePublication"], $_POST["textToPublication"], $_POST["meta_description"], $_POST["meta_keywords"]);
заменяем на
articlesUpdateArticles($_POST["edit_articles_id"], $_POST["title"], $_POST["uri"], $_POST["textToPrePublication"], $_POST["textToPublication"], $_POST["meta_description"], $_POST["meta_keywords"], $_POST["bid"] );
3. в файле modules_articles.tpl.html
3.1. после
<tr class="lins">
<td align="right">{$smarty.const.ADMIN_ARTICLES_URI}:</td><td><input type=text name='uri' value='{if $edit_articles}{$edit_articles.uri}{else}{$uri}{/if}' style="width: 150px;" class="textp"> <a href="JavaScript:art_auto_uri()" style="text-decoration:underline;">[транслит]</a></td>
</tr>
вставляем
<tr class="lins">
<td align="right">BlockName:</td>
<td>
<select name='bid'>
{section name=k loop=$blockselect}
<option value='{$blockselect[k].bid}'{if $blockselect[k].bid EQ $edit_articles.bid} selected {/if}>{$blockselect[k].title}</option>
{/section}
</select>
</td>
</tr>
3.2. после
<td align="left" width="100%">{$smarty.const.ADMIN_ARTICLES_NAMEF}</td>
вставляем
<td align="right">BlockName</td>
3.3. после
<td align="left">{$articles_posts[i].title}</td>
вставляем
<td align="right">
{section name=k loop=$blockselect}
{if $blockselect[k].bid EQ $articles_posts[i].bid}{$blockselect[k].title}{/if}
{/section}
</td>
4. в файле blocks.tpl.html
строку
<td class="{$bclass}" align="{$balign}">{if $binfo[b].html eq 1}{include file="blocks/`$binfo[b].url`" blocknum=$smarty.section.b.index}{else}{$binfo[b].content}{/if}</td>
заменяем на
<td class="{$bclass}" align="{$balign}">{if $binfo[b].html eq 1}{include file="blocks/`$binfo[b].url`" blocknum=$smarty.section.b.index bid=$binfo[b].bid}{else}{$binfo[b].content}{/if}</td>
5. содержимое файла articles.tpl.html заменяем на
{if $articles_array}
<div align="left" class="articles">
{counter assign=flag start=0}
{section name=u loop=$articles_array}
{if $articles_array[u].bid == $bid && $flag < 5}
{if $flag}<br>{/if}
{counter}
<span class="date"><b>{$articles_array[u].update_date}</b></span><br>
<a href="{$smarty.const.ARTICLES_ROOT}/{$articles_array[u].uri}.html"><h2>{$articles_array[u].title}</h2></a>
<div>{$articles_array[u].textToPrePublication}</div>
{/if}
{/section}<br>
{if $flag}<a href="{$smarty.const.ARTICLES_ROOT}/?bid={$bid}"><h2>{$smarty.const.STRING_ARTICLES_INDEX}</h2></a>
{else}<b>no articles</b>{/if}
</div>
{/if}
где $flag < 5 это количество показываемых в блоке (блоках) статей
6. первым делом заходим в админку в Модули/Статьи. Это надо, чтобы в таблице xxxx_articles (она же ARTICLES_TABLE)
создалось поле bid, в котором каждой статье будет прописан идентификатор ее блока либо (изначально) ноль.
7. можно использовать $_GET['bid'] (довесок ?bid={$bid} из предыдущего пункта) в показе всех статей,
чтобы в зависимости от того, в каком блоке нажато "Все
статьи" выдавалась та или иная выборка статей.
Я заленился это делать, т.к. банально и не интересно.
PS. Посмотреть можно, как всегда, на cpu.badisoft.ru - блоки "Документация" (слева) и "Статьи" (слева). Туда оно имплантировано строго следуя вышеизложенному описанию.
ак есть уже готовый но цена кусается, я не говорю что надо писать новый.
Вот этой сентенции я вообще не понял.
Если есть готовый, но цена кусается, то к чему дописан хвостик "я не говорю, что надо писать новый"?
Какую смысловую нагрузку несет эта дописка?