Kredov long

[Хак] subcategory

Тема в разделе "DataLife Engine", создана пользователем gvityan, 29 окт 2012.

  1. gvityan

    gvityan

    Регистрация:
    29 окт 2012
    Сообщения:
    39
    Симпатии:
    6
    Автор: 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 */

    Ну вот и собственно все.
     
    Stanislavsss нравится это.