Включить .tpl после загрузки страницы - PullRequest
0 голосов
/ 12 февраля 2020

Здравствуйте, есть ли возможность загрузить TPL-файл после загрузки страницы?

что-то вроде:

function docReady(fn) {
// see if DOM is already available
    if (document.readyState === "complete" || document.readyState === "interactive") {
        // call on next available tick
        setTimeout(fn, 1);
    } else {
        document.addEventListener("DOMContentLoaded", fn);
    }
}       

docReady(function() {

   console.log("OK"); 
   {include file="modules/widgets/akj-select-menu/akj-select-menu.tpl" assign=akj_menu_content}

});

ЕГО не работает, потому что я не могу включить, например, smarty, но я просто не хочу показывать, что я нуждаюсь. Если это возможно в Smarty + JS

1 Ответ

0 голосов
/ 12 февраля 2020

Если ваша идея не связана с оптимизацией запроса для быстрой загрузки страницы (например, menu.tpl генерируется очень долго, и вы хотите загрузить его позже) - тогда: самый простой способ - это сделать как это:

function docReady(fn) {
// see if DOM is already available
    if (document.readyState === "complete" || document.readyState === "interactive") {
        // call on next available tick
        setTimeout(fn, 1);
    } else {
        document.addEventListener("DOMContentLoaded", fn);
    }
}       

docReady(function() {

   console.log("OK"); 
document.getElementById("akj_menu_content").style.display = "block";


});

<div id="akj_menu_content" style="display:none;">
{include file="modules/widgets/akj-select-menu/akj-select-menu.tpl" assign=akj_menu_content}
</div>

Но .. если это связано с оптимизацией запроса, то docReady() вы должны сделать запрос ajax, например www.example.com/my/menu/generator, где вы генерируете это меню в php ( fetch modules/widgets/akj-select-menu/akj-select-menu.tpl в Smarty и верните его как HTML, чтобы JS мог вставить его в <div id="akj_menu_content")

...