为第一个索引页添加一个特殊类



我想为第一个具有pageType索引的页面添加一个index--first类。这不仅可以是主页(在这种情况下,这将是一个简单的测试data:blog.url == data:blog.homepageUrl(,还可以是关键字搜索产生的第一个页面或第一个标签页面。

在这一点上,我有以下代码(工作非常好(:

<body expr:class='(data:blog.pageType) + (data:blog.searchLabel ? " index--label" : "") + (data:blog.searchQuery ? " index--query" : "")'>
<!-- more stuff here -->
</body>

这样做的目的是为所有索引页添加一个index类,为所有也是标签页的索引页添加index--label类,并为所有也是搜索查询结果的索引页增加index--query类。

我仍然需要的是以某种方式捕获一个类型为index、URL中不包含updated-max的页面,并在其上添加index--first

这不起作用,我得到一个"无效表达式"错误:

<body expr:class='(data:blog.pageType == "index" ? ("index" + (data:blog.url.indexOf("updated-max") != -1 ? " index--home" : "")) : "") + (data:blog.searchLabel ? " index--label" : "") + (data:blog.searchQuery ? " index--query" : "")'>
</body>

那么,正确的方法是什么呢?

我不是在寻找JavaScript解决方案,indexOf()的使用对我来说只是一个胡乱猜测(遗憾的是,由于Blogger资源有限,胡乱猜测是我的最佳选择(,而不是试图在其中使用JavaScript。

这应该能在中工作

<body expr:class='data:blog.pageType'>
<b:class cond='data:view.search.label' name='index--label'/>
<b:class cond='data:view.search.query' name='index--query'/>
<b:class cond='data:view.isMultipleItems and (data:view.url not contains "updated-max=")' name='index--first'/>
<!-- more stuff here -->
</body>

您不能在Blogger数据表达式中直接使用像indexOf这样的JavaScript方法,因为它们是两种不同的语言,在不同的方面运行。

你可以这样做

<b:if cond='data:blog.pageType == "index"'>
<script>
var blogUrl = '<data:blog.url/>';
var cls = 'index--home';
<b:if cond='data:blog.searchLabel'>
cls = 'index--label';
</b:if>
<b:if cond='data:blog.searchQuery'>
cls = 'index--query';
</b:if>
if (blogUrl.indexOf("search?updated-max") == -1) {
document.body.classList.add(cls);
}
</script>
</b:if>

你可以这样做

<body>
<b:class cond='data:view.isHomepage' name='index--first'/>
<b:class cond='data:view.isPost' name='index--first'/>
<b:class cond='data:view.isPage' name='index--first'/>
<b:class cond='data:view.isArchive' name='index--first'/>
<b:class cond='data:view.search.label' name='index--label'/>
<b:class cond='data:view.search.query' name='index--query'/>
</body>

相关内容

最新更新