Поиск по сайту
Вход на сайт
Обратите внимание
Тэги
cs шаблоны для dle  dle cs  dle forum  dle grabber  dle rss  dle shop  dle модуль онлайн  dle сборки  dle скачать  dle теги  dle шаблон порно  dle шаблон футбол  dle шаблоны lineage  dle шаблоны туризм  joomla шаблоны dle  PingationMod  stream grabber  Webmoney  админу  аниме шаблон для dle  Вводим  Версия  галерея dle  граббер  граббер dle  граббер все версии  игровой шаблон dle  Изменения  картинках  которых  Магазин  меню для dle  модуль  модуль DLE онлайн  модуль доска объявлений  модуль карта сайта  модуль мониторинга dle  модуль переходы  музыкальный шаблон dle  Немного  новости  новостной dle шаблон  платные шаблоны dle  потребности  прямая  рипы dle  Скачать  скачать сборку dle  софт шаблон dle  Установка  уязвимости dle  шаблон dle кино  шаблон для dle forum  шаблоны CSR  шаблоны dle  шаблоны dle авто  шаблоны dle варез  шаблоны dle музыка  шаблоны dle спорт  шаблоны Test-Templates


Другие сайты о ДЛЕ
Создание сайтов на dle.
Архив сайта

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 или Вы хотите высказаться, то пройдите регистрацию или авторизируйтесь и оставляйте комментарии.
#10 написал: Rodimus (20 мая 2010 14:09)

Публикаций: 0
Комментариев: 2
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
#9 написал: Lion__ (17 мая 2010 20:14)

Публикаций: 41
Комментариев: 613
Rodimus,
есть, бери меньше кусок


--------------------
#8 написал: Rodimus (17 мая 2010 17:00)

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

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

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

Публикаций: 41
Комментариев: 613
davo,
не так вставил что-то


--------------------
#6 написал: davo (19 апреля 2010 20:34)

Публикаций: 2
Комментариев: 7
ну помогите
#5 написал: davo (18 апреля 2010 20:56)

Публикаций: 2
Комментариев: 7
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 выдаёт
#4 написал: Lion__ (18 апреля 2010 10:19)

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


{if $category==тут id}
Это фильмы онлайн!
{/if}


--------------------
#3 написал: davo (18 апреля 2010 09:54)

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

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

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

Вместо тут id поставь id категории


--------------------
#1 написал: davo (18 апреля 2010 08:18)

Публикаций: 2
Комментариев: 7
а как сделать чтобы под определённые категорий выводились надписи ?
Например категория фильм онлайн и только под ним выводится как смотреть фильм онлайн
Информация

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

Вверх