Поиск по сайту
Вход на сайт
Обратите внимание
Топ-новости
Архив сайта
Апрель 2016 (1)
Апрель 2014 (1)
Ноябрь 2013 (1)
Октябрь 2013 (1)
Май 2013 (2)
Апрель 2013 (8)
Партнеры

seo-monster.ru - сервис проверки доменов
хочешь такой же информер? Информер ТИЦ и PR

» » Хак для шаблонизатора. Добавление условия if-else

Хак для шаблонизатора. Добавление условия if-else

Хаки

Хак для шаблонизатора. Добавление условия if-else
Пример действия хака для шаблонизатора. Добавление условия if-else.


Данных хак позволяет добавить условие {if}|{else} в шаблон.

Сама идея пришла когда покупатели Dle Shop начали спрашивать как сделать так чтобы в одном случае отображалось, а в другом нет.

Отличие данного хака есть то что мы сможем работать с переменными активных модулей и самой Dle посредством редактирования шаблона.

Установка проста.
Открываем: engineclassestemplates.class.php
Находим:
        if (strpos ( $template, "[not-group=" ) !== false) {
            $template = preg_replace ( "#[not-group=(.+?)](.*?)[/not-group]#ies", "$this->check_group('1', '2', false)", $template );
        }

Ниже вставляем:
        if (strpos ( $this->template, "{if " ) !== false) {
        $this->template = preg_replace ( "#{if (.+?)}(.*?){/if}#ies", "$this->check_else('1', '2', false)", $this->template );
        }



Находим:
function get_real_time() {


Выше вставляем:
    function check_else($condition, $block)
    {
        global $GLOBALS;
        extract($GLOBALS, EXTR_SKIP, "");
        if(is_array($matches=explode("{else}",$block))) {
            $block=$matches[0];
            $else=$matches[1];
        }
        if(eval(("return $condition;"))) return str_replace( '"', '"', $block );
        return str_replace( '"', '"', $else );
    }


Сохранём и радуемся)))

как этим пользоваться?
Нужны хоть общие понятия в языке php

Примеры:
Допустим нам надо сделать вывод зарегистрирован ли данный пользователь на сайте, но сделать это надо не в login.tpl, а, допустим, в main.tpl ну или в выводе короткой новости.
Делается это очень просто:
{if $is_logged}
Вы пользователь!
{else}
Вы гость
{/if}


Ну или сделать сообщение о просьбе зарегистрироваться:
{if !$is_logged}
Зарегистрируйтесь на сайте!
{/if}


Далее как вам позволяет фантазия)))
Всё, спасибо за внимание)
Автор Lion__

У вас не ставится dle модуль или dle шаблон работает не правильно? Задайте вопрос на нашем форуме по DLE(Datalife Engine CMS) и Вам обязательно помогут!



Если появились вопросы по поводу Хак для шаблонизатора. Добавление условия if-else или Вы хотите высказаться, то пройдите регистрацию или авторизируйтесь и оставляйте комментарии.
#1 написал: davo (18 апреля 2010 08:18)

Публикаций: 0
Комментариев: 0
а как сделать чтобы под определённые категорий выводились надписи ?
Например категория фильм онлайн и только под ним выводится как смотреть фильм онлайн
#2 написал: Lion__ (18 апреля 2010 09:19)

Публикаций: 0
Комментариев: 0
davo,
{if $cadegory==тут id}
Это фильмы онлайн!
{/if}

Вместо тут id поставь id категории
#3 написал: davo (18 апреля 2010 09:54)

Публикаций: 0
Комментариев: 0
Lion__,
СПС

что ты не получается
#4 написал: Lion__ (18 апреля 2010 10:19)

Публикаций: 0
Комментариев: 0
ой, это я букву перепутал:


{if $category==тут id}
Это фильмы онлайн!
{/if}
#5 написал: davo (18 апреля 2010 20:56)

Публикаций: 0
Комментариев: 0
Parse error: syntax error, unexpected ',' in /public_html/engine/classes/templates.cl
ass.php(56) : regexp code on line 1 Fatal error: preg_replace(): Failed evaluating code: ('', '', false) in /public_html/engine/classes/templates.cl
ass.php on line 56 выдаёт
#6 написал: davo (19 апреля 2010 20:34)

Публикаций: 0
Комментариев: 0
ну помогите
#7 написал: Lion__ (20 апреля 2010 07:16)

Публикаций: 0
Комментариев: 0
davo,
не так вставил что-то
#8 написал: Rodimus (17 мая 2010 17:00)

Публикаций: 0
Комментариев: 0
Lion, помогите пожалуйста!
ДЛЕ 8.0
Код вставил в \engine\classes\templates.class
2.php, потому как в
\engine\classes\templates.class
.php нет нужных строк, за/перед которыми добавлять.

Что-то не работает - просто выводит теги {if} и {/if}

Может кто знает в чем проблема?
#9 написал: Lion__ (17 мая 2010 20:14)

Публикаций: 0
Комментариев: 0
Rodimus,
есть, бери меньше кусок
#10 написал: Rodimus (20 мая 2010 14:09)

Публикаций: 0
Комментариев: 0
Lion, спасибо, помогло.

Для тех, у кого не запустилось - если у вас вместо одного единственного файла templates.class.php
есть
templates.class.php
и
templates.class2.php
то ищите другую сборку ДЛЕ... либо найдите такую, в которой этот файл один, замените ваши 2 на 1 этот.

Только забекапиться не забудьте вначале!

Еще 1 момент.
На этот код

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

выдало ошибку.
Пришлось слегка поредактировать -

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


И в самом шаблоне переменная для категорий не
$category
, а
$category_id
Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Вверх