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

Blogger无Noamp标签时加载AMP的条件标签代码失效求助

问题根因

你的代码不生效是三个核心错误导致的:

  • 逻辑顺序写反:data:view.url == data:view.url params { amp: "1" }的判断逻辑是当前访问URL已经携带amp=1参数时才返回真,相当于只有用户已经进入AMP页面才触发AMP逻辑,完全和你要给普通页面启用AMP的需求反过来了,非AMP页的逻辑会被直接拦截。
  • 边界场景漏处理:Blogger的静态页(static_page)本身不存在data:post.labels属性,你把标签判断和静态页判断放在同一个and条件链里,静态页渲染时读取labels属性会直接报错,整个条件返回假,静态页的AMP逻辑永远不会触发。
  • 匹配逻辑有兼容问题:直接写l.name == "Noamp"是大小写敏感匹配,如果你实际建标签时写的是noamp、NoAmp、NOAMP都会匹配失败;同时旧版Blogger模板渲染器对直接嵌套在多条件and里的lambda标签判断存在解析bug,会导致条件判断失效。
修正后可用代码

给html标签添加amp属性的代码

放置在<html>标签内部的属性声明位置:

<b:attr cond='data:blog.pageType in {"static_page", "item"} and not data:view.isAmp and (data:blog.pageType == "static_page" or data:post.labels none (l => l.name case-insensitively equals "Noamp"))' name='amp' value='amp'/>

b:if逻辑判断代码

用来包裹AMP专属组件、自定义AMP逻辑:

<b:if cond='data:blog.pageType in {"static_page", "item"} and not data:view.isAmp and (data:blog.pageType == "static_page" or data:post.labels none (l => l.name case-insensitively equals "Noamp"))'>
  <!-- 此处插入你的AMP专属逻辑,比如AMP组件引用、AMP广告代码等 -->
</b:if>
使用说明
  • 不要再自行拼接URL参数判断AMP状态,直接用Blogger官方内置的data:view.isAmp字段即可,该字段会自动适配站点的AMP格式(不管是参数?amp=1还是路径后缀/amp都能正确识别),不会出现参数匹配错误。
  • 标签判断前增加了页面类型前置校验:只有在文章页(item)才会检查是否存在Noamp标签,静态页直接放行AMP逻辑,避免读取不存在的属性报错。
  • 标签匹配增加了case-insensitively大小写不敏感规则,不管标签实际录入的大小写格式是什么,都能正确识别Noamp标签,不会出现漏判。
  • 如果需要编写AMP页面内专属的渲染逻辑,直接把判断条件里的not data:view.isAmp改成data:view.isAmp即可,不用额外写URL匹配规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 05:15:18