8

WordPress の場合のように、header.php、theme-file.php、および footer.php を作成し、フックを使用してそれらを結合する方法はありますか? 特にヘッダーまたはフッターのコンテンツに小さな変更を加える必要がある場合に、スキン ファイルを複製するのは、私にはおかしいと思います。

どうもありがとう

4

1 に答える 1

14

スキンは単なるascxコントロールであるため、他のWebFormsビューと同じように、スキンの一部をカプセル化できます。ヘッダー/フッターのコンテンツを独自のascxファイルに入れて、スキンに含めることができます。これで問題が発生する唯一の場所は、DNNが個別のコントロールにペインを配置することをサポートしていないと思うことです。他のすべては公正なゲームでなければなりません。

DNNによって他のスキンとして表示されないように、それらを別のディレクトリに配置することをお勧めします。

-MySkin
--Controls
---Header.ascx
---Footer.ascx
--Home.ascx
--Home.doctype.xml
--Interior.ascx
--Interior.doctype.xml

次に、スキンに、ヘッダーに登録してコントロールを含めます。

<%@ Register TagPrefix="myskin" TagName="Header" Src="Controls/Header.ascx" %>
<%@ Register TagPrefix="myskin" TagName="Footer" Src="Controls/Footer.ascx" %>

そして、制御構文を介してそれを含めます:

<myskin:Header runat="server" />
....
<myskin:Footer runat="server" />

コントロールはスキンからコンテキストに自動的にアクセスできないため、使用する必要がある場合、またはそのようなものを使用する必要がある場合SkinPathPortalId、手動でコントロールに渡す必要があります。コントロールで、値を受け取るプロパティを定義します(<script runat="server">セクションを使用してコードを記述します[Languageこのためにコントロールの属性をC#に設定します])。

<script runat="server">
public string SkinPath { get; set; }
</script>

次に、スキンに値を渡します。

<myskin:Header runat="server" SkinPath="<%# SkinPath %>" />
于 2012-05-09T15:11:58.100 に答える