
スタッフブログ
a-blog cms 「記事を書いた人」をエントリーで管理する
a-blog cmsで「記事を書いた人」のような表記を追加したい場合があったとします。
この場合、記事を書く人にユーザー権限を発行してユーザーのフィールドを使用すると良さそうですが、標準ライセンスだとユーザー数の制限によりユーザー数が足りない場合があるかもしれません。
スタンダードライセンス
また、ユーザー無制限オプションを追加するほどではないという場合、例えば「名前と概要文、人物写真」を使いたいということでよければ「記事を書いた人」をエントリーとして管理してするのも良さそうです。

この場合具体的な実装方法として、
1. ユーザー管理用カテゴリーを作成
「記事を書いた人」カテゴリーを作成し、その中にユーザー情報を入れたエントリーを作成します。
2. 管理画面表示用のモジュールIDを作成
管理画面「記事を書いた人」表示用にモジュールIDを作成ます。
3.エントリー編集画面にカスタムフィールドを設置
実際に投稿したいエントリーに「記事を書いた人」エントリー一覧をカスタムフィールド値としてセレクトボックスなどで表示させます。
この時のポイントとしてはタイトル名など文字列ではなく「記事を書いた人」のeidを保存するようにします。
4.エントリー表示側に「記事を書いた人」を表示させる
表示側でEntryBody内などでカスタムフィールドとして登録したeidを使い「記事を書いた人」のエントリーの値を取得し{title}などの変数から出力させます。
というステップで実現可能です。では詳しくみてみましょう。
カスタマイズ例
1. ユーザー管理用カテゴリーを作成
例として「記事を書いた人」カテゴリーを作成し数件エントリーを登録しておきます。

2. 管理画面表示用のモジュールIDを作成
今回はID名はadmin_entry_list_writerとしました。
こちらに先ほど作成したカテゴリーを指定します。

3.エントリー編集画面にカスタムフィールドを設置
先ほど作成したモジュールIDを使用してエントリー編集画面にカスタムフィールドを設置します。
admin/entry/field.html
        <!-- BEGIN_MODULE Entry_List id="admin_entry_list_writer" -->
        <tr>
            <th>記事を書いた人の設定</th>
            <td>
                <select name="cf_writer" class="js-select2">
                    <option value="">選択してください</option>
                    <!-- BEGIN entry:loop -->
                    <option value="{eid}" \{cf_writer:selected#{eid}\}>{title}</option>
                    <!-- END entry:loop -->
                </select>
                <input type="hidden" name="field[]" value="cf_writer">
            </td>
        </tr>
        <!-- END_MODULE Entry_List -->
管理画面側の設定はここまでになります。
エントリーの作成確認
実際に確認してみたいと思います。
エントリー新規作成から「記事を書いた人」のエントリーが選択できるようになってeidが登録される形になっていると思います。

4.エントリー表示側に「記事を書いた人」を表示させる
Entry_FieldのモジュールIDを作成します。
このモジュールは次のctx用で使いますので特に値は変更せず名前とIDのみ付けて標準のまま作成します。
ここではID名をentry_field_writerとしました。
entry.htmlなど詳細ページ表示用のEntryBody内の任意の箇所に記述します。
この時次の形でエスケープとctxを使うことによりカスタムフィールドのeidから別のエントリーの値を表示することが出来ます。
<!-- BEGIN_MODULE Entry_Body id="entry_body" -->
<!-- BEGIN entry:loop -->
.
.
.
<!-- BEGIN_MODULE\ Entry_Field id="entry_field_writer" ctx="eid/{cf_writer}" -->
<p><span>記事を書いた人</span><span> \{title\}</span></p>
<!-- END_MODULE\ Entry_Field -->
.
.
. 
<!-- END entry:loop -->
<!-- END_MODULE Entry_Body -->
実際にエントリーを登録してみてみると、次のように表示することが出来たと思います。

このようにエスケープやctxなど組み合わせるとカスタマイズの幅が広がり助かりますね。
また「記事を書いた人」をカテゴリーとして登録すると記事一覧を表示させるなど応用出来そうです。   
以上「 a-blog cms 記事を書いた人をエントリーで管理する」でした。
「記事を書いた人」をエントリーで管理したい場合に参考にしてみてください。
関連するタグ
この記事を書いた人
          たむら しょうご
HTML&CSSコーダー
                ウェブアクセシビリティ対応、フロントエンド開発、CMSを利用したウェブサイト制作を担当しています。
趣味はガーデニングです。
              
ましじめのスキルが必要ですか?
          遠慮なくご相談ください。我々はあなたのプロジェクトに最善を尽くし、
          あなたのウェブサイトの制作を強力にサポートいたします。
        
