【发布时间】:2021-02-10 04:08:43
【问题描述】:
我目前正在使用 AMP 创建电子商务产品详细信息页面。作为工作的一部分,我希望能够提供有效的structured data for each product 来协助进行 SEO。
我在尝试将itemprop="image" 的结构化数据属性添加到使用amp-img 呈现的产品主图片时遇到了问题。据我所知,无法将自定义属性应用于img 最终呈现的amp-img 标记。
我现有的标记:
<amp-img on="tap:hero-zoom-lightbox" src="--REDACTED--" [src]="productState.currentHeroImg" width="260" height="260" layout="responsive"
class="hero-carousel-image" role="button" tabindex="0" itemprop="image"></amp-img>
渲染的内容:
<amp-img itemprop="image" tabindex="0" role="button" class="hero-carousel-image amp-carousel-slide i-amphtml-element i-amphtml-layout-responsive i-amphtml-layout-size-defined i-amphtml-layout" layout="responsive" height="260" width="260" data-amp-bind-src="productState.currentHeroImg" i-amphtml-binding="" src="--REDACTED--" on="tap:hero-zoom-lightbox" i-amphtml-layout="responsive" aria-hidden="false">
<i-amphtml-sizer style="padding-top: 100%;"></i-amphtml-sizer>
<img decoding="async" src="--REDACTED--" class="i-amphtml-fill-content i-amphtml-replaced-content">
</amp-img>
我在寻找什么(itemprop="image" 属性位于 img 标签本身):
<amp-img tabindex="0" role="button" class="hero-carousel-image amp-carousel-slide i-amphtml-element i-amphtml-layout-responsive i-amphtml-layout-size-defined i-amphtml-layout" layout="responsive" height="260" width="260" data-amp-bind-src="productState.currentHeroImg" i-amphtml-binding="" src="--REDACTED--" on="tap:hero-zoom-lightbox" i-amphtml-layout="responsive" aria-hidden="false">
<i-amphtml-sizer style="padding-top: 100%;"></i-amphtml-sizer>
<img itemprop="image" decoding="async" src="--REDACTED--" class="i-amphtml-fill-content i-amphtml-replaced-content">
</amp-img>
有没有人知道这是否可行?如果不是,那么为什么实施这种行为会破坏 AMP 范式?
【问题讨论】:
-
如果没有解决方案:解决方法是添加
link元素,并在链接上指定itemprop而不是(amp-)img。 -
@unor 很有帮助的建议,谢谢!
-
@pstricker 为什么需要在
img标签上而不是amp-img标签上使用它?链接上的itemprop="image"与amp-img上的不一样吗?它们都是带有img标签的容器。 -
@TrevorGeene 这是一个很好的问题,但我没有很好的答案。通过 Google 的结构化数据测试工具在
amp-img元素上运行带有itemprop="image"属性的标记,无法识别图像属性。相反,在link元素上使用itemprop="image"会被识别。我还没有找到任何明确的文档说明为什么link与任何其他任意元素相反,但我仍在研究。 -
@pstricker 虽然我使用了 Google 的测试工具,但我想我忽略了
itemprop="image"缺失的事实(我什至刚刚确认了这一点)。
标签: amp-html microdata amp-img