Обработка переменной в шаблоне "fullstory.tpl" не происходит, выводится как простой текст

написал для dle небольшой php модуль, в зависимости от названия вашего браузера выводится через переменную "{Viplayer}" в шаблон "fullstory.tpl" определенный видео-плеер. Но обработка переменной в шаблоне "fullstory.tpl" не происходит, выводится как простой текст. Вот сам модуль:

<?php
if(!defined('DATALIFEENGINE')){die("Hacking attempt!");}
$user_agent = $_SERVER["HTTP_USER_AGENT"];
$a = '<script src="/js/videoplayer/avp_default.js" type="text/javascript"></script><center><div id="playerjs1" style="width:100%"></div></center>
<script>var playerjs1 = new Playerjs({id:"playerjs1", poster:"images/pleer.jpg",file:"video/';
$b = '"});</script>';
if (strpos($user_agent, "Firefox") !== false) $c = "$a$p$b";
else $c = "0";
$tpl->load_template("fullstory.tpl");
$tpl->set('{Viplayer}', $c);
?>

При добавлении в модуль две строчки:

$tpl->compile( 'content' );
$tpl->clear();

Страница вообще не загружается и выводится ошибка: 504 Gateway Time-out.

Подключение php модуля производится в шаблоне "fullstory.tpl":

{include file="engine/modules/Viplayer/Viplayer.php?p=[xfvalue_pl1]"}

Помогите пожалуйста исправить ошибку...


Ответы (1 шт):

Автор решения: Vladimir Gonchar

Если Вы хотите использовать {include} в шаблоне, то Ваш модуль должен выводить данные через echo. То есть:

$tpl->load_template("fullstory.tpl");
$tpl->set('{Viplayer}', $c);

Заменяется на

echo $c;

Более правильным вариантом будет имлементирвоать Ваш модуль в модуль новостей DLE через плагины. Для этого в файл /engine/modules/show.full.php (именно через функционал плагинов в админке!) после строки 168 (else $tpl->load_template( 'fullstory.tpl' );) добавить Ваш код:

$user_agent = $_SERVER["HTTP_USER_AGENT"];
$a = '<script src="/js/videoplayer/avp_default.js" type="text/javascript"></script><center><div id="playerjs1" style="width:100%"></div></center><script>var playerjs1 = new Playerjs({id:"playerjs1", poster:"images/pleer.jpg",file:"video/';
$b = '"});</script>';
if (strpos($user_agent, "Firefox") !== false) $c = "$a$p$b";
else $c = "0";
$tpl->set('{Viplayer}', $c);

В fullstory.tpl в таком случае используется только {Vipplayer}

Обратите внимание! Вы передаёте через GET-запрос параметр, но в коде не обрабатываете его.

→ Ссылка