Спешу представить всем пользователям 4dle.ru очередное маленькое дополнение к Data Life Engine. Суть этого хака в том, чтобы при запросе в главную категорию, выводились его подкатегории и количество новостей в них. Я видел похожий модуль за деньги и для старых версий. Этот же хак бесплатный и обещает работать на актуальных версиях движка
Модуль не добавляет нагрузки, ну если только чуть чуть. Не создаётся никаких дополнительных запросов, используется внутренний массив $cat_info. Но я его немного дописал, тем самым добавил возможность вывести количество новостей в этой категории.
Установка на самом деле состоит из трёх ступеней:
1. Отредактировать запрос в engine/init.php
Найти:
$cat_info = get_vars ( "category" );
if (! is_array ( $cat_info )) {
$cat_info = array ();
$db->query ( "SELECT * FROM " . PREFIX . "_category ORDER BY posi ASC" );
while ( $row = $db->get_row () ) {
if (! is_array ( $cat_info )) {
$cat_info = array ();
$db->query ( "SELECT * FROM " . PREFIX . "_category ORDER BY posi ASC" );
while ( $row = $db->get_row () ) {
Заменить на:
$cat_info = get_vars ( "category" );
if (! is_array ( $cat_info )) {
$cat_info = array ();
$db->query ( "SELECT ".PREFIX."_category.id, name, ".PREFIX."_category.alt_name, icon, skin, parentid, news_sort, news_msort, news_number, short_tpl, full_tpl, COUNT(".PREFIX."_post.category) as post_count FROM ".PREFIX."_category LEFT JOIN ".PREFIX."_post ON ".PREFIX."_category.id = ".PREFIX."_post.category GROUP BY id ");
while ( $row = $db->get_row () ) {
if (! is_array ( $cat_info )) {
$cat_info = array ();
$db->query ( "SELECT ".PREFIX."_category.id, name, ".PREFIX."_category.alt_name, icon, skin, parentid, news_sort, news_msort, news_number, short_tpl, full_tpl, COUNT(".PREFIX."_post.category) as post_count FROM ".PREFIX."_category LEFT JOIN ".PREFIX."_post ON ".PREFIX."_category.id = ".PREFIX."_post.category GROUP BY id ");
while ( $row = $db->get_row () ) {
2. Подключить это в index.php
Найти:
require_once ROOT_DIR . '/engine/init.php';
Ниже вставить:
/*Хак вывода подкатегорий*/
foreach ($cat_info as $key => $value){
if ($category_id == $cat_info[$key]['parentid'] AND $category_id != ""){
if ($config['allow_alt_url'] == "yes")
$url = $config['http_home_url'] . $cat_info[$category_id]['alt_name'] ."/". $cat_info[$key]['alt_name'] . "/";
else
$url = $config['http_home_url'] . "index.php?do=cat&category=" . $cat_info[$key]['alt_name'];
$catmenu .= "<TR>
<TD width=30%><a href="{$url}">".$cat_info[$key]['name']."</a></TD>
<TD width=5%>".$cat_info[$key]['post_count']."</TD>
</TR>";
}
}
if ($catmenu){
$sub_cats .= "<b>Список подкатегорий:</b> <br /><table width=100%>";
$sub_cats .= $catmenu;
$sub_cats .= "</table>";
} else {
$sub_cats = "";
}
/*Хак вывода подкатегорий*/
Найти:
$tpl->load_template ( 'main.tpl' );
Ниже вставить:
$tpl->set('{sub_cats}', $sub_cats); //Хак вывода подкатегорий
3. Открыть templates/{Ваш шаблон}/main.tpl
В удобное место добавить:
{sub_cats}