I am workin on a slider block Magento, and I am trying to genreate and update my Layout from the Observer :
Event: controller_action_layout_load_before
This my Observer Method :
$myXml="<".$page.">";
$myXml.='<reference name="'.$posH.'">';
$myXml.='<block type="sliderboard/slider" name="sliderboard" '.$posV.'="-" template="sliderboard/myview.phtml"/>';
$myXml.='</reference>';
$myXml.="</".$page.">";
$layout = $observer->getEvent()->getLayout();
//$layout=Mage::getSingleton('core/layout');
//Zend_Debug::dump($myXml); die();
$layout->getUpdate()->addUpdate($myXml);
$layout->getUpdate()->load();
$layout->generateXml();
$layout->generateBlocks();
the fact is, this is what i get from the "$myXML" variable :
<cms_page>
<reference name="content">
<block type="sliderboard/slider" name="sliderboard" after="-" template="sliderboard/myview.phtml"/>
</reference>
</cms_page>
And It doesn't work !! but whene I have tried to copy/past this xml in my layout it works ! the Xml code is correct!
I Need Help
Thanks !
$layout->getUpdate()->addUpdate($myXml);
addUpdate() don't work with "Actions" so we can only put this part of the layout :
<reference name="content">
<block type="myblock/block" name="sliderboard" after="-" template="mytemp/tmplate.phtml"/>
</reference>
And to choose between (cms, category and product) we use :
$action = $observer->getEvent()->getAction();
$fullActionName = $action->getFullActionName();
We compare $fullActionName to : cms_index_index / catalog_category_view /catalog_product_view
And if it equal tu what we need we contunu to :
$page="cms_index_index";
switch ($slider->getSldPage()){
case 'product': $page="catalog_product_view";
break;
case 'category': $page="catalog_category_view";
break;
}
$myXml.='<reference name="'.$posH.'">';
$myXml.='<block type="sliderboard/slider" name="sliderboard" '.$posV.'="-" template="sliderboard/myview.phtml"/>';
$myXml.='</reference>';
$action = $observer->getEvent()->getAction();
$fullActionName = $action->getFullActionName();
$layout = $observer->getEvent()->getLayout();
if ($fullActionName==$page)
{
$layout->getUpdate()->addUpdate($myXml);
$layout->generateXml();
}
Hope this will help:)
Now I'm trying to choose what category and what product I'll display in, if you have an idea.