2

最近同僚から引き継いだ Orchard サイトに新しいページを追加しています。このページの目的は、Google Chrome 拡張機能のインライン インストールを提供することです。

この機能をサポートするには、ページの head 要素に Google ウェブストア ページへのリンクを追加する必要があります。

<link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/apdfllckaahabafndbhieahigkjlhalf">

ページの head に要素を追加するにはどうすればよいですか? 同様のことを行う Orchard モジュールがいくつかあることは知っていますが、これにはモジュールが必要ですか?

4

2 に答える 2

6

カスタム テーマを使用して、スクリプト、CSS などを <head> 要素に直接挿入することもできます。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>
于 2014-07-01T03:01:30.783 に答える
3

ヘッドに任意のリンク タグを追加できるモジュールを私は知らないので、次の 2 つのオプションがあります。

  1. 形状テンプレートからリンクを登録して、テーマから追加します。これは、サイトのレイアウトを構築するときに使用するテーマにテンプレートが必要であることを意味します。このために、たとえば、テーマの Document.cshtml などの既存のテンプレートをオーバーライドし、そこに登録を追加することができます。独自の形状を含めるために既存の形状を完全にオーバーライドする (そして最初にコピー アンド ペーストする) 必要がないように、拡張ポイントを使用してこのようなシナリオを支援するために特別に設計されたPretty Good Base Theme開発者テーマがあります。
  2. ResourceManager を介してモジュールから追加します。

広告 1:

RegisterLink(new Orchard.UI.Resources.LinkEntry
{
    Rel = "chrome-webstore-item",
    Href = "https://chrome.google.com/webstore/detail/apdfllckaahabafndbhieahigkjlhalf"
});

広告 2: IResourceManager をコードに挿入し (これは、このリンク エントリが必要なすべてのリクエストで実行する必要があるため、IResultFilter である可能性があります)、前のポイントと同じ方法で使用します。

于 2012-08-20T10:34:31.067 に答える