Тема: Добавляем поддержку тегов [page-count=x] и [not-page-count=x] в DLE
И снова здравствуйте, друзья.
Сегодня у меня вдруг возникла потребность на одном из сайтов воспользоваться тегами [page-count=x] и [not-page-count=x], но вот беда, DLE 9.5 (соответственно, и более ранние) не поддерживают данные теги. Но обновляться лень, а лень, как известно, двигатель всего недвижимого Решил добавить поддержку этих тегов самостоятельно.
Ниже мануал, который должен подойти ко всем версиям 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;
}
Вот и все - пользуйтесь на здоровье!