Стандартно DLE использует проверку на поиск в массиве функцию in_array которая сама по себе "медленная" и быстрее использовать проверку по ключу через isset.
Вот так выполняется код DLE для новостей которые используют тег [catlist в обширном количестве.
	
	
		
			
	
	
	
		
		
	
И с таким набором категорий у новостей

А вот так с новым кодом

Теперь давайте подумаем, а что если у нас на одной странице порядка 30 новостей, включая custom, и используется везде тег [catlist. Согласен нагрузка не большая, но оптимизация всегда нужна.
Для этого нужно сделать:
1. Открываем /engine/modules/functions.php и находим код
	
		
Выше вставляем
	
	
	
		
2. Открываем /engine/modules/show.short.php show.full.php show.custom.php находим
	
	
	
		
Меняем на
	
	
	
		
Вот и все.
Автор: https://punpun.name/ (я)
								Вот так выполняется код 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]
А вот так с новым кодом

Теперь давайте подумаем, а что если у нас на одной странице порядка 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];
}
		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://punpun.name/ (я)
 
				 
		 
		 
		 
		 
		 
		 
		 
				
		
 
 
		 
    		
		 
 
		 
				
		 
                                 
                                 
                                
 
 
		
 
 
		 
 
		 
				
		 
 
		 
 
		 
 
		