我正在向Orchard网站添加一个新页面,我最近从同事那里继承了这个页面。该页面的目的是为我们的Google Chrome扩展程序提供内联安装。
支持此功能需要在页面的head元素中添加一个链接到Google网上商店页面,例如
<link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/apdfllckaahabafndbhieahigkjlhalf">
如何在页面头部添加元素?我知道我们有一些Orchard模块做类似的事情,这需要一个模块吗?
答案 0 :(得分:6)
您还可以将脚本,CSS等直接插入&lt; head&gt;元素通过自定义主题。 document.cshtml的默认形状有一个名为Head的区域,您可以在其中呈现各种形状。
注意document.cshtml中的@Display(Model.Head)调用:
<head>
<meta charset="utf-8" />
<title>@Html.Title(title, siteName)</title>
@Display(Model.Head)
<script>(function(d){d.className="dyn"+d.className.substring(6,d.className.length);})(document.documentElement);</script>
</head>
<body>
@* Layout (template) is in the Body zone @ the default position (nothing, zero, zilch) *@
@Display(Model.Body)
@Display(Model.Tail)
</body>
</html>
这意味着如果要在元素中添加内容,可以执行以下操作,例如,从自定义主题中的layout.cshtml:
@{
WorkContext.Layout.Head.Add(New.Analytics(), "10");
}
并在您的主题中,在Views文件夹中包含Analytics.cshtml:
<script>
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date(); a = s.createElement(o),
m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-XXXXXXX-X', 'auto');
ga('send', 'pageview');
</script>
答案 1 :(得分:2)
我不知道任何能够向头部添加任意链接标签的模块,因此您有两种选择:
广告1:
RegisterLink(new Orchard.UI.Resources.LinkEntry
{
Rel = "chrome-webstore-item",
Href = "https://chrome.google.com/webstore/detail/apdfllckaahabafndbhieahigkjlhalf"
});
广告2: 在代码中注入IResourceManager(应该在需要此链接条目的每个请求上运行;因此可能是IResultFilter)并以与上一点相同的方式使用它。