Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » как создать свой тег dle с условием ?

как создать свой тег dle с условием ?


     01.10.2020    dle    Все вопросы » Общие вопросы по PHP    105

вопрос
вот например [text] тут какойто текст [/text]

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

Ответил: Sander


$tpl->set_block('#\[text\](.*?)\[/text\]#is', $val == 'site.ru' ? '\\1' : '');


Или так, более по дле-шному:
if ($val == 'site.ru') {
  $tpl->set('[text]', '');
  $tpl->set('[/text]', '');
} else {
  $tpl->set_block('#\[text\].*?\[/text\]#is', '');
}

2 комментария

serg
Юзер

serg - 1 октября 2020 15:21 -

и еще ворос можите на примере показать
как получить с тега данные
например
[site=bbbb]sadad[/site]
чтобы получить bbbb как переменную. спасибо просьба скинуть кошилек в личку.

спасибо большое. а где то можно более подробно почитать про шаблонизатор dle ?

dj-avtosh
PHP-developer

dj-avtosh - 1 октября 2020 15:50 -

Что бы раз и навсегда закрыть вопрос, подготовил такой итоговый метод, который можно однажды создать и больше не страдать, а юзать его.

/**
 * Set DLE templates block by condition
 * 
 * @param string $blockName - tpl block name
 * @param bool $bool - condition
 * 
 * @author Oleg (a.k.a. Sander) <[email protected]>
 * @author Elkhan I. Isaev <[email protected]>
 */

function setDleConditionBlock( $blockName = null, $bool = null )
{
    
    if (empty($blockName)) return false;
    
    return $tpl->set_block('#\[' . $blockName . '\](.*?)\[/' . $blockName . '\]#is', true === $bool ? '\\1' : '');

}

setDleConditionBlock('text', $val == 'site.ru');

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх