Шаблон обертка для { custom... }

Шаблон обертка для { custom... }

Хак «оборачивает» результат выполнения {custom'а в свой шаблон, название которого укажете в result="шаблон для кастома". Если его не укажете, то {custom выполнится как обычно. Можно продолжить использовать тег {custom в привычном режиме даже после установки хака. Параметр template="шаблон новости" используйте как хотите, хак его не касается.


Пример:
[result]
<h2>Новости по теме</h2>
<ul>{result}</ul>
[/result]

[not-result]новостей нет[/not-result]

Установка:
1. Открыть engine/modules/functions.php и найти:
if ( $custom_news ) create_cache( "news", $tpl->result['content'], $custom_cache_id, true );

Заменить на:
if ( preg_match( "#result=['\"](.+?)['\"]#i", $param_str, $match ) ) {
    if ( file_exists( TEMPLATE_DIR . '/' . $match[1] . '.tpl' ) ) {
        $result = file_get_contents( TEMPLATE_DIR . '/' . $match[1] . '.tpl' );
        $result = str_replace( '{result}', $tpl->result['content'], $result );
        $result = preg_replace( array( '#\\[result\\](.*?)\\[/result\\]#iusU', '#\\[not-result\\](.*?)\\[/not-result\\]#iusU' ), $custom_news ? array( '\1', '' ) : array( '', '\1' ), $result );

        $tpl->result['content'] = $result;
    }
}

create_cache( "news", $tpl->result['content'], $custom_cache_id, true );

2. Теперь можно использовать параметр result="название_шаблона" в {custom...}. Для этого в нужное место шаблона добавить, например:
{custom category="20" limit="100" result="customs/one"}

Готово!
 
Автор: iCooLER
Источник
Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.