5
想知道是否有人将magento的布局XML中的or语句用于自定义模块?我意识到我可以检查模块控制器中的值或阻止自己,但它似乎是生存逻辑的合理位置。在magento布局中使用条件xml
Mage_Core在catalog.xml
中使用它们来测试javascript。 <!--<params/><if/><condition>can_load_calendar_js</condition>-->
感谢, JD
想知道是否有人将magento的布局XML中的or语句用于自定义模块?我意识到我可以检查模块控制器中的值或阻止自己,但它似乎是生存逻辑的合理位置。在magento布局中使用条件xml
Mage_Core在catalog.xml
中使用它们来测试javascript。 <!--<params/><if/><condition>can_load_calendar_js</condition>-->
感谢, JD
我会回避使用这些了。您会注意到它们在默认的分布式社区版中已被注释掉,这可能意味着核心团队正在摆脱使用它们。
如果您对他们的工作感兴趣,那么他们就是参数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;
}
我的猜测是,他们的早期尝试元编程添加到模板系统,它最终会超过其目标用户的头上。
非常感谢艾伦,全面和信息答案一如既往。 我想我会坚持使用块的条件逻辑。 JD – 2010-07-26 06:55:05
我已经深入了解了这一点,现在认为如果/ cond参数是通过条件注释添加Internet Explorer特定样式表。 – 2011-01-18 02:58:49