Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Шаблоны (TPL) » Как заставить работать теги DLE в шаблоне модуля?

Как заставить работать теги DLE в шаблоне модуля?


     01.10.2024    include    Шаблоны (TPL), Модули, Хаки    299

вопрос
Добрый день!

Есть модуль, который выводит в полной новости (fullstory.tpl) доп. информацию, модуль подключается стандартным тегом DLE include file, шаблон оформления к модулю лежит в подпапке шаблона DLE (Default/modul/modul.tpl).

Проблема в том, что стандартные теги полной новости DLE в шаблоне модуля (modul.tpl) не работают, а требуется вывести в нем значения доп. полей новости. Можно ли как нибудь обойти это ограничение?

Ответил: Nnivd


Сделал строку подключения:
{include file="engine/modules/modul/modul.php?field1=[xfvalue_pole1]&field2=[xfvalue_pole2]"}

и в modul.php добавил:
$tmp = str_replace('{field1}', $field1, $tmp );
	$tmp = str_replace('{field2}', $field2, $tmp );

    if (!empty($field1)) {
        $tmp = preg_replace('/\[xfgiven_field1\](.*?)\[\/xfgiven_field1\]/is', '$1', $tmp);
    } else {
        $tmp = preg_replace('/\[xfgiven_field1\](.*?)\[\/xfgiven_field1\]/is', '', $tmp);
    }

    if (!empty($field2)) {
        $tmp = preg_replace('/\[xfgiven_field2\](.*?)\[\/xfgiven_field2\]/is', '$1', $tmp);
    } else {
        $tmp = preg_replace('/\[xfgiven_field2\](.*?)\[\/xfgiven_field2\]/is', '', $tmp);
    }

    if (empty($field1)) {
        $tmp = preg_replace('/\[xfnotgiven_field1\](.*?)\[\/xfnotgiven_field1\]/is', '$1', $tmp);
    } else {
        $tmp = preg_replace('/\[xfnotgiven_field1\](.*?)\[\/xfnotgiven_field1\]/is', '', $tmp);
    }

    if (empty($field2)) {
        $tmp = preg_replace('/\[xfnotgiven_field2\](.*?)\[\/xfnotgiven_field2\]/is', '$1', $tmp);
    } else {
        $tmp = preg_replace('/\[xfnotgiven_field2\](.*?)\[\/xfnotgiven_field2\]/is', '', $tmp);
    }


Теперь в modul.tpl доп. поля выводятся по тегам:
[xfgiven_field1]Поле 1 установлено: {field1}[/xfgiven_field1]
[xfgiven_field2]Поле 2 установлено: {field2}[/xfgiven_field2]
[xfnotgiven_field1]Поле 1 не установлено[/xfnotgiven_field1]
[xfnotgiven_field2]Поле 2 не установлено[/xfnotgiven_field2]

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

web102
Юзер

web102 - 2 октября 2024 08:09 -

Используйте дополнительные параметры в строке подключения модуля, а в модуле - переменные с этими значениями

Nnivd
Юзер

Nnivd - 7 октября 2024 00:11 -

Сделал строку подключения:
{include file="engine/modules/modul/modul.php?field1=[xfvalue_pole1]&field2=[xfvalue_pole2]"}

и в modul.php добавил:
$tmp = str_replace('{field1}', $field1, $tmp );
$tmp = str_replace('{field2}', $field2, $tmp );

Теперь в modul.tpl доп. поля выводятся по тегам {field1} и {field2}.

Как сейчас в шаблоне модуля использовать аналоги стандартных тегов DLE для доп. полей?:
[xfgiven_x] [xfvalue_x] [/xfgiven_x]
[xfnotgiven_X] [/xfnotgiven_X]

derebas
Юзер

derebas - 8 октября 2024 09:54 -

1. Либо продублируй логику обработки доп тегов в новом модуле
2. Либо подключи к новому модулю, модуль где эти теги уже обработаны, например
include_once (DLEPlugins::Check(ENGINE_DIR . '/modules/show.full.php'));

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

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

наверх