Вы правы, и это правильный и используемый подход для сайтов с несколькими темами. Существует несколько дополнительных (малоизвестных, редко используемых) опций, которые можно использовать для обновлений макета, которые применяются к различным областям хранения: дескриптор магазина и дескриптор темы.
Из суперкласса контроллера действий 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' и конфигурацией темы пакета 'default', 'German' theme, следующие дескрипторы будут применяться почти ко всем представлениям, так как большинство представлений используют их:
<STORE_deutsch>
<THEME_frontend_default_german>
При реализации эти дескрипторы могут использоваться практически так же, как <default />
.