использование условий в xml-формате макета magento
Интересно, использовал ли кто-нибудь операторы or в XML-формате макета magento для пользовательского модуля? Я понимаю, что мог бы проверить значения в контроллере модуля или сам блок, но это кажется логичным местом для логики.
Mage_Core использует их в catalog.xml
для тестирования javascript. <!--<params/><if/><condition>can_load_calendar_js</condition>-->
Спасибо, Джей Ди
1 answers
Я бы воздержался от их использования. Вы заметите, что они прокомментированы в выпуске распределенного сообщества по умолчанию, что, вероятно, означает, что основная команда отказывается от их использования.
Если вас интересует, что они делают, это параметры, которые строго являются частью метода page/head
блока addItem
.
File: code/core/Mage/Page/Block/Html/Head.php
public function addItem($type, $name, $params=null, $if=null, $cond=null)
{
if ($type==='skin_css' && empty($params)) {
$params = 'media="all"';
}
$this->_data['items'][$type.'/'.$name] = array(
'type' => $type,
'name' => $name,
'params' => $params,
'if' => $if,
'cond' => $cond,
);
return $this;
}
Метод добавления элемента сохраняет эти условия, а затем они используются позже в методе getCssJsHtml
, чтобы пропустить добавление элемента.
public function getCssJsHtml()
{
// separate items by types
$lines = array();
foreach ($this->_data['items'] as $item) {
if (!is_null($item['cond']) && !$this->getData($item['cond']) || !isset($item['name'])) {
continue;
}
Я предполагаю, что они были ранняя попытка добавить метапрограммирование в систему шаблонов, которая закончилась тем, что вышла за рамки ее предполагаемых пользователей.