использование условий в макетах magento xml - PullRequest
5 голосов
/ 26 июля 2010

Хотите знать, если кто-то использовал операторы или в XML макета magento для пользовательского модуля? Я понимаю, что могу проверить значения в контроллере модуля или в самом блоке, но это логичное место для логики.

Mage_Core использует их в catalog.xml для проверки на JavaScript. <!--<params/><if/><condition>can_load_calendar_js</condition>-->

Спасибо, JD

1 Ответ

8 голосов
/ 26 июля 2010

Я бы не стал их использовать.Вы заметите, что они закомментированы в стандартной распределенной редакции сообщества, что, вероятно, означает, что основная команда отказывается от их использования.

Если вам интересно, что они делают, они являются параметрами, которыеявляются строго частью метода 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;
}

Метод add item сохраняет эти условия, а затем они используются позже в методе 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;
        }

Я предполагаю, что они былиранняя попытка добавить метапрограммирование в систему шаблонов, которая в итоге перешла в голову предполагаемых пользователей.

...