4dle.ru > Хаки > Новый тэг subcategory

Новый тэг subcategory


19 октября 2012. Разместил: kdn1990
Вот понадобилось мне сделать на одном сайте вывод или наоборот скрытие определенной информации при условии: если мы находимся в категории и в под категориях этой категории.
Вот просто не захотелось мне писать все под категории в ручную. И сделал небольшой хак для улучшения функциональности DLE.

Совместимость: 9.7 (если есть поддержка subcategory, то думаю и это тоже будет работать)

Установка:
1. Открываем /index.php и находим
if (stripos ( $tpl->copy_template, "[static=" ) !== false) {

и перед вставляем:
/* 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 и ищем
function clean_url($url) {

и перед вставляем:
/* 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 */


Ну вот и собственно все. Тут скриншот не требуется.

Спасибо за внимание.

[removed][removed] [removed] (adsbygoogle = window.adsbygoogle || []).push({}); [removed]