• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Хак Условие {if}|{else}|{/if} в шаблоне

Статус
В этой теме нельзя размещать новые ответы.

AlexAntre

Bootstrapper
Регистрация
22 Ноя 2007
Сообщения
214
Реакции
45
Здесь на нулледе не нашел.
Данных хак позволяет добавить условие {if}|{else} в шаблон.
Можно работать с переменными активных модулей и самой DLE посредством редактирования шаблона.
Установка проста.
Открываем: \engine\classes\templates.class.php
Находим:
PHP:
        if (strpos ( $template, "[not-group=" ) !== false) {
            $template = preg_replace ( "#\\[not-group=(.+?)\\](.*?)\\[/not-group\\]#ies", "\$this->check_group('\\1', '\\2', false)", $template );
        }
Ниже вставляем:
PHP:
        if (strpos ( $this->template, "{if " ) !== false) {
        $this->template = preg_replace ( "#\\{if (.+?)\\}(.*?)\\{/if\\}#ies", "\$this->check_else('\\1', '\\2', false)", $this->template );
        }
Находим:
PHP:
function get_real_time() {
Выше вставляем:
PHP:
    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}
Версия DLE 8.5. В шаблон main.tpl вставил условие, но не работает. Просто так и выводит:
{if $is_logged}
Вы пользователь!
{else}
Вы гость
{/if}

Не подскажите в чем дело?

Еще вопрос: Как в шаблоне (main.tpl) вставить php-код?
 
Возможно ли подобный хак сделать для новостей?
Чтобы при публикации можно было определенный элемент для гостей и для пользователей показывать?

Например -
[user]Текст который видят пользователи которые авторизировались[/user]

[guest]Текст который видят гости сайта, которые не прошли авторизацию[/guest]
 
Возможно ли подобный хак сделать для новостей?
Чтобы при публикации можно было определенный элемент для гостей и для пользователей показывать?

Например -
[user]Текст который видят пользователи которые авторизировались[/user]

[guest]Текст который видят гости сайта, которые не прошли авторизацию[/guest]
смотря что вы хотите)
демонстрировать что нибудь стандартное можно через стандартное -
[group=X]текст[/group]
Вывод текста определенной группе пользователей. Где X это список ID через запятую группы пользователей.


Для просмотра ссылки Войди или Зарегистрируйся - причём тут смарти ?
ДЛЕ смарти не использует, а самым безопасным является вставка через {include file=""} см документацию
 
Сам отвечаю на свой вопрос: "Как в шаблоне (main.tpl) вставить php-код?"
1. Открыть index.php
2. Найти строку:
PHP:
echo $tpl->result['main'];
3. Заменить на :
PHP:
eval (' ?' . '>' . $tpl->result['main'] . '<' . '?php ');
4. Вставить php-код в main.tpl
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху