题
说包装中有两个主题:
- 基础(默认设置)
- 孩子(设置为主要主题)
两者都在布局文件夹中包含local.xml-仅将加载来自子主题的local.xml,因此基本local.xml中的任何CSS,JS或布局更新都不会加载。
不使用page.xml(因此允许与local.xml相同的功能,但使用继承),我将如何获得XML文件的基础文件和一个被调用的儿童文件?
这是否需要构建一个具有唯一目的的模块来添加可用的XML文件(例如:base-local.xml)?
解决方案
您是正确的,这是具有多个主题的网站的有效和使用的方法。还有一些其他(鲜为人知的,很少使用的)选项,可用于适用于不同商店范围的布局更新:商店句柄和主题句柄。
从动作控制器超类 Mage_Core_Controller_Varien_Action
(关联):
public function addActionLayoutHandles()
{
$update = $this->getLayout()->getUpdate();
// load store handle
$update->addHandle('STORE_'.Mage::app()->getStore()->getCode());
// load theme handle
$package = Mage::getSingleton('core/design_package');
$update->addHandle(
'THEME_'.$package->getArea().'_'.$package->getPackageName().'_'.$package->getTheme('layout')
);
// load action handle
$update->addHandle(strtolower($this->getFullActionName()));
return $this;
}
对于具有“ Deutsch”代码和“默认”软件包的主题配置的商店,“德语”主题几乎适用于几乎所有视图,因为大多数视图都使用它们:
<STORE_deutsch>
<THEME_frontend_default_german>
通过实施,这些手柄的使用方式与 <default />
.