WordPress の場合のように、header.php、theme-file.php、および footer.php を作成し、フックを使用してそれらを結合する方法はありますか? 特にヘッダーまたはフッターのコンテンツに小さな変更を加える必要がある場合に、スキン ファイルを複製するのは、私にはおかしいと思います。
どうもありがとう
WordPress の場合のように、header.php、theme-file.php、および footer.php を作成し、フックを使用してそれらを結合する方法はありますか? 特にヘッダーまたはフッターのコンテンツに小さな変更を加える必要がある場合に、スキン ファイルを複製するのは、私にはおかしいと思います。
どうもありがとう
スキンは単なる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" />
コントロールはスキンからコンテキストに自動的にアクセスできないため、使用する必要がある場合、またはそのようなものを使用する必要がある場合SkinPath
はPortalId
、手動でコントロールに渡す必要があります。コントロールで、値を受け取るプロパティを定義します(<script runat="server">
セクションを使用してコードを記述します[Language
このためにコントロールの属性をC#に設定します])。
<script runat="server">
public string SkinPath { get; set; }
</script>
次に、スキンに値を渡します。
<myskin:Header runat="server" SkinPath="<%# SkinPath %>" />