miso_soup3 Blog

主に ASP.NET 関連について書いています。

Umbraco で Macro を使う

概要

Macro は Razor, XSLT, usercontrol で書くことができる。(Umbraco 7 では、usercontrol はあまり使われないと思われる。)

Parameter も設定可能。

Macro の入力用ヘルパーあり(Rich Text Editor にも付属)。

用途

ユーザーが任意の場所に、動的な要素を埋め込みたい時に使用する。

例えば、本文中にとある手順について書くとする。この手順は、あちこちの記事で表示する可能性があり、機能がリリースされるたびに更新が必要となる。

例:Azure Websites と ASP.NET を使用する の "このチュートリアルを完了するには、Azure アカウントが必要です。" の部分。

Macro を使用しない場合は、リリースの度に複数の記事を修正しなければいけない。Razor で @Html.Partial("hoge") と書きたいところだが、ユーザーが管理画面の入力欄で任意の場所に配置できるようにしたい。そこで Macro を使う。

手順

  • Partial View Macro Files を作成する。
    • Back Office > Developer > Partial View Macro Files

このとき、 .cshtml は @inherits Umbraco.Web.Macros.PartialViewMacroPage と、継承する。

  • Macro を作成する。
    • Back Office > Deceloper > Macros
  • Macro を配置する。方法は 2 つ。

◇方法1

ユーザーが Macro を配置したい場所にて以下のコードを書く。パラメータがある場合は、属性とその値も追加する。

<div><?UMBRACO_MACRO macroAlias="{ Macro の 名前}}" /></div>

開発者は、.cshtml 側で以下のコードを記述し、Macro をレンダリングさせる。

string afterRender = umbraco.library.RenderMacroContent(string Text, int PageId(Model.Content.Id)等);

◇方法2

入力フィールドがリッチテキストの場合は、ユーザーが 入力用ヘルパーから配置する。

Bug

  • Partial View Macro Files が文字化けする場合がある。
    • 改行文字の混合が原因?
    • Visual Studio から、ファイル>名前を付けて ... を保存>エンコード付きで保存>改行文字 でファイルを保存し直すと直る。
    • Back Office から編集して保存すると文字化けする可能性大。