Логика доработки:
В вайле который отдает данные через ajax, есть такая строка:
$html = $smarty->fetch('com_clubs_view_photo.tpl'); $smarty->assign('html', $html);
с помощью:
$('#pop').html({$html});
$html = $smarty->fetch('com_clubs_view_photo.tpl'); $smarty->assign('html', $html);
$('#pop').html({$html});
{literal} ... $('#pop').html({/literal}{$html}{literal}); ... {/literal} Внутри тегов {literal}{/literal} smarty не подставляет значения переменных.
Такой вариант выбран для того чтобы открыть основной шаблон (со списком фотографий в клубе) и всплывающим окном (с помощью JS создаем новый объект div, с затемнением и прочими плюшками) вывести другой шаблон с отображением самой фотографии (функционал можно понять на примере VK или FB),echo в файле с кодом и реализуйте там же шаблон.
$smarty = $inCore->initSmarty('components', 'com_clubs_view_photo.tpl'); $smarty->assign('club', $club); $smarty->assign('photo', $photo); $smarty->assign('is_admin', $is_admin); $smarty->assign('is_moder', $is_moder); $smarty->assign('is_author', $is_author); $smarty->display('com_clubs_view_photo.tpl');
$('#pop').html('{/literal}{$html}{literal}');
Всё правильно подозреваете…
JS работает с «чистым» html…
В самой системе множество примеров, реализации всплывающих окон на ajax ( nyromodal.js, common.js и в js-файлах компонентов)…
Smith, по документации fetch() и display() подобны, за исключением того, что fetch() может присваивать вывод переменной, как в вашем случае. Можете попробовать ещё вот так(в системе обычно так используют):
И затем уже передаете $html в другой шаблон. Предварительно не забудьте все переменные в первом шаблоне проинициализировать нужными значениями.
$smarty = $inCore->initSmarty('components', 'com_clubs_view_photo.tpl'); $smarty->assign('club', $club); $smarty->assign('photo', $photo); $smarty->assign('is_admin', $is_admin); $smarty->assign('is_moder', $is_moder); $smarty->assign('is_author', $is_author); $smarty->display('com_clubs_view_photo.tpl');
Да ещё, пропустил в первом чтении, разве не так должно быть?
$html обернут в кавычки.
$('#pop').html('{/literal}{$html}{literal}');
Надеюсь, я правильно понял задачу?
$('#pop').html('тут_очень_длинный_html_код');
<div id="pop" style="display:none;"> {include file="com_clubs_view_photo.tpl"} </div>
$('#pop').show();
Согласен, сложно судить когда мало информации.По обрывкам кода который вы приводите сложно понять чего вы пытаетесь достичь…
{if $html} ............ ............ $('#pop').html('{literal}{$html}{/literal}'); $('#pop').fade........ ............ ............ {/if}
{if $html} хтмл {literal} яваскрипт ............ ............ $('#pop').html('{/literal}{$html}{literal}'); $('#pop').fade........ ............ ............ яваскрипт {/literal} хтмл {/if}