Отключение комментариев для главных категорий и её подкатегорий

По заголовку многие могут сказать, что зачем это нужно, когда в DLE есть пункт в настройках категорий "Запретить комментарии для публикаций". НО! Если основная категория не выбрана, а только подкатегория основной категории - запрет в DLE не сработает. Этот плагин решает эту проблему так, что можно на одну основную категорию поставить запрет на комментарии, и все подкатегории не будут выводить форму для комментирования материала.
Файл engine/modules/show.full.php
Найти:
define( 'NEWS_ID', $row['id'] );
Добавить ниже:
// === ОТКЛЮЧЕНИЕ КОММЕНТАРИЕВ ДЛЯ КАТЕГОРИЙ START ===
function is_category_in_list($cat_id, $target_cats, $cat_info) {
$check_cat = intval($cat_id);
while ($check_cat > 0) {
if (in_array($check_cat, $target_cats)) return true;
if (isset($cat_info[$check_cat]['parentid'])) {
$check_cat = $cat_info[$check_cat]['parentid'];
} else {
break;
}
}
return false;
}
$disable_comments_cats = array(1); // Укажите ID категорий через запятую
$hide_comments = false;
if ($row['category']) {
$news_cats = explode(',', $row['category']);
foreach ($news_cats as $check_cat) {
if (is_category_in_list(intval($check_cat), $disable_comments_cats, $cat_info)) {
$hide_comments = true;
break;
}
}
}
// === ОТКЛЮЧЕНИЕ КОММЕНТАРИЕВ ДЛЯ КАТЕГОРИЙ END ===
Найти:
if( !$view_template AND $news_found) {
Заменить на:
if( !$view_template AND $news_found AND !$hide_comments ) {
Найти:
unset ($tpl->result['comments_not_allowed']);
}
⚠️⚠️⚠️ Этот код встречатся 4 раза в файле, нужно сделать 1 замену с 4 вхождения в файле!!
Добавить ниже:
} elseif( !$view_template AND $news_found AND $hide_comments ) {
// Комментарии отключены — ничего не делаем
// DLE автоматически не будет выводить блок комментариев и форму
}
Скачать плагином:
⚠️ Войдите в аккаунт для доступа к контенту
Похожие статьи:
Комментарии: