Dismiss Notice
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Ускоряем работу dle - тег catlist

Discussion in 'Хаки DLE' started by PunPun, May 20, 2017.

20.05.17 в 11:32
04.03.19 в 12:54
11
3,465
8
  1. TopicStarter Overlay
    PunPun

    VIP Кинотрафик v2

    Joined:
    Jun 11, 2015
    Messages:
    7,434
    Best Answers:
    32
    Ratings:
    +4,062 / 137 / -0
    Стандартно DLE использует проверку на поиск в массиве функцию in_array которая сама по себе "медленная" и быстрее использовать проверку по ключу через isset.
    Вот так выполняется код DLE для новостей которые используют тег [catlist в обширном количестве.
    Code:
    [catlist=1,2,3,4,5,6,7,8,9,10,11]1[/catlist]
    [catlist=2]2[/catlist]
    [catlist=3]3[/catlist]
    [catlist=4]4[/catlist]
    [catlist=5]5[/catlist]
    [catlist=6]6[/catlist]
    [catlist=7]7[/catlist]
    [catlist=8]8[/catlist]
    [catlist=9]9[/catlist]
    [catlist=10]10[/catlist]
    [catlist=11]11[/catlist]
    
    И с таким набором категорий у новостей
    upload_2017-5-20_11-1-59.png
    upload_2017-5-20_10-39-46.png
    А вот так с новым кодом
    upload_2017-5-20_10-40-50.png
    Теперь давайте подумаем, а что если у нас на одной странице порядка 30 новостей, включая custom, и используется везде тег [catlist. Согласен нагрузка не большая, но оптимизация всегда нужна.

    Для этого нужно сделать:
    1. Открываем /engine/modules/functions.php и находим код
    PHP:
    function check_category$matches=array() ) {
    Выше вставляем
    PHP:
    function check_catlist$matches=array(), $cat_list ) {
        
    $cat_list array_flip($cat_list);
        if(
    $matches[1] == "catlist")
            
    $action true;
        else
            
    $action false;
        if(
    substr_count($matches[2],","))
        {
            
    $cat_array explode(","$matches[2]);
            foreach(
    $cat_array as $value)
            {
                if(isset(
    $cat_list[$value]))
                    if(
    $action)
                        return 
    $matches[3];
                    else
                        return 
    "";
            }
        }
        else
        {
             if(isset(
    $cat_list[$matches[2]]))
                if(
    $action)
                    return 
    $matches[3];
                else
                    return 
    "";
        }
        if(
    $action)
            return 
    "";
        else
            return 
    $matches[3];
    }
    2. Открываем /engine/modules/show.short.php show.full.php show.custom.php находим
    PHP:
    if( strpos$tpl->copy_template"[catlist=" ) !== false ) {
        
    $tpl->copy_template preg_replace_callback "#\\[(catlist)=(.+?)\\](.*?)\\[/catlist\\]#is""check_category"$tpl->copy_template );
    }

    if( 
    strpos$tpl->copy_template"[not-catlist=" ) !== false ) {
        
    $tpl->copy_template preg_replace_callback "#\\[(not-catlist)=(.+?)\\](.*?)\\[/not-catlist\\]#is""check_category"$tpl->copy_template );
    }
    Меняем на
    PHP:
    if( strpos$tpl->copy_template"[catlist=" ) !== false ) {
        
    $tpl->copy_template preg_replace_callback "#\\[(catlist)=(.+?)\\](.*?)\\[/catlist\\]#is", function($data) use ($cat_list)
        {
            return 
    check_catlist($data$cat_list);
        }, 
    $tpl->copy_template );
    }

    if( 
    strpos$tpl->copy_template"[not-catlist=" ) !== false ) {
        
    $tpl->copy_template preg_replace_callback "#\\[(not-catlist)=(.+?)\\](.*?)\\[/not-catlist\\]#is", function($data) use ($cat_list)
        {
            return 
    check_catlist($data$cat_list);
        }, 
    $tpl->copy_template );
    }
    Вот и все.
    Автор: https://сайт lazydev/ (я)
     
    • Нравится Нравится x 8
    • Полезно Полезно x 2
  2. evgfreeman

    VIP Кинотрафик v2

    Joined:
    Apr 26, 2016
    Messages:
    3,383
    Best Answers:
    7
    Ratings:
    +1,543 / 214 / -0
    Спасибо.
     
    • Нравится Нравится x 1
  3. Frosty

    Забанен

    Joined:
    Mar 31, 2017
    Messages:
    935
    Best Answers:
    1
    Ratings:
    +187 / 18 / -0
    Запил себе )
     
  4. ifreez

    ifreez Бывалый

    Joined:
    Jan 16, 2017
    Messages:
    125
    Best Answers:
    0
    Ratings:
    +37 / 3 / -0
    А если у меня стоит твой хак и я вывожу так:
    {cat:1} или {cat:1,2,3} - выведет ссылку на эти категории которые указаны.
    [cat:1] текст [/cat] или [cat:1,2,3] текст [/cat] - выведет текст внутри тегов если категория выбрана для новости.
    http://zerocoolpro.biz/forum/threads/xaki-dlja-datalife-engine.7270/

    нужно делать правки? или и так все ок?
     
  5. TopicStarter Overlay
    PunPun

    VIP Кинотрафик v2

    Joined:
    Jun 11, 2015
    Messages:
    7,434
    Best Answers:
    32
    Ratings:
    +4,062 / 137 / -0
    Эта правка будет изменена отдельно.
     
  6. ifreez

    ifreez Бывалый

    Joined:
    Jan 16, 2017
    Messages:
    125
    Best Answers:
    0
    Ratings:
    +37 / 3 / -0
    а долго еще ждать?)
     
    • Смешно Смешно x 2
    • Нравится Нравится x 1
    • Согласен Согласен x 1
  7. Mr.Smith

    PRO Users

    Joined:
    Nov 5, 2017
    Messages:
    96
    Best Answers:
    2
    Ratings:
    +11 / 1 / -0
    Спасибо, поставил.
     
  8. Andrey555

    PRO Users

    Joined:
    Jan 30, 2018
    Messages:
    124
    Best Answers:
    1
    Ratings:
    +137 / 65 / -0
    Ускорился... сайт вообще перестал работать... Спасибо огромное, что уничтожили сайт.. а как теперь вернуть все обратно непонятно. Ставить не рекомендую, только если хотите потерять сайт
     
  9. Romantv

    Забанен

    Joined:
    Jul 17, 2015
    Messages:
    6,946
    Best Answers:
    6
    Ratings:
    +1,994 / 141 / -0
    У тебя кривые руки, все работает, проверено лично.
     
    • Нравится Нравится x 2
  10. TopicStarter Overlay
    PunPun

    VIP Кинотрафик v2

    Joined:
    Jun 11, 2015
    Messages:
    7,434
    Best Answers:
    32
    Ratings:
    +4,062 / 137 / -0
    Если дегенерат с левыми руками то удали свой сайт и выбрось комп, таким тут не место. Удачи, и всего хорошего ;)
     
  11. Winston?!

    VIP Кинотрафик v2

    Joined:
    Dec 31, 2016
    Messages:
    1,252
    Best Answers:
    2
    Ratings:
    +105 / 11 / -0
    актуально ли для версии 13.1?)
     
  12. ifreez

    ifreez Бывалый

    Joined:
    Jan 16, 2017
    Messages:
    125
    Best Answers:
    0
    Ratings:
    +37 / 3 / -0
    работает нормально
     
Яндекс.Метрика