ReactorGate 3 Опубликовано: 24 апреля 2013 Рассказать Опубликовано: 24 апреля 2013 Проблема Здравствуйте, столкнулся с проблемой при написании шаблона в 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 файл и было очень мало телодвижений для достижения цели. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 077 Опубликовано: 24 апреля 2013 Рассказать Опубликовано: 24 апреля 2013 ReactorGate, Вы только что изобрели велосипед. Стандартный тег поддерживает перечисление страниц, только делать это нужно через запятую. [static=gallery,static_page,test] текст [/static] И никаких правок и хаков для этого не нужно. Цитата Ссылка на сообщение Поделиться на других сайтах
ReactorGate 3 Опубликовано: 24 апреля 2013 Рассказать Опубликовано: 24 апреля 2013 Автор celsoft, Да действительно, вот теперь мне интересно зачем дополнительный код был выделен в файл index.php когда template.class.php отвечает за построение шаблона? Это похоже на хак со стороны самих разработчиков, чтобы обойти некие проблемы, которые по крайней мере мне не известны. Я не хочу как то оскорбить вас, отношусь к вам со всем уважением. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 077 Опубликовано: 24 апреля 2013 Рассказать Опубликовано: 24 апреля 2013 вот теперь мне интересно зачем дополнительный код был выделен в файл index.php когда template.class.php отвечает за построение шаблона? Затем что это не универсальный тег, который используется во всех шаблонах. Этот тег разрешен к использованию только в двух файлах шаблона. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.