如何在Orchard的widget中添加元标记?

时间:2014-11-26 17:49:14

标签: tags widget content-management-system orchardcms meta

我试图从widget(/ views / parts / folder)添加一些meta标签,这些meta标签从orchard外部的数据库中获取数据。我需要将它们放在头部,坦率地说我不知道​​如何实现这一目标。

我试过了:

using (Script.Head())
{
 <meta property="description" content="ABC">
}

SetMeta("ABC", "description");

但这些都不起作用: - (


编辑:我们的document.cshtml代码:

&#13;
&#13;
@using Orchard.Mvc.Html;
@using Orchard.UI.Resources;
@{
    RegisterLink(new LinkEntry { Type = "image/x-icon", Rel = "shortcut icon", Href = Url.Content("~/modules/orchard.themes/Content/orchard.ico") });

    string title = Convert.ToString(Model.Title);
    string siteName = Convert.ToString(WorkContext.CurrentSite.SiteName);

    string classForPage = "static " + Html.ClassForPage();
}
<!DOCTYPE html>
<!--[if lt IE 7]>
<html lang="@WorkContext.CurrentCulture" class="@classForPage no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>
<html lang="@WorkContext.CurrentCulture" class="@classForPage no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>
<html lang="@WorkContext.CurrentCulture" class="@classForPage no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!-->
<html lang="@WorkContext.CurrentCulture" class="@classForPage no-js"> <!--<![endif]-->
<head>
    <meta charset="utf-8" />
    <title>@Html.Title(title, siteName)</title> 
    <meta name="viewport" content="width=device-width">

    @{
        Display(Model.Head);
    }

    <meta property="og:title" content="@Layout.Title - @Convert.ToString(WorkContext.CurrentSite.SiteName)">
    <meta property="og:site_name" content="@Convert.ToString(WorkContext.CurrentSite.SiteName)">
    <meta property="og:url" content="@Request.Url">
    <meta property="og:type" content="article">

    <script>(function(d){d.className="dyn"+d.className.substring(6,d.className.length);})(document.documentElement);</script>
</head> 
<body>
    @Display(Model.Body)
    @Display(Model.Tail)
</body>
</html>
&#13;
&#13;
&#13;

有人知道如何实现这个目标吗?

2 个答案:

答案 0 :(得分:1)

IResourceManager提供了必要的方法。 在视图中使用它:

var resourceManager = WorkContext.Resolve<Orchard.UI.Resources.IResourceManager>();
resourceManager.SetMeta(new Orchard.UI.Resources.MetaEntry
{
    Name = "description",
    Content = "ABC"
});

但它也可以在其他地方使用(例如部分驱动程序)。

修改 使用SetMeta(&#34;说明&#34;,&#34; ABC&#34;)在视图中给出相同的结果。

答案 1 :(得分:1)

我在标题标记之前的layout.cshtml文件中使用了以下代码并且它有效。

    @using (Script.Head())
    {
    <meta name="description" content="<your description>"/>
    <meta name="keywords" content="<your keywords here>"/>
    }

享受!!!