Постраничный фильтр by Sander

Этот хак позволяет скрывать информацию в шаблонах на определенных страницах. Работает по аналогии с [aviable= и [category=, но основывается на страницах навигации.Этот хак позволяет скрывать информацию в шаблонах на определенных страницах. Работает по аналогии с [aviable= и [category=, но основывается на страницах навигации.

вывод информации на указанных страницах навигации
[not-page=x]…[/not-page]
вывод информации на всех страницах навигации кроме указанных
где x:
1|3|5|6|7|20 — перечисляем номера страниц;
1-50 — указываем диапазон страниц;

Например если вы хотите чтобы информация выводилась только на 5й странице пишем:

Чтобы выводилась только на главной, везде кроме первых 3 страниц:
[aviable=main][not-page=1-3]тут выводимый текст[/not-page][/aviable]

Установка:

Открыть файл /engine/classes/templates.class.php
Найти строку:
        $this->template = file_get_contents( $this->dir . DIRECTORY_SEPARATOR . $tpl_name );

После нее вставить:
        if (strpos ( $this->template, «[page=» ) !== false) $this->template = preg_replace ( «#\[page=(.+?)\](.*?)\[/page\]#ies», «$this->check_page(‘\1’, ‘\2’)», $this->template );
        if (strpos ( $this->template, «[not-page=» ) !== false) $this->template = preg_replace ( «#\[not-page=(.+?)\](.*?)\[/not-page\]#ies», «$this->check_page(‘\1’, ‘\2’, false)», $this->template );

Найти строку:
        $template = file_get_contents( $this->dir . DIRECTORY_SEPARATOR . $tpl_name );

После нее вставить:
        if (strpos ( $template, «[page=» ) !== false) $template = preg_replace ( «#\[page=(.+?)\](.*?)\[/page\]#ies», «$this->check_page(‘\1’, ‘\2’)», $template );
        if (strpos ( $template, «[not-page=» ) !== false) $template = preg_replace ( «#\[not-page=(.+?)\](.*?)\[/not-page\]#ies», «$this->check_page(‘\1’, ‘\2’, false)», $template );

Найти строку:
    function check_module($aviable, $block, $action = true) {

ПЕРЕД ней вставить:
    function check_page($pages, $block, $action = true) {
        $cstart = intval($_GET[‘cstart’]);
        if($cstart<1) $cstart=1;
        if(strpos($pages, «-«) !== false){
            $pages_arr = explode( ‘-‘, $pages );
            $pages = array();
            for($i=$pages_arr[0];$i<=$pages_arr[1];$i++) $pages[] = $i;
        }else $pages = explode( ‘|’, $pages );
        $block = str_replace( ‘»‘, ‘»‘, $block );
        if( $action ) {
            if( ! (in_array( $cstart, $pages )) ) return «»;
            else return $block;
        } else {
            if( (in_array( $cstart, $pages )) ) return «»;
            else return $block;
        }
    }

Версия DLE: старше 7.5

На случай, если всеядный парсер съел слеши или кавычки:

Прикреплённые файлы:
Файл: pages.rar
Размер: [728 b] (забрали: 3 раз)