Php 如何在fancybox中打开Prestashop 1.6.1.x后台控制器?

Php 如何在fancybox中打开Prestashop 1.6.1.x后台控制器?,php,fancybox,smarty,prestashop,Php,Fancybox,Smarty,Prestashop,我正在开发一个具有后台设置页面的Prestashop 1.6.1.x模块。 从这个页面我想有一个到index.php?controller=AdminThemes的链接,并在modal/fancybox中打开它 如何加载fancybox js和css,以便在链接上使用class=“fancybox” 如何标记链接 是否可以链接到此控制器“裸”,不包括页眉、页脚和左菜单栏 PS:我想在PHP中重复这一点,而不是Smarty,但如果有人想同时分享PHP和Smarty方式,我认为这将对更多人有所帮助。

我正在开发一个具有后台设置页面的Prestashop 1.6.1.x模块。 从这个页面我想有一个到index.php?controller=AdminThemes的链接,并在modal/fancybox中打开它

  • 如何加载fancybox js和css,以便在链接上使用class=“fancybox”
  • 如何标记链接
  • 是否可以链接到此控制器“裸”,不包括页眉、页脚和左菜单栏

  • PS:我想在PHP中重复这一点,而不是Smarty,但如果有人想同时分享PHP和Smarty方式,我认为这将对更多人有所帮助。

    Fancybox会自动加载到每个管理页面上

    基本上你需要做的就是在你的页面上显示一个简单的链接

    <a class="fancybox" href="{$link->getAdminLink('AdminThemes')}&liteDisplaying=1">Link description</a>
    
    $link->getAdminLink('AdminThemes')


    将生成指向该页面的链接,并通过附加
    &litedinging=1
    通知控制器仅加载页面内容(不带页眉、页脚和菜单)

    在javascript中,您将该页面作为iframe fancybox加载。它将自动从锚点读取href


    请不要用PHP呼应内容。您使用MVC结构是有原因的。

    &liteDisplaying=1
    在大多数页面上工作得很好,但在模块上,页面是空白的。如果我查看html源代码,我会发现:
    在/home/fikennettbitkk/public_html/tpl2/tools/smarty/sysplugins/smarty_internal_templatebase.php(157):eval()'d第165行的代码
    关于
    &litedinging=1
    不适用于模块页面@drot的任何细节?我甚至尝试了prestashop 1.7在线后台演示。空白页的结果相同。@OnklMaps在加载模板之前,您可能必须在控制器中分配smarty变量<代码>$this->context->smarty->assign('link',$this->context->link)
    (function ($) {
        $(document).ready(function () {
            $('.fancybox').fancybox({
                width: '90%',
                height: '90%',
                type: 'iframe',
                title: ''
            });
        });
    })(jQuery);