You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我在Blogger文章内使用的Conditional Tags条件标签无法生效?

问题排查与解决方案

核心故障原因

两个内容同时显示的核心诱因有两点:

  1. Blogger的<b:if>类条件标签属于服务端模板语法,仅能在主题模板文件中生效。如果直接粘贴到文章编辑器的HTML编辑框内,编辑器会自动过滤所有<b:>开头的模板标签,最终只保留两个内容div,导致两段内容同时展示。
  2. 即使代码放在主题模板中,原有写法也存在逻辑缺陷:data:blog.url默认返回页面的标准canonical地址,不包含?hl=hi这类查询参数,URL匹配永远失败;且手动拼接URL容易出现斜杠不匹配的问题,比如data:blog.canonicalHomepageUrl末尾自带斜杠,拼接后容易出现//错误。

解决方案

根据使用场景可选择两种实现方式:

场景1:仅需在单篇文章内实现多语言切换

直接使用客户端JavaScript实现即可,无需修改主题模板,将以下代码直接粘贴到文章HTML编辑器的对应位置:

<!-- 印地语内容 -->
<div id="hi-content" style="display:none;">
अंकित
</div>
<!-- 英文内容 -->
<div id="en-content" style="display:none;">
ankit true
</div>
<script>
// 读取URL中的hl参数
const queryParams = new URLSearchParams(window.location.search);
const currentLang = queryParams.get('hl');
// 根据参数显示对应内容
if (currentLang === 'hi') {
  document.getElementById('hi-content').style.display = 'block';
} else {
  document.getElementById('en-content').style.display = 'block';
}
</script>

场景2:全站多路径适配多语言,使用服务端模板实现

将代码放到Blogger主题的模板文件中即可生效,操作步骤:

  1. 进入Blogger后台,依次点击「主题」-「编辑HTML」
  2. 找到文章内容渲染的对应位置,替换原有判断逻辑为以下代码:
<b:if cond='data:view.url.path == "/p/post.html"'>
  <!-- 判断hl参数是否为印地语 -->
  <b:if cond='data:view.queryParams.hl == "hi"'>
    <div>अंकित</div>
  <b:else/>
    <div>ankit true</div>
  </b:if>
</b:if>

该写法直接调用Blogger提供的queryParams对象读取URL参数,无需手动拼接完整URL,匹配准确率更高。

内容的提问来源于stack exchange,提问作者Dark Army

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:06:04