Подскажите по DLE: [aviable=main] и пагинация

12
maldivec
На сайте с 04.11.2008
Offline
160
4362

Собственно, с DLE особо дел не имел, но покупные сайты есть на этой системе.

Сейчас вот ковыряю шаблончик и есть там вывод информации только для главной страницы, реализовано это через

....

[aviable=main]

.... тут выводим чо надо

[/aviable]

....

Так вот - этот же блок выводиться и на страницах пагинации /page/2/, /page/3/, ..., /page/100500/ , а мне нужно чтобы он был только на главной и нигде больше.

Реально это запилить?

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#1

<?php

if ($_SERVER["REQUEST_URI"]=='/')

{

.... тут выводим чо надо

}

?>

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
ingmar
На сайте с 11.01.2009
Offline
111
#2

Есть хак, называется "Постраничный фильтр для тегов aviable и category в DLE".


Открыть файл /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) $this->template = preg_replace ( "#\\[page=(.+?)\\](.*?)\\[/page\\]#ies", "\$this->check_page('\\1', '\\2')", $this->template );

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

Далее просто указываем [page=1|2|5]ваш текст[/page] страницы в которых надо вывести.

https://white-master.ru/ (https://white-master.ru/) разработка продающих сайтов
maldivec
На сайте с 04.11.2008
Offline
160
#3
LEOnidUKG:
<?php
if ($_SERVER["REQUEST_URI"]=='/')
{
.... тут выводим чо надо
}
?>

Офигеть, ну спасибо. Это DLE.

---------- Добавлено 31.01.2012 в 10:29 ----------

ingmar, спасибо. Но что-то геморный способ какой-то...

За это ДЛЕ и не люблю. Хотя появилась идея вынести этот блок в модуль и подключать его через {include file="/engine/modules/....} а там уже php родненький.

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#4
Офигеть, ну спасибо. Это DLE

В index.php

Найти строчку:

echo $tpl->result['main'];

Заменить на:

eval (' ?' . '>' . $tpl->result['main'] . '<' . '?php ');

И наслаждаетесь полным PHP в шаблонах. Везде на форумах рекомендуют.

maldivec
На сайте с 04.11.2008
Offline
160
#5

LEOnidUKG, вооо, так бы сразу. Я натыкался на советы юзать php в дле только через подключение модуля. Сапу например все советуют так подключать, больше и не рылся.

Благодарю.

ingmar
На сайте с 11.01.2009
Offline
111
#6
LEOnidUKG:

И наслаждаетесь полным PHP в шаблонах. Везде на форумах рекомендуют.

И получаем +1 к "Силе духа" школо-хакера.

спасибо. Но что-то геморный способ какой-то...

"Геммор", как вы выразились всего на минуту работы. В итоге получаем:

- вывод информации на указанных страницах навигации

- скрытие информации на указанных страницах навигации

- работа совместно с тегами aviable= и category=

По мне так более изящней, чем разрешать выполнение php сценариев в tpl-ках.

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#7
ingmar:
И получаем +1 к "Силе духа" школо-хакера.

Ну давайте-давайте расскажите нам КАК удалённо можно запихать в шаблон PHP скрипт в DLE.

Только без теорий! А прямо по пунктам как это сделать.

ingmar
На сайте с 11.01.2009
Offline
111
#8
LEOnidUKG:
Ну давайте-давайте расскажите нам КАК удалённо можно запихать в шаблон PHP скрипт в DLE.
Только без теорий! А прямо по пунктам как это сделать.

Давайте без всяких там "давайте". Я ничем вроде Вам конкретно не обязан. Есть ситуация - злоумышленник получает доступ к админ-панели, как не важно, в привате того же античата думаю найдутся способы это сделать, а в старых версиях скрипта и пабликом можно воспользоваться. Далее нам нужно залить шелл, через стандартный загрузчик файлов не получится, ибо в этих папках запрещено выполнять php файлы, а тут вдруг оказывается, что ленивый админ разрешил вставить сценарий шелла прямо в шаблон сайта, как-то так.

p.s Ни на что не претендую, возможно я глупый параноик и Вы правы.

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#9
Есть ситуация - злоумышленник получает доступ к админ-панели

Дальше читать нет смысла.

ingmar
На сайте с 11.01.2009
Offline
111
#10
LEOnidUKG:
Дальше читать нет смысла.

Ну да, как ведь это возможно, куки не воруют, пароли не подбирают, ссылки на фишинговые страницы не кидаются, а самое главное все админы обновляются до актуальных версий, особенно те, которые пишут в топике "с dle не работал раньше, сайт купил". А гаранты гарантируют адекватность своих высказываний. Дальше беседовать нет смысла.;)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий