BlogEngine.NET 活用編

以下では、BlogEngine.NET に関する追加設定情報や利用のポイント、拡張方法などをご紹介します。
コンテンツの内容が増加した場合は、必要に応じて適宜ページを分けてゆく予定です。

BlogEngine.NET

ファーストステップ

管理ユーザーの登録

インストール後、まず最初に行う必要があるのは、既定で登録されている admin ユーザーを削除し、新たな管理ユーザーを登録することです。
すべての BlogEngine.NET の既定の状態では、admin ユーザー(パスワードも同様) が登録されているため、このアカウントを既定のままにしておくと、セキュリティ上問題があります。
よって、インストールが完了した時点で速やかに admin ユーザーのパスワードを変更する必要があります。
admin ユーザーのパスワードの変更方法については、admin ユーザーでログイン後、管理メニューウィジェット内の「パスワードの変更」をクリックすることで、パスワードの変更ページに遷移しますので、こちらで行うことができます。
ただし、当サイトとしては、admin ユーザーが管理ユーザーであることは容易に想像がつくため、新たなユーザーを管理者として登録し、既定の admin ユーザーについては削除するかもしくはすべての権限をはく奪するという方法を推奨します。

  1. admin ユーザーでログイン。
  2. 管理メニューウィジェットの「ユーザ」をクリック。
  3. ユーザー管理ページが開くので、新しいユーザー情報を入力し、ユーザーの作成ボタンをクリック。
  4. 一覧に作成したユーザーが表示されたら、Roles 内の Administrators にチェックをつける。
  5. この時点で一旦ログアウトし、作成した新しいユーザーで再度ログインし直す。
    (ログイン中のユーザーは削除できないため)
  6. もう一度ユーザー管理ページを開き、Admin ユーザー先頭の削除リンクをクリックして Admin ユーザーの削除を行う。

ウィジェット

ウィジェットタイトルの日本語化

このページのトップで使用している BlogEngine.NET では、右サイドの各ウィジェットのタイトルが標準のものとは違い、日本語で表記されています。
このようにウィジェットのタイトルを日本語するには、
管理者ユーザーでログインすると、以下のようにタイトル右に「編集」リンクが表示されるので、これをクリック。

ウィジェットの編集画面が開いたら、タイトル欄に日本語のタイトルを入力し、「保存」ボタンをクリックして保存します。


カレンダーウィジェットの日本語化

ウィジェットの追加 BlogEngine.NET にも通常のブログ同様、 カレンダーを表示することができます。
カレンダーは、管理者ユーザーにてログインした後、「ウィジェットの追加」より Calendar を選択し Addボタンをクリックすることで、追加することができます。
カレンダーウィジェットは標準では、以下のような表示になります。
変更前のカレンダー これでは見た目も悪いので、ウィジェットを直接編集し、日本風にアレンジしましょう。 カレンダーウィジェットの実体は、\widgets\calendar\widget.ascx というユーザーコントロールになりますので、もし日本語のみでサイトを提供するという場合は、この ASCX ファイルを直接編集するのがもっとも手っ取り早い方法です。しかし可能な限り国際化を行いたいということであれば、widget.ascx のコードビハインドにあたる、widget.ascx.cs のコード内で言語判定を行い処理を分岐するというのが賢い方法なのかもしれません。
この場合の修正箇所ですが、ベースクラスの WidgetBase をオーバーライドしている、LoadWidget メソッド内でよいでしょう。
BlogEngine.Core の using を追加し、以下のような記述をメソッド内に追記してください。

if (Utils.GetDefaultCulture().Name.ToLower() == "ja-jp")
{
	this.PostCalendar1.DayNameFormat = DayNameFormat.FirstLetter;
	this.PostCalendar1.FirstDayOfWeek = FirstDayOfWeek.Sunday;

}
上記コードでは、日本語以外はすべて既定の状態となるように記述していますが、いくつかの言語を扱う場合はその言語分の分岐処理を記述すればよいことになります。
さらに、ウィジェット下部の View posts in large calender という文字列を言語切り替えするには、widget.ascx の末尾から2行目の A タグの記述を
<a href="<%=Utils.AbsoluteWebRoot %>calendar/default.aspx"><%
    if (Utils.GetDefaultCulture().Name.ToLower() != "ja-jp") {
        %>View posts in large calendar<%
    } else {
        %>投稿一覧をカレンダーで表示<%
    } %></a>
とすることで、対応が可能です。
まだ最後に年月タイトルの書式が国際化されていません。これについては、カレンダーコントロールにあたる PostCalendar クラス内で直接コードからレンダリングされているため、コードの修正が必要です。
PostCalender クラスのコードファイルは、\App_Code\Controls\PostCalendar.cs になります。
記述箇所は117行目あたり、
writer.Write("</td><td style=\"text-align:center;width:100px\">" + 
			VisibleDate.ToString("MMMM yyyy") + 
			"</td><td align=\"right\">");

の部分を、
string monthFormat = "MMMM yyyy";
if (Utils.GetDefaultCulture().Name.ToLower() == "ja-jp") {
	monthFormat = "yyyy年MM月";
}
writer.Write("</td><td style=\"text-align:center;width:100px\">" + 
			VisibleDate.ToString(monthFormat) + 
			"</td><td align=\"right\">");

上記コードに差し替えることで、言語毎の切り替えが可能となります。
これを日本語設定で表示した場合、以下のようになれば正しく対応できたことになります。(カレンダーが小さく表示されているのが気になる場合は、CSSで調整してくださいね。)
変更後のカレンダー
以上で、カレンダーウィジェットの国際化は完了ですが、あくまでも一例ですので参考程度に。言うまでもなく、実際には構築するサイトの要件に合わせて最適な手段を選択してください。