Тема: Добавляем поддержку тегов [page-count=x] и [not-page-count=x] в DLE

И снова здравствуйте, друзья.

Сегодня у меня вдруг возникла потребность на одном из сайтов воспользоваться тегами [page-count=x] и [not-page-count=x], но вот беда, DLE 9.5 (соответственно, и более ранние) не поддерживают данные теги. Но обновляться лень, а лень, как известно, двигатель всего недвижимого smile Решил добавить поддержку этих тегов самостоятельно.

Ниже мануал, который должен подойти ко всем версиям DLE.

Открываем файл: /engine/classes/templates.class.php

Находим:

        if (strpos ( $this->template, "[not-group=" ) !== false) {
            $this->template = preg_replace ( "#\\[not-group=(.+?)\\](.*?)\\[/not-group\\]#ies", "\$this->check_group('\\1', '\\2', false)", $this->template );
        }
        
        if (strpos ( $this->template, "[group=" ) !== false) {
            $this->template = preg_replace ( "#\\[group=(.+?)\\](.*?)\\[/group\\]#ies", "\$this->check_group('\\1', '\\2')", $this->template );
        }

Добавляем ниже:

        if (strpos ( $this->template, "[page-count=" ) !== false) {
            $this->template = preg_replace ( "#\\[page-count=(.+?)\\](.*?)\\[/page-count\\]#ies", "\$this->check_page('\\1', '\\2')", $this->template );
        }


        if (strpos ( $this->template, "[not-page-count=" ) !== false) {
            $this->template = preg_replace ( "#\\[not-page-count=(.+?)\\](.*?)\\[/not-page-count\\]#ies", "\$this->check_page('\\1', '\\2', false)", $this->template );
        }

Находим:

        if (strpos ( $template, "[not-group=" ) !== false) {
            $template = preg_replace ( "#\\[not-group=(.+?)\\](.*?)\\[/not-group\\]#ies", "\$this->check_group('\\1', '\\2', false)", $template );
        }
        
        if (strpos ( $template, "[group=" ) !== false) {
            $template = preg_replace ( "#\\[group=(.+?)\\](.*?)\\[/group\\]#ies", "\$this->check_group('\\1', '\\2')", $template );
        }

Добавляем ниже:

        if (strpos ( $template, "[page-count=" ) !== false) {
            $template = preg_replace ( "#\\[page-count=(.+?)\\](.*?)\\[/page-count\\]#ies", "\$this->check_page('\\1', '\\2')", $template );
        }


        if (strpos ( $template, "[not-page-count=" ) !== false) {
            $template = preg_replace ( "#\\[not-page-count=(.+?)\\](.*?)\\[/not-page-count\\]#ies", "\$this->check_page('\\1', '\\2', false)", $template );
        }

Находим:

    function check_group($groups, $block, $action = true) {
        global $member_id;
        
        $groups = explode( ',', $groups );
        
        if( $action ) {
            
            if( ! in_array( $member_id['user_group'], $groups ) ) return "";
        
        } else {
            
            if( in_array( $member_id['user_group'], $groups ) ) return "";
        
        }
        
        $block = str_replace( '\"', '"', $block );
        
        return $block;
    
    }

Добавляем ниже:

    function check_page($pages, $block, $action = true) {
        
        $pages = explode( ',', $pages );
        $page = intval($_GET['cstart']);

        if ( $page < 1 ) $page = 1;
        
        if( $action ) {
            
            if( !in_array( $page, $pages ) ) return "";
        
        } else {
            
            if( in_array( $page, $pages ) ) return "";
        
        }
        
        $block = str_replace( '\"', '"', $block );
        
        return $block;
    
    }

Вот и все - пользуйтесь на здоровье!

2

Re: Добавляем поддержку тегов [page-count=x] и [not-page-count=x] в DLE

Да )) Лень двигатель еще тот ))

Re: Добавляем поддержку тегов [page-count=x] и [not-page-count=x] в DLE

АлаичЪ, подскажите, а на 7.5 возможно сделать поддержку данного тега? Просмотрел файл templates.class.php, он там маленький совсем и нет практически ничего из выше перечисленного.

Re: Добавляем поддержку тегов [page-count=x] и [not-page-count=x] в DLE

mtrs, Не знаю, у меня нет 7.5, проверить негде. Но можно взять файлы 7.5 и более поздних версий и сравнить и попытаться сделать по аналогии.

Re: Добавляем поддержку тегов [page-count=x] и [not-page-count=x] в DLE

Вопрос по тэгам -
а почему они индексируются в таком виде http://***/tags/%ED%EE%E2%EE%F1%F2%E8/
кодировка 1251
это, наверное неправильно с тзр поисковых систем?

извиняюсь, если ошибся темой

Re: Добавляем поддержку тегов [page-count=x] и [not-page-count=x] в DLE

27 пишет:

извиняюсь, если ошибся темой

Все верно - ошибся темой! Индексируются так потому, что русский язык именно так и выглядит в url.

Re: Добавляем поддержку тегов [page-count=x] и [not-page-count=x] в DLE

понял. А то уж думал про utf-8 )))
Спасибо!!!!

С Новым годом!

8

Re: Добавляем поддержку тегов [page-count=x] и [not-page-count=x] в DLE

А для чего нужны эти теги, не совсем понятно.

Re: Добавляем поддержку тегов [page-count=x] и [not-page-count=x] в DLE

remont63, Ну если не понятно - значит не нужны. Это самый логичный ответ! Или можно почитать мануалы от версии DLE 9.7, там все написано подробно.

10

Re: Добавляем поддержку тегов [page-count=x] и [not-page-count=x] в DLE

Попробовал этот хак на DLE 8.3 и выдаёт ошибку. Кто-нибудь пробовал сделать поддержку [not-page-count=x] в 8.3 версии?

11

Re: Добавляем поддержку тегов [page-count=x] и [not-page-count=x] в DLE

Крутить можно к чему угодно, может требуется пара правок, а в целом что за ошибки вылезли?

12 (17.03.2015 02:14 отредактировано Salader)

Re: Добавляем поддержку тегов [page-count=x] и [not-page-count=x] в DLE

В общем работает теперь тег [not-page-count] на DLE 8.3.
Я попытался убрать вывод рекламы с морды сайта, то есть со страницы 1 [not-page-count=1]. Однако реклама пропала и в полных новостх. Таким образом этот тег убирает показ не только на нужной странице, но и в полных новостях.
Не подскажите, как сделать чтобы не показывалось только на 1 странице main?