想知道是否有人将 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/