Search code examples
phpfancyboxsmartyprestashop

How do i open a Prestashop 1.6.1.x Back office controller in a fancybox?


I'm developing a Prestashop 1.6.1.x module that has a Back Office settings page. From this page I want to have a link to index.php?controller=AdminThemes and have this open in a modal/fancybox.

  1. How do i load fancybox js and css, so that i can use class="fancybox" on the link?
  2. How do I tokenize the link?
  3. Is it possible to link to this controller "naked", not including header, footer, and left menubar?

PS: I want to echo this out in PHP, not Smarty, but if someone would like to share both the php and the Smarty-way, I think it would be helpful for even more people.


Solution

  • Fancybox is automatically loaded on every admin page.

    Basically all you need to do is display a simple link in your page.

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

    and add this javascript

    (function ($) {
        $(document).ready(function () {
            $('.fancybox').fancybox({
                width: '90%',
                height: '90%',
                type: 'iframe',
                title: ''
            });
        });
    })(jQuery);
    

    $link->getAdminLink('AdminThemes')

    will generate a link to that page and by appending &liteDisplaying=1 you tell the controller to load only page content (without header, footer and menu).

    And in javascript you load that page as an iframe fancybox. It will automatically read the href from anchor.

    Please don't echo out content with PHP. You have MVC structure for a reason.