【发布时间】:2019-03-30 15:02:54
【问题描述】:
我对 Razor MVC 很陌生,并且正在使用一些不提供现代功能的软件。因此,我尝试在我的一些基于 HTML 的 C 锐利部分 (.cshtml) 中使用诸如“@Model.MetaTitle”之类的调用来动态构建 OG 标签。
这是一个电子商务网站。
到目前为止,我已经想出了很多方法来动态生成大多数 Open Graph 标签,这是我的代码:
<title>@Model.MetaTitle</title>
<meta name="description" content="@Model.MetaDescription" />
<link rel="canonical" href="https://example.com@(Request.RawUrl.Split(new[] {'?'})[0])" />
<meta property="fb:app_id" content="" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="website" />
<meta property="og:title" content="@Model.MetaTitle" />
<meta property="og:description" content="@Model.MetaDescription" />
<meta property="og:url" content="https://example.com@(Request.RawUrl.Split(new[] {'?'})[0])" />
<meta property="og:site_name" content="My Website" />
<meta property="og:image" content="" />
<meta property="og:image:secure_url" content="" />
<meta property="og:image:alt" content="@Model.MetaTitle" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:image" content="" />
<meta name="twitter:description" content="@Model.MetaDescription" />
<meta name="twitter:title" content="My Website" />
<meta name="twitter:site" content="@("@my_twitter")" />
<meta name="twitter:creator" content="@("@my_twitter")" />
如您所见,这里唯一需要填写的数据是“og:image”属性。
页面视图是使用 XSLT/XML 生成的,在某些情况下,我可以使用 Razor 语法获取某些数据。即使在每个 XSLT/XML 文件上都调用了“ProductImage”,它也被声明为一个变量,如下所示:
<xsl:value-of select="$ProductImage" disable-output-escaping="yes"/>
那么如何将这个“$ProductImage”输出到商店产品的 url 到我的元“og:image”属性中,并限制对构建的访问?
我想出了一种使用 jQuery 的方法,但是 Facebook 对象调试器仍然抱怨缺少 og:image 标签。假设脚本标签没有及时传递。
示例(从页面上现有的 schema.org 数据中提取):
var ogUrl = $(".product-page meta[itemprop='image']").attr("content");
$('head').append("<meta property='og:image' content='" + ogUrl + "'/>");
$('head').append("<meta property='og:image:secure_url' content='" + ogUrl + "'/>");
$('head').append("<meta name='twitter:image' content='" + ogUrl + "' />");
这是我目前卡住的地方。需要将 url 传递给 og 标签中的产品图片... TIA。
更新这是形成变量的字符串:
<xsl:variable name="ProductImage" select="aspdnsf:LookupProductImage(ProductID, ImageFilenameOverride, SKU, 'large', 1, $AltText)"/>
【问题讨论】:
-
我不熟悉 Razor,但您的
$ProductImage没有在您的示例代码中的任何地方声明。<xsl:value-of select="$ProductImage" disable-output-escaping="yes"/>行没有声明任何变量——它只是一个声明,无论此xsl:value-of声明位于何处,代码都会输出$ProductImage变量的值。要查找声明,请查找<xsl:variable name="ProductImage" ...>之类的内容。 -
感谢 Eirikr,我找到了声明:
仍然不确定如何在元标记中填充它。
标签: xml xslt razor razor-pages facebook-opengraph