Skip to content

Instantly share code, notes, and snippets.

@FlYos
Last active July 22, 2016 13:03
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save FlYos/230f22f83a55462ce933 to your computer and use it in GitHub Desktop.
Save FlYos/230f22f83a55462ce933 to your computer and use it in GitHub Desktop.
Load Magento CMS page in popin with Ajax request

Description

This module allows you to change the template pages cms backoffice defined by a particular template when we load the page through an ajax request

How to us

Create this directory structure in local pool : Webaki

  • etc -- config.xml
  • Model -- Observer.php

and copy this following code.

For more information check my blog article (in french)

<?php
echo $this->getChildHtml('content')
?>
<?xml version="1.0"?>
<config>
<modules>
<Webaki_Popin>
<version>0.1</version>
</Webaki_Popin>
</modules>
<global>
<models>
<webaki_popin>
<class>Webaki_Popin_Model</class>
</webaki_popin>
</models>
<events>
<cms_page_render>
<observers>
<webaki_popin_page_render>
<type>singleton</type>
<class>Webaki_Popin_Model_Observer</class>
<method>pageRender</method>
</webaki_popin_page_render>
</observers>
</cms_page_render>
</events>
<page>
<layouts>
<ajax module="page" translate="label">
<label>Ajax</label>
<template>page/ajaxhtml.phtml</template>
<layout_handle>page_ajax</layout_handle>
</ajax>
</layouts>
</page>
</global>
</config>
<?php
class Webaki_Popin_Model_Observer
{
/**
* @param Varien_Event_Observer $observer
*/
public function pageRender($observer)
{
$page = $observer->getPage();
/** @var Mage_Core_Controller_Varien_Action $action */
$action = $observer->getControllerAction();
if($action->getRequest()->isXmlHttpRequest())
{
if ($page->getRootTemplate())
{
$inRange = Mage::app()->getLocale()->isStoreDateInInterval(null, $page->getCustomThemeFrom(), $page->getCustomThemeTo());
$handle = ($page->getCustomRootTemplate()
&& $page->getCustomRootTemplate() != 'empty'
&& $inRange) ? $page->getCustomRootTemplate() : $page->getRootTemplate();
$pageLayout = Mage::getSingleton('page/config')->getPageLayout($handle);
if($pageLayout)
$action->getLayout()->getUpdate()->removeHandle($pageLayout->getLayoutHandle());
}
$page->setRootTemplate('ajax');
$action->getLayout()->helper('page/layout')->applyHandle($page->getRootTemplate());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment