如何在Diazo主题中保留元素中的条件注释?

时间:2011-09-29 18:20:51

标签: plone diazo

我有一个基于html5boilerplate的Diazo主题文件。该主题使用<html>元素上的条件注释来标识Internet Explorer的特定版本,例如

<!doctype html>
<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js ie8 oldie" lang="en"> <![endif]-->
<!-- Consider adding an manifest.appcache: h5bp.com/d/Offline -->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->

然而,当应用主题时,Diazo似乎剥离了这些条件评论并且只删除了最后一个

<!--<![endif]-->

留在最终标记中,产生类似

的内容
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" class="no-js" lang="en" xml:lang="en"><!--<![endif]-->

具有无与伦比的endif。在<html>标记中使用条件注释(例如在<head>内或文档中更下方)似乎可以正常工作。

提供了有此问题的主题和规则文件的示例

https://github.com/hexagonit/hexagonit.themeskel/blob/master/hexagonit/themeskel/templates/less_theme/+namespace_package+/+package+/theme_resources

我正在使用plone.app.theming 1.0b8以及来自good-py的相关KGS版本。

2 个答案:

答案 0 :(得分:2)

这看起来像是Diazo中的一个错误,请将其添加到Plone bug追踪器中,并使用“Diazo”组件。

答案 1 :(得分:0)

解决这个问题的方法可能是在<body>标签上使用条件注释,但是Diazo还必须在Plone的body标签中添加一些类,这会在&lt; = IE8中打破它。

<merge attributes="class" css:theme="body" css:content="body" />

所以第三种方法可以在这样的div块上使用contional注释。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <link rel="stylesheet" href="css/style.css">
  <title>Title</title>

</head>
<body>
  <!--[if lt IE 7]> <div class="no-js ie6 oldie"> <![endif]-->
  <!--[if IE 7]> <div class="no-jsie7 oldie"> <![endif]-->
  <!--[if IE 8]> <div class="no-js ie8 oldie"> <![endif]-->
  <!--[if gt IE 8]><!--> <div class="no-js"> <!--<![endif]-->

    <div id="content"></div>

  </div><!-- Browser Detection -->
</body>
</html>

鉴于Plone生成的html普遍不稳定,我可以忍受这个。