public function generateBlocks($parent = null) { if (empty($parent)) { $parent = $this->getNode(); } if (isset($parent['ifconfig']) && ($configPath = (string) $parent['ifconfig'])) { if (!Mage::getStoreConfigFlag($configPath)) { return; } } parent::generateBlocks($parent); }
/** * Create layout blocks hierarchy from layout xml configuration * * @param Mage_Core_Model_Layout_Element|null $parent */ public function generateBlocks($parent = null) { if ($parent instanceof Mage_Core_Model_Layout_Element) { // This prevents processing child blocks if the parent block fails a conditional check if (!$this->checkConditionals($parent)) { return; } // This is handled here so it catches 'block' and 'reference' elements $this->processOutputAttribute($parent); } parent::generateBlocks($parent); }
/** * @covers Mage_Core_Model_Layout::getAllBlocks * @covers Mage_Core_Model_Layout::generateBlocks * @covers Mage_Core_Model_Layout::getBlock */ public function testGenerateXmlAndBlocks() { $this->_model->generateXml(); /* Generate fixture file_put_contents(__DIR__ . '/_files/_layout_update.xml', $this->_model->getNode()->asNiceXml()); */ $this->assertXmlStringEqualsXmlFile(__DIR__ . '/_files/_layout_update.xml', $this->_model->getXmlString()); $this->assertEquals(array(), $this->_model->getAllBlocks()); $expectedBlocks = array('root', 'head', 'head.calendar', 'notifications', 'notification_baseurl', 'cache_notifications', 'notification_survey', 'notification_security', 'messages', 'index_notifications', 'index_notifications_copy'); $this->_model->generateBlocks(); $actualBlocks = $this->_model->getAllBlocks(); $this->assertEquals($expectedBlocks, array_keys($actualBlocks)); /** @var $block Mage_Adminhtml_Block_Page_Head */ $block = $this->_model->getBlock('head'); $this->assertEquals('Magento Admin', $block->getTitle()); $block = $this->_model->getBlock('head.calendar'); $this->assertSame($this->_model->getBlock('head'), $block->getParentBlock()); /** @var $block Mage_Core_Block_Template */ $block = $this->_model->getBlock('root'); $this->assertEquals('popup.phtml', $block->getTemplate()); }
public function generateBlocks($parent = null) { if (empty($parent)) { $parent = $this->getNode(); } if (isset($parent['ifconfig']) && ($configPath = (string) $parent['ifconfig'])) { /*echo $configPath . " " . Mage::getStoreConfigFlag($configPath); echo "<br />";*/ if (!Mage::getStoreConfigFlag($configPath)) { return; } } if (isset($parent['unlessconfig']) && ($configPath = (string) $parent['unlessconfig'])) { if (Mage::getStoreConfigFlag($configPath)) { return; } } parent::generateBlocks($parent); }
protected function _renderBlock() { $layout = new Mage_Core_Model_Layout($this->_definition['layout']); $layout->generateBlocks(); $block = $layout->getBlock($this->_definition['block_name']); if ($block) { $block->setProductIds($this->_getProductIds()); $collection = $block->getItemsCollection(); // set correct order if (is_object($collection)) { foreach ($this->_getProductIds() as $productId) { $item = $collection->getItemById($productId); $collection->removeItemByKey($productId); if ($item) { $collection->addItem($item); } } } $html = $block->toHtml(); } else { $html = self::EMPTY_VALUE; } return $html; }
/** * Creates block encoded in the marker for further processing. * * @return Mage_Core_Block_Abstract|null */ protected function _createBlock() { $args = $this->_blockArgs; $layout = new Mage_Core_Model_Layout($args['layout']); $layout->generateBlocks(); return $this->_block = $layout->getBlock($args['name']); }
/** * @param Mage_Core_Model_Layout $layout * @param array $dynamicBlocks * @return Mage_Core_Model_Layout */ protected function _prepareLayout(Mage_Core_Model_Layout $layout, array $dynamicBlocks) { $xml = simplexml_load_string($layout->getXmlString(), Lesti_Fpc_Helper_Data::LAYOUT_ELEMENT_CLASS); $cleanXml = simplexml_load_string('<layout/>', Lesti_Fpc_Helper_Data::LAYOUT_ELEMENT_CLASS); $types = array('block', 'reference', 'action'); foreach ($dynamicBlocks as $blockName) { foreach ($types as $type) { $xPath = $xml->xpath("//" . $type . "[@name='" . $blockName . "']"); foreach ($xPath as $child) { $cleanXml->appendChild($child); } } } $layout->setXml($cleanXml); $layout->generateBlocks(); return Mage::helper('fpc/block_messages')->initLayoutMessages($layout); }
/** * Generates block from layout instructions * * @param Mage_Core_Model_Layout_Element|null $parent * @return void */ public function generateBlocks($parent = null) { if ($parent !== null) { parent::generateBlocks($parent); return; } $this->getProcessor()->execute(ItemInterface::TYPE_LOAD); $this->getProcessor()->reset(); }
/** * Create layout blocks hierarchy from layout xml configuration * * @param Mage_Core_Layout_Element|null $parent * @param boolean $parentIsMain Render $parent first */ public function generateBlocks($parent = null, $parentIsMain = false) { // Generate parent for single block definitions if ($parentIsMain !== false && $parent && $parent->getName() === 'block') { $this->_generateBlock($parent, new Varien_Object()); } return parent::generateBlocks($parent); }