Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Не работает конструкция include - include - custom, в чем может быть проблема?

Не работает конструкция include - include - custom, в чем может быть проблема?


     12.07.2019    dle, custom    Все вопросы » Общие вопросы    1130

вопрос
Здравствуйте, не работает {custom} в такой конструкции: main.tpl - {include} (боковая панель) - {include} (меню) - custom, просто выводится данный тэг, в чем может быть проблема? Или же DLE попросту не поддерживает конструкцию такого типа? Заранее спасибо.

Ответил: LazyDev


Открыть файл /engine/modules/main.php найти
$tpl->compile ( 'main' );
Ниже вставить
if (stripos($tpl->result['main'], '{custom') !== false) {
	$tpl->result['main'] = preg_replace_callback("#\\{custom(.+?)\\}#i", 'custom_print', $tpl->result['main']);
}

9 комментариев

dj-avtosh
PHP-developer

dj-avtosh - 12 июля 2019 19:54 -

Здравствуйте, покажите код.

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

ufh2
Юзер

ufh2 - 12 июля 2019 20:06 -


main.tpl
    {include file="module/main/sidebar.tpl"}
sidebar.tpl
   {include file="module/menu/menu.tpl"}
menu.tpl
    {custom category="1-100" template="module/custom/custom-item"}

Вот такая конструкция не работает попросту, выводит просто {custom}

dj-avtosh
PHP-developer

dj-avtosh - 12 июля 2019 20:14 -

в теории должно работать, на практике может не работать тег внутри вложенного
{include}

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

dj-avtosh
PHP-developer

dj-avtosh - 12 июля 2019 20:16 -

судя по коду в ядре я вижу, что внутри include не происходит compile, просто php include.

ob_start();
$tpl = new dle_template();
$tpl->dir = TEMPLATE_DIR;
			
include (DLEPlugins::Check($file_path."/".$file_name));
return ob_get_clean();

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

ufh2
Юзер

ufh2 - 12 июля 2019 20:20 -

В такой конструкции
main.tpl
    {include file="module/main/sidebar.tpl"}
sidebar.tpl
   код меню


{custom} работает, если идет еще вложенность через {include}, то уже нет

dj-avtosh
PHP-developer

dj-avtosh - 12 июля 2019 20:25 -

можно тот код сверху (из /engine/classes/templates.class.php) превратить в

$tpl = new dle_template();
$tpl->dir = TEMPLATE_DIR;
$tpl->load_template( $file_path."/".$file_name );
$tpl->compile( $file_path . "_" . $file_name );
return $tpl->result[$file_path . "_" . $file_name];


может и заработает тогда, не тестил.

https://elkhan.ru
По заказам пишем сюда: @Rud00y

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

ufh2
Юзер

ufh2 - 12 июля 2019 20:43 -

Если я правильно понял то

ob_start();
$tpl = new dle_template();
$tpl->dir = TEMPLATE_DIR;
			
include (DLEPlugins::Check($file_path."/".$file_name));
return ob_get_clean();


Заменить на

$tpl = new dle_template();
$tpl->dir = TEMPLATE_DIR;
$tpl->load_template( $file_path."/".$file_name );
$tpl->compile( $file_path . "_" . $file_name );
return $tpl->result[$file_path . "_" . $file_name];

Правильно? Если да, то попробовал, безрезультатно(

ufh2
Юзер

ufh2 - 13 июля 2019 16:32 -

Всем спасибо за помощь. Особенно большая благодарность LAZYDEV. Решение проблемы в ответе от LAZYDEV. Еще раз спасибо.

ufh2
Юзер

ufh2 - 13 июля 2019 20:31 -

Что не плодить вопрос (может и не правильно). В этой же конструкции не работают и тэги - [xfnotgiven_x][/xfnotgiven_x],[xfgiven_x][xfvalue_x][/xfgiven_x],

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

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

наверх