2014-01-02 3 views
3

Я хочу указать несколько значений для ifconfig в макете xml.Magento - Можно ли указать несколько значений ifconfig?

<action method="setTemplate" ifconfig="mymodule/general/is_enabled"> 
    <template>mymodule/test.phtml</template> 
</action> 

Можно ли добавить два условия для одного действия?

ifconfig="mymodule/general/is_enabled" 
ifconfig="mymodule/frontend/can_show" 

Любые предложения были бы очень желанными.

+0

Нет, он имеет дело с логическим типом, однако вы можете сделать другим способом –

+0

У вас не может быть нескольких условий if. – oscprofessionals

ответ

4

Вы можете использовать вспомогательный метод в своем действии. Что-то вроде этого

<action method="setTemplate"> 
    <template helper="mymodule/myhelper/canShowIf"/> 
</action> 

позвонит setTemplate с результатами вызова

Mage::helper('mymodule/myhelper')->canShowIf(); 

И следующее в вашем модулей помощник по умолчанию:

public function canShowIf() 
{ 
    if($displayOnly = Mage::getStoreConfig('mymodule/general/is_enabled') == true) 

    // Do Something 

    }else if($displayOnly = Mage::getStoreConfig('mymodule/frontend/can_show') == true)   { 

    // Do Something Else 

    } 
    return $displayOnly; 
} 

Реализуйте пользовательскую логику в canShowIf.

+0

Это решение работает. Но когда функция возвращает false, добавляется пустой блок. Либо я хочу работать так же, как «ifconfig». –

+0

Очевидно, что у вас есть условия IF-ELSE и возвращаемые параметры по вашему желанию. Тем не менее вы можете вставить свой код здесь, чтобы я мог понять. – Slimshadddyyy

1

Определить функцию Helper (Data.php)

<reference name="root"> 
    <action method="setTemplate"> 
     <template helper="modulename/getNewLayoutupdate"/> 
    </action> 
    </reference> 

в вспомогательной функции вы можете загрузить шаблон условиями.

+0

Это решение работает. Но когда функция возвращает false, добавляется пустой блок. Либо я хочу работать так же, как «ifconfig». –

+0

хорошо, что зависит от вашей логики. что вы хотите делать с ложью? Какова ваша цель? –

+0

В случае ifconfig, если значение false, то оно не переопределяет макет, определенный в базовой теме. Но в случае вспомогательной функции, если значение ложно false, оно переопределяет макет, определенный в базовой папке. Вот почему он показывает пустой блок. –

0

Ifconfig = "MyModule/общее/is_enabled" Ifconfig = "MyModule/интерфейс/can_show"

почему бы не создать дополнительный узел конфигурации Ifconfig = "MyModule/интерфейс/is_enabled_can_show" и в зависимости от этого значения продолжить ,

0

рассмотрит ниже сценарий:

<catalog_category_default> 
     <reference name="product_list"> 
      <action method="setTemplate" > 
       <template>mymodule/mytemplate.phtml</template> 
      </action> 
    </reference> 
</catalog_category_default> 

Ifconfig: Если возвращаемое значение является ложным, то он принимает расположение, определенное в базовой папке.

вспомогательная функция: если возвращаемое значение ложно, то не принимает макет, определенный в базовой папке, а не добавляется шаблон. поэтому показан пустой блок.

Смежные вопросы