XML 变量作为 OG 标签的 Razor MVC 运算符?



我是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"/>

那么如何将这个输出到商店产品的 url 的"$ProductImage"传递到我的元"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 标签中的产品图像......蒂亚。

更新这是形成变量的字符串:

<xsl:variable name="ProductImage" select="aspdnsf:LookupProductImage(ProductID, ImageFilenameOverride, SKU, 'large', 1, $AltText)"/>

如果您有 XSLT 视图引擎,则可以使用该变量通过ProductImage变量创建所需的元标记。 我假设情况并非如此(或者您不被允许)。

如果您使用 xslt 生成 razor 视图,则传递变量的答案将取决于引擎的实现。

在我看来,最简单的解决方案是直接使用

LookupProductImage(ProductID, ImageFilenameOverride, SKU, "large", 1, "")

在视图模型中(通过传递其他适当的变量),因为它绝对是项目中的 C# 函数。然后,您可以通过像其他变量一样访问产品图片 url 来简单地使用它,即@Model.variable时尚。

最新更新