Переменная XML как оператор Razor MVC для тегов OG? - PullRequest
0 голосов
/ 30 марта 2019

Я довольно новичок в Razor MVC и работаю с некоторым программным обеспечением, которое не обеспечивает современную функциональность.Поэтому я пытаюсь динамически создавать теги OG, используя вызовы типа «@ Model.MetaTitle» в некоторых моих точных C-фрагментах на основе HTML (.cshtml).

Это для сайта электронной коммерции.

Пока что я придумал множество способов динамического создания большинства тегов 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.Несмотря на то, что «ProductImage» вызывается в каждом файле XSLT / XML, он объявляется как переменная следующим образом:

<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.

Update это строка, в которой формируется переменная:

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

1 Ответ

0 голосов
/ 10 апреля 2019

Если у вас есть механизм просмотра XSLT, вы можете использовать переменную для создания необходимых метатегов с помощью переменной ProductImage. Я предполагаю, что это не так (или вам не разрешено).

Если вы используете xslt для создания бритвенных представлений, то ответ на передачу переменных будет зависеть от реализации движка.

На мой взгляд, самым простым решением было бы использовать

LookupProductImage (ProductID, ImageFilenameOverride, SKU, «большой», 1, "")

в модели представления (путем передачи других соответствующих переменных), поскольку это определенно функция C # в вашем проекте. Тогда вы можете просто использовать URL-адрес изображения продукта, обращаясь к нему, как к другим переменным, т.е. @Model.variable fashion.

...