CMS DataLife Engine - Система управления сайтами

Авторизация  
Cyrpheus

Убрать вывод новостей из корневого раздела.

Рекомендуемые сообщения

В 22.01.2018 в 13:38, Gameer сказал:

Держите

Выполнить SQL запрос


ALTER TABLE `dle_category` ADD `show_parent` TINYINT(1) NOT NULL DEFAULT '1' AFTER `show_sub`;

Открыть /engine/inc/category.php найти (2 раза)


$show_sub = intval($_POST['show_sub']);

Ниже вставить (2 раза)


$show_parent = intval($_POST['show_parent']);

Далее найти


show_sub, allow_rss,

Заменить на


show_sub, show_parent, allow_rss,

Далее найти


'$show_sub', '$allow_rss',

Заменить на


'$show_sub', '$show_parent', '$allow_rss',

Далее найти


$row['show_sub'] = makeDropDown( array ("0" => $lang['sys_global'], "1" => $lang['opt_sys_yes'], "2" => $lang['opt_sys_no'] ), "show_sub", $row['show_sub'] );

Ниже вставить


$row['show_parent'] = makeDropDown( array ("1" => $lang['opt_sys_yes'], "0" => $lang['opt_sys_no']), "show_parent", $row['show_parent'] );

Далее найти


<div class="form-group">
<label class="control-label col-md-2 col-sm-3">{$lang['opt_sys_sub']}</label>
<div class="col-md-10 col-sm-9">
{$row['show_sub']}
</div>
</div>

Ниже вставить


<div class="form-group">
<label class="control-label col-md-2 col-sm-3">Показывать новости в родительской категории</label>
<div class="col-md-10 col-sm-9">
{$row['show_parent']}
</div>
</div>

Далее найти


show_sub='$show_sub',

Заменить на


show_sub='$show_sub', show_parent='$show_parent',

Далее найти


<div class="form-group">
    <div class="row">
        <div class="col-sm-12">
            <label>{$lang['meta_keys']}</label>
            <textarea name="keywords" class="classic" style="width:100%;" rows="3"></textarea>
        </div>
    </div>
</div>

Ниже вставить


<div class="form-group">
    <div class="row">
        <div class="col-sm-12">
            <label>Показывать новости в родительской категории</label>
            <select class="uniform" name="show_parent" data-width="100%"><option value="1" selected>{$lang['opt_sys_yes']}</option><option value="0">{$lang['opt_sys_no']}</option></select>
        </div>
    </div>
</div>

Открыть /engine/modules/functions.php найти


function get_sub_cats($id, $subcategory = '') {

Выше вставить


function get_not_sub_cats($id, $subcategory = array()) {
    global $cat_info;
    $subfound = array();

    foreach($cat_info as $cats) {
        if($cats['parentid'] == $id && $cats['show_parent'] == 0) {
            $subfound[] = $cats['id'];
        }
    }
    
    foreach($subfound as $parentid) {
        $subcategory[] = $parentid;
        $subcategory = get_not_sub_cats($parentid, $subcategory );
    }
    
    return $subcategory;
}

Открыть /engine/engine.php найти


if ($config['allow_multi_category']) {
                
    $where_category = "category regexp '[[:<:]](" . $get_cats . ")[[:>:]]'";

} else {
    
    if ( $allow_sub_cats ) {
        
        $get_cats = str_replace ( "|", "','", $get_cats );
        $where_category = "category IN ('" . $get_cats . "')";
    
    } else {
        
        $where_category = "category = '{$get_cats}'";
    
    }

}

Ниже вставить


$result_parent_cats = get_not_sub_cats($category_id);
if(count($result_parent_cats)) {
    $not_show_cat = array();
    foreach($result_parent_cats as $key => $array_cat) {
        if($array_cat['id'])
            $not_show_cat[] = $array_cat['id'];
    }
    if($config['allow_multi_category']) {
        $where_category .= " AND category NOT regexp '[[:<:]](" . implode("|", $not_show_cat) . ")[[:>:]]'";
    }
    else {
        $where_category .= " AND category NOT IN ('" . implode("','", $not_show_cat) . "')";
    }
}

Открыть /engine/init.php найти


$temp_parent = $cat_info[$value]['parentid'];

Ниже вставить


if($cat_info[$value]['show_parent'] == 0)
    continue;

 

Лучше написать хак который использует стандартное поле, но меняет логику работы на описанную выше.
Ваш текущий код не все места в движке правит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация