/** * Changing path for patched layouts */ public function getLayoutFilename($file, array $params = array()) { $filename = parent::getLayoutFilename($file, $params); $filenameNew = str_replace(Mage::getBaseDir('app'), Mage::getBaseDir('var') . DS . 'ait_patch', $filename); if (file_exists($filenameNew)) { $filename = $filenameNew; } else { $filenameNew = str_replace(DS . 'base' . DS, DS . 'default' . DS, $filenameNew); if (file_exists($filenameNew)) { $filename = $filenameNew; } } return $filename; }
/** * Return list of files in layout * * @param Mage_Core_Model_Design_Package $designPackage * @param string $area * @param string $package * @param string $theme * @param string $storeId * @return string[] */ public function getDesignLayoutFiles($designPackage, $area, $package, $theme, $storeId) { $layoutUpdates = $this->getConfig()->getNode(sprintf('%s/layout/updates', $area)); $nodeFiles = array(); if ($layoutUpdates) { Mage::dispatchEvent('core_layout_update_updates_get_after', array('updates' => $layoutUpdates)); $nodeFiles = $layoutUpdates->asArray(); } $themeUpdatePath = sprintf('%s/%s/%s/layout/updates', $area, $package, $theme); // Reproduce core functionality for theme based updates for 1.9.x only if ($this->getDesignConfig() && ($themeUpdates = $this->getDesignConfig()->getNode($themeUpdatePath)) && is_array($themeUpdates->asArray())) { $nodeFiles = array_merge($nodeFiles, array_values($themeUpdates->asArray())); } $fileNames = array(); foreach ($nodeFiles as $file) { if (!empty($file['file'])) { $module = !empty($file['@']['module']) ? $file['@']['module'] : false; if ($module && Mage::getStoreConfigFlag(sprintf('advanced/modules_disable_output/%s', $module), $storeId)) { continue; } $fileNames[] = $file['file']; } } $fileNames[] = 'local.xml'; $files = array(); foreach ($fileNames as $fileName) { $files[] = $designPackage->getLayoutFilename($fileName, array('_area' => $area, '_package' => $package, '_theme' => $theme)); } return $files; }