Автор: kdn1990 Вот понадобилось мне сделать на одном сайте вывод или наоборот скрытие определенной информации при условии: если мы находимся в категории и в под категориях этой категории. Вот просто не захотелось мне писать все под категории в ручную. И сделал небольшой хак для улучшения функциональности DLE. Совместимость: 9.7 (если есть поддержка subcategory, то думаю и это тоже будет работать) Установка: 1. Открываем /index.php и находим PHP: if (stripos ( $tpl->copy_template, "[static=" ) !== false) { и перед вставляем: PHP: /* kdn1990 */if (stripos ( $tpl->copy_template, "[subcategory=" ) !== false) { $tpl->copy_template = preg_replace ( "#[subcategory=(.*?)](.*?)[/subcategory]#ies", "check_subcategory('\1', '\2', '{$category_id}')", $tpl->copy_template );} if (stripos ( $tpl->copy_template, "[not-subcategory=" ) !== false) { $tpl->copy_template = preg_replace ( "#[not-subcategory=(.*?)](.*?)[/not-subcategory]#ies", "check_subcategory('\1', '\2', '{$category_id}', false)", $tpl->copy_template );}/* kdn1990 */ 2. Открываем /engine/modules/functions.php и ищем PHP: function clean_url($url) { и перед вставляем: PHP: /* kdn1990 */function check_subcategory($catid, $block, $category, $action = true) { $catid = (int)$catid; if ($catid > 0) { $cats = get_sub_cats($catid); $cats = explode( '|', $cats ); $category = explode(',', $category); $found = false; foreach ($category as $element) { if ($action) { if (in_array($element, $cats)) { $block = str_replace('"', '"', $block); return $block; } } else { if (in_array($element, $cats)) { $found = true; } } } if (!$action && !$found) { $block = str_replace('"', '"', $block ); return $block; } } return "";}/* kdn1990 */ Ну вот и собственно все.