Перейти к публикации

Рекомендованные сообщения

Проблема

Здравствуйте, столкнулся с проблемой при написании шаблона в dle версии 9.5.

Судя по документации:

[aviable="userinfo|register|main"] ... [/aviable]
Я могу перечислять нужные мне модули с помощью спец-тега [aviable.*]
[static=имя страницы] текст [/static][/code]


Здесь перечислять страницы вот так [i][b]userinfo|register|main[/b][/i] не могу.



[size=5][b]Решение[/b][/size]

1. Открываем [b]templates.class.php[/b]

2. Находим внутри функции [b]load_template[/b] и функции [b]sub_load_template [/b]( вставлять будем в обе функции )

[code]$this->template = file_get_contents( $this->dir . DIRECTORY_SEPARATOR . $tpl_name );[/code]
Вставляем после этих строк вот этот код
[code]if (strpos ( $this->template, "[static=" ) !== false) { $this->template = preg_replace ( "#\\[static=(.+?)\\](.*?)\\[/static\\]#ies", "\$this->check_static('\\1', '\\2')", $this->template ); } if (strpos ( $this->template, "[not-static=" ) !== false) { $this->template = preg_replace ( "#\\[not-static=(.+?)\\](.*?)\\[/not-static\\]#ies", "\$this->check_static('\\1', '\\2', false)", $this->template ); }[/code]
3. В сам класс вставляем функцию
[code] function check_static($aviable, $block, $action = true) { global $dle_module; $aviable = explode( '|', $aviable ); $block = str_replace( '\"', '"', $block ); if( $dle_module != 'static' ) return ( $action )? '' : $block; if( isset( $_GET['page'] ) && in_array( $_GET['page'], $aviable ) ) return ( $action )? $block : ''; return ''; } [/code]
4. Наслаждаемся работой такого кода
[CODE][static=gallery|static_page|test] текст [/static][/code]

[b][size=5]Заключение[/size][/b]

Код написан в стиле DLE, поэтому можно не бояться, что у кого-то пойдет пена изо рта.

Мы задели только 1 файл и было очень мало телодвижений для достижения цели.

Ссылка на сообщение
Поделиться на других сайтах

ReactorGate,

Вы только что изобрели велосипед. Стандартный тег поддерживает перечисление страниц, только делать это нужно через запятую.

[static=gallery,static_page,test] текст [/static]

И никаких правок и хаков для этого не нужно.

Ссылка на сообщение
Поделиться на других сайтах

celsoft,

Да действительно,

вот теперь мне интересно зачем дополнительный код был выделен в файл index.php когда template.class.php отвечает за построение шаблона?

Это похоже на хак со стороны самих разработчиков, чтобы обойти некие проблемы, которые по крайней мере мне не известны.

Я не хочу как то оскорбить вас, отношусь к вам со всем уважением.

Ссылка на сообщение
Поделиться на других сайтах

вот теперь мне интересно зачем дополнительный код был выделен в файл index.php когда template.class.php отвечает за построение шаблона?

Затем что это не универсальный тег, который используется во всех шаблонах. Этот тег разрешен к использованию только в двух файлах шаблона.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...