php - 在 magento 布局 xml 中使用条件

标签 php xml layout magento conditional

想知道是否有人将 magento 的布局 XML 中的 or 语句用于自定义模块?我意识到我可以检查模块 Controller 中的值或 block 本身,但它似乎是逻辑存在的合乎逻辑的地方。

Mage_Core 在 catalog.xml 中使用它们测试javascript。 <!--<params/><if/><condition>can_load_calendar_js</condition>-->

谢谢, 京东

最佳答案

我会回避使用那些。您会注意到它们在默认的分布式社区版本中被注释掉了,这可能意味着核心团队不再使用它们。

如果您对它们的作用感兴趣,它们是严格属于 page/head block 的 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;
        }

我的猜测是,它们是将元编程添加到模板系统的早期尝试,最终超出了目标用户的理解范围。

关于php - 在 magento 布局 xml 中使用条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3331684/

相关文章:

android - Xamarin.Forms 布局如何转换为特定于平台的布局?

php - MySQL 中的 NPV 计算

php - 如何在两个字段答案上都显示错误 '0'

java - 将转换后的 SOAP/XML 对象返回给 url

xml - JAXB xjc - [错误] 意外 <xs :schema> appears at line 2 column 101

xml - 从 XSD 创建 Golang 结构

android - 使用 LayoutInflater 在彼此下方多次添加相同的 View

graphics - LaTeX:如何在每一页上制作整页垂直规则?

PHP 开发 - 很多(新手)问题

php - Jquery 时间戳和 php 时间戳之间的区别?