Это хорошо вписывается в что-то (самостоятельная ссылка), над которой я работал.
Вы не можете делать то, что хотите, без переписывания класса, чтобы изменить поведениеifconfig
.Вот код, который реализует функцию ifconfig
.
File: app/code/core/Mage/Core/Model/Layout.php
protected function _generateAction($node, $parent)
{
if (isset($node['ifconfig']) && ($configPath = (string)$node['ifconfig'])) {
if (!Mage::getStoreConfigFlag($configPath)) {
return $this;
}
}
Если обнаружено присутствие ifconfig и значение config возвращает true, метод действия вызываться не будет.Вы можете переписать _generateAction
и реализовать свое собственное условное выражение, но тогда на вас ложится стандартное бремя поддержки переписывания.
Лучше было бы использовать вспомогательный метод в параметре action.Примерно так
<action method="setTemplate">
<template helper="mymodule/myhelper/switchTemplateIf"/>
</action>
вызовет setTemplate с результатами вызова
Mage::helper('mymodule/myhelper')->switchTemplateIf();
Реализуйте свою собственную логику в switchTemplateIf
, которая либо сохраняет шаблон, либо изменяет его, и вы 'будет хорошо идти