Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

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

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

Тема в разделе "Хаки DLE", создана пользователем PunPun, 20 май 2017.

20.05.17 в 11:32
04.03.19 в 12:54
11
3.054
8
  1. TopicStarter Overlay
    PunPun

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

    Регистрация:
    11 июн 2015
    Сообщения:
    7.292
    Лучших ответов:
    31
    Рейтинги:
    +3.892 / 96 / -0
    Стандартно DLE использует проверку на поиск в массиве функцию in_array которая сама по себе "медленная" и быстрее использовать проверку по ключу через isset.
    Вот так выполняется код DLE для новостей которые используют тег [catlist в обширном количестве.
    Код:
    [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

    Регистрация:
    26 апр 2016
    Сообщения:
    3.236
    Лучших ответов:
    7
    Рейтинги:
    +1.454 / 209 / -0
    Спасибо.
     
    • Нравится Нравится x 1
  3. Frosty

    Забанен

    Регистрация:
    31 мар 2017
    Сообщения:
    941
    Лучших ответов:
    1
    Рейтинги:
    +188 / 18 / -0
    Запил себе )
     
  4. ifreez

    ifreez Бывалый

    Регистрация:
    16 янв 2017
    Сообщения:
    125
    Лучших ответов:
    0
    Рейтинги:
    +36 / 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

    Регистрация:
    11 июн 2015
    Сообщения:
    7.292
    Лучших ответов:
    31
    Рейтинги:
    +3.892 / 96 / -0
    Эта правка будет изменена отдельно.
     
  6. ifreez

    ifreez Бывалый

    Регистрация:
    16 янв 2017
    Сообщения:
    125
    Лучших ответов:
    0
    Рейтинги:
    +36 / 3 / -0
    а долго еще ждать?)
     
    • Смешно Смешно x 2
    • Нравится Нравится x 1
    • Согласен Согласен x 1
  7. Mr.Smith

    PRO Users

    Регистрация:
    5 ноя 2017
    Сообщения:
    96
    Лучших ответов:
    2
    Рейтинги:
    +11 / 1 / -0
    Спасибо, поставил.
     
  8. Andrey555

    PRO Users

    Регистрация:
    30 янв 2018
    Сообщения:
    120
    Лучших ответов:
    1
    Рейтинги:
    +134 / 65 / -0
    Ускорился... сайт вообще перестал работать... Спасибо огромное, что уничтожили сайт.. а как теперь вернуть все обратно непонятно. Ставить не рекомендую, только если хотите потерять сайт
     
  9. Romantv

    Забанен

    Регистрация:
    17 июл 2015
    Сообщения:
    6.992
    Лучших ответов:
    6
    Рейтинги:
    +2.000 / 141 / -0
    У тебя кривые руки, все работает, проверено лично.
     
    • Нравится Нравится x 2
  10. TopicStarter Overlay
    PunPun

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

    Регистрация:
    11 июн 2015
    Сообщения:
    7.292
    Лучших ответов:
    31
    Рейтинги:
    +3.892 / 96 / -0
    Если дегенерат с левыми руками то удали свой сайт и выбрось комп, таким тут не место. Удачи, и всего хорошего ;)
     
  11. Winston?!

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

    Регистрация:
    31 дек 2016
    Сообщения:
    1.230
    Лучших ответов:
    2
    Рейтинги:
    +94 / 11 / -0
    актуально ли для версии 13.1?)
     
  12. ifreez

    ifreez Бывалый

    Регистрация:
    16 янв 2017
    Сообщения:
    125
    Лучших ответов:
    0
    Рейтинги:
    +36 / 3 / -0
    работает нормально
     
Похожие темы
  1. PhoenixProject
    Ответов:
    12
    Просмотров:
    2.533
  2. PunPun
    Ответов:
    24
    Просмотров:
    9.658
  3. never3d22
    Ответов:
    10
    Просмотров:
    896
  4. nginx
    Ответов:
    0
    Просмотров:
    809
  5. byroot
    Ответов:
    5
    Просмотров:
    1.322
Загрузка...
Яндекс.Метрика