Plone 为什么class=';主动';脱光衣服,有办法吗?
我试图做的是替换内容端的标题结构,进行一些剧烈的结构更改,以便一次性将整个标题移动到主题端 我的问题是,我无法将列表项上的“选定”类替换为“活动”。本例中的globalnav有三层,不同的层有不同的结构,所以一次性发布有点大。其基本思想是:Plone 为什么class=';主动';脱光衣服,有办法吗?,plone,diazo,Plone,Diazo,我试图做的是替换内容端的标题结构,进行一些剧烈的结构更改,以便一次性将整个标题移动到主题端 我的问题是,我无法将列表项上的“选定”类替换为“活动”。本例中的globalnav有三层,不同的层有不同的结构,所以一次性发布有点大。其基本思想是: <xsl:variable name="globalnav" css:select="#portal-globalnav"/> <replace css:content="#portal-header">
<xsl:variable name="globalnav" css:select="#portal-globalnav"/>
<replace css:content="#portal-header">
<ul id="borked-nav">
<xsl:for-each select="$globalnav/li">
<li>
<xsl:if test="./@class = 'selected'">
<xsl:attribute name="class">active</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="./*"/>
</li>
</xsl:for-each>
</ul>
</replace>
-
忙碌的
例如,工作原理是:
<xsl:variable name="globalnav" css:select="#portal-globalnav"/>
<replace css:content="#portal-header">
<ul id="borked-nav">
<xsl:for-each select="$globalnav/li">
<li>
<xsl:if test="./@class = 'selected'">
<xsl:attribute name="class">super-active</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="./*"/>
</li>
</xsl:for-each>
</ul>
</replace>
-
超活跃
什么不起作用(结果class=“真的”):
active真的很活跃吗
或者在主题面板中定义$active,并尝试使用jbot或实际更改模板以激活该类(我尝试只添加“selected active really”,因此“selected active really”作为jbot模板中的类将生成一个“selected really”类)
我不能在一个简单的设置中复制它,所以我将在下面发布完整的代码。有人知道为什么它会被剥离吗?我的规则中没有任何地方使用“活动”。下面的代码段包含rules.xml中定义的变量
<replace css:content="#portal-header">
<div id="header">
<div class="top-bar">
<div class="menu-button">
<span class="icon"></span>
</div>
<a class="logo" href="{$logo/@href}" accesskey="{$logo/@accesskey}" title="{$logo/@title}" ></a>
<span class="search-button">
<span class="label">Zoeken...</span><span class="icon"></span>
</span>
</div>
<div class="menu-wrapper">
<div class="menu">
<ul class="main-level">
<xsl:for-each select="$globalnav/li">
<li class="{@class}">
<xsl:comment>
<xsl:if test="@class = 'selected'">
<xsl:attribute name="class">super-active</xsl:attribute>
</xsl:if>
</xsl:comment>
<xsl:apply-templates select="./a"/>
<xsl:if test="./ul">
<div class="mega-menu level-1">
<div class="menu-left-wrapper">
<h2>Onderwerpen</h2>
<ul class="sub-level-1">
<xsl:for-each select="./ul/li">
<li class="{@class}">
<xsl:comment>
<xsl:if test="@class = 'selected'">
<xsl:attribute name="class">super-active</xsl:attribute>
</xsl:if>
</xsl:comment>
<xsl:apply-templates select="./a"/>
<xsl:if test="./ul">
<div class="mega-menu">
<h2>Artikelen binnen onderwerp</h2>
<ul class="sub-level-2">
<xsl:for-each select="./ul/li">
<li>
<xsl:if test="@class = 'selected'">
<xsl:attribute name="class">active</xsl:attribute>
</xsl:if>
<xsl:apply-templates select="./a"/>
</li>
</xsl:for-each>
</ul>
</div>
</xsl:if>
</li>
</xsl:for-each>
</ul>
</div>
</div>
</xsl:if>
</li>
</xsl:for-each>
<xsl:if test="$articles">
<li class="light">
<a class="" href="#">Snel naar<span class="arrow"></span></a>
<div class="mega-menu level-1">
<div class="menu-left-wrapper">
<h2><xsl:apply-templates select="$articles-heading"/></h2>
<xsl:apply-templates select="$articles"/>
</div>
</div>
</li>
</xsl:if>
</ul>
</div>
<xsl:if test="$helpdesks or $products">
<div class="sidebar">
<div class="content">
<xsl:if test="$helpdesks">
<h2><xsl:apply-templates select="$helpdesks-heading"/></h2>
<div class="buttons">
<xsl:for-each select="$helpdesks/li/a">
<a href="{./@href}" class="button phone"><xsl:apply-templates select="./*"/></a>
</xsl:for-each>
</div>
</xsl:if>
<xsl:if test="$products">
<h2><xsl:apply-templates select="$products-heading"/></h2>
<xsl:apply-templates select="$products"/>
</xsl:if>
</div>
</div>
</xsl:if>
<div class="top-menu">
<xsl:apply-templates select="$siteactions"/>
</div>
</div>
<div class="search">
<span class="search-button">
<span class="label">Zoeken...</span><span class="icon"></span>
</span>
<div class="search-wrapper">
<form id="search-form" action="{$searchform/@action}">
<div class="form-item">
<div class="content">
<input type="text" name="{$searchfield/@name}" id="keyword"/>
<span class="border"></span>
</div>
</div>
<input type="submit" value="Zoek" class="submit"/>
<span class="submit-button"><span class="label">Zoeken</span><span class="icon"></span></span>
<span class="close-button"><span class="icon"></span></span>
</form>
</div>
</div>
</div>
</replace>
佐肯。。。
-
超活跃
昂德尔彭
-
超活跃
Artikelen binnen onderwerp
-
忙碌的
-
佐肯。。。
佐肯
现在,我将其更改为仅处理全球导航,然后将李的移动到主题中,如下所示:
<replace css:content="#portal-globalnav a">
<a><xsl:copy-of select="./@*|./*|./text()"/><span class="arrow"></span></a>
</replace>
<replace css:content="#portal-globalnav li.selected">
<li class="active"><xsl:apply-templates select="./*"/></li>
</replace>
<replace css:content="#portal-globalnav .submenu">
<div class="mega-menu level-1">
<div class="menu-left-wrapper">
<h2>Onderwerpen</h2>
<ul class="sub-level-1"><xsl:apply-templates select="./*"/></ul>
</div>
</div>
</replace>
<replace css:content="#portal-globalnav .submenu .submenu ">
<div class="mega-menu">
<h2>Artikelen binnen onderwerp</h2>
<ul class="sub-level-2"><xsl:apply-templates select="./*"/></ul>
</div>
</replace>
昂德尔彭
Artikelen binnen onderwerp
我已经与设计/前端团队商议,不要在静态html中使用“主动”类,它仍然会被剥离。这个解决方案更被动一些。这对我有用。希望我正确理解了你的问题,这会对你有所帮助。 大多数情况下,查看属性是否包含值更安全
<replace css:content="#portal-globalnav">
<ul id="borked-nav">
<xsl:for-each css:select="#portal-globalnav > li">
<xsl:variable name="class" select="./@class" />
<li>
<xsl:if test="contains(@class, 'selected')">
<xsl:attribute name="class">active</xsl:attribute>
</xsl:if>
<xsl:copy-of select="./*"/>
</li>
</xsl:for-each>
</ul>
</replace>
-
忙碌的
我看到您在replace标记中重写了很多标记。您是否想过实际更改模板,而不是动态地执行所有这些操作
这非常有效,但最好保持规则集严密,因为它没有模板引擎那么快。这种方法效率低下,因为在替换中,您可以使用“.”在选择中引用#portal globalnav。但在我的例子中,它仍然剥离“活动”,我曾尝试更改模板(使用jbot),但它仍然被剥离。即使我在页脚中使用class=“active”,也不要在globalnav或页眉区域的任何地方使用。我还注释掉了所有与页眉无关的其他规则,以排除那里发生的任何事情,仍然没有“active”。我知道,但我想这样写,因为它更具可读性。这听起来很神秘。所以不管你怎么做,整个网站上的“活动”这个词都会被删除?我应该检查一下,到目前为止我一直在关注类属性。“活动”作为一个类在某些时候会被绊倒,在全球导航中,我一直没有找到公同分母。
<replace css:content="#portal-globalnav">
<ul id="borked-nav">
<xsl:for-each css:select="#portal-globalnav > li">
<xsl:variable name="class" select="./@class" />
<li>
<xsl:if test="contains(@class, 'selected')">
<xsl:attribute name="class">active</xsl:attribute>
</xsl:if>
<xsl:copy-of select="./*"/>
</li>
</xsl:for-each>
</ul>
</replace>