MyAdminStyle
CMS管理画面のheadまたはbodyの末尾へ、独自のソースコードを挿入します。
- 対象製品
- MyAdminPack
- 対象バージョン
- v2
概要
MyAdminStyleは、Movable Type/PowerCMSの管理画面へ独自のHTML、CSS、JavaScript、MTMLを挿入するプラグインです。システム全体とサイトごとにソースコードを登録できます。
入力した内容は自動的にstyle要素やscript要素で囲まれません。CSSは<style>、JavaScriptは<script>を含む、管理画面へ挿入できる完全なソースコードとして記述します。
公開サイトのHTMLへコードを追加する機能ではありません。
変更できる場所
| 設定項目 | 挿入位置 | 主な用途 |
|---|---|---|
| 「head の閉じタグの直前」 | CMS管理画面の</head>直前 |
style要素、外部CSSのlink要素、早い段階で必要なJavaScriptなど |
| 「body の閉じタグの直前」 | CMS管理画面の</body>直前 |
管理画面のHTMLを参照するJavaScriptなど |
対象は、CMS標準のヘッダー/フッターテンプレートを使用する管理画面です。特定の画面だけを選択する設定項目はありません。画面を限定する場合は、挿入するJavaScriptまたはCSS側で画面情報を判定します。
設定方法
システム全体へ設定する
- システムスコープのプラグイン設定で「MyAdminStyle」を開きます。
- 「ステータス」を「有効」にします。
- 必要なソースコードを「head の閉じタグの直前」または「body の閉じタグの直前」へ入力します。
- 変更を保存します。
- 管理画面を再読み込みし、対象画面の表示とブラウザのエラーを確認します。
「ステータス」を「無効」にすると、システム設定とサイト設定の両方の挿入を停止します。画面情報を保持するmyAdminStyleVarsも出力されません。
サイトごとに設定する
対象サイトのプラグイン設定で「MyAdminStyle」を開き、「head の閉じタグの直前」または「body の閉じタグの直前」へコードを入力します。サイト設定には有効/無効の切り替えはありません。
管理画面で現在選択しているサイトのIDに対応する設定が読み込まれます。サイトIDがないシステム画面ではシステム設定だけが読み込まれ、サイト画面ではシステム設定に現在サイトの設定が追加されます。
CSSとJavaScriptの記述例
管理画面へCSSを追加する場合は、style要素を含めて設定します。
<style>
/* 対象とする要素は、実際の管理画面で確認して指定してください。 */
</style>
JavaScriptを追加する場合も、script要素を含めて設定します。
<script>
if (typeof myAdminStyleVars !== 'undefined') {
console.log(myAdminStyleVars);
}
</script>
読み込み順
システム設定とサイト設定が有効に読み込まれる場合、次の順で出力されます。
- MyAdminStyleが生成する
myAdminStyleVars - システム設定のhead用コード
- サイト設定のhead用コード
- CMS管理画面の
</head> - CMS標準の画面本体とフッター
- システム設定のbody用コード
- サイト設定のbody用コード
- CMS管理画面の
</body>
システム設定が先、サイト設定が後です。同じCSSセレクターへ同じ優先度で異なる指定をした場合は、後に出力される指定が優先されます。
他のプラグインも同じ管理画面テンプレートを変更する場合、プラグイン間の最終的な読み込み順はMyAdminStyleだけでは決まりません。併用する環境で生成された管理画面HTMLを確認してください。
画面情報をJavaScriptで使用する
MyAdminStyleが有効な管理画面では、head用コードより前にmyAdminStyleVarsが定義されます。挿入するJavaScriptから、現在の画面を判定するために使用できます。
主な情報は次のとおりです。画面やCMSによって、値が空または追加情報付きになる項目があります。
| 項目 | 内容 |
|---|---|
cms |
CMSの製品名、バージョン、管理画面用静的ファイルのパスなど |
author_id、author |
ログイン中ユーザーのID、プロフィール、取得された標準権限情報 |
blog_id、blog |
現在のサイトIDとサイト情報 |
id |
編集中データなど、リクエストで指定されたID |
mode、type、object_type |
現在の管理画面と対象データを識別する値 |
scope_type、screen_id、html_title |
現在のスコープ、画面識別子、画面タイトル |
myAdminStyleVarsの構造はCMSと画面によって異なります。コードで値を参照するときは、対象画面でプロパティの有無を確認してください。
記事とウェブページの編集画面では、対象データをentryまたはpageに格納します。保存済みのカスタムフィールド値、カスタムフィールド定義、記事のカテゴリまたはウェブページのフォルダも、取得できる場合は同じ対象データ内へ追加します。
Movable Typeのコンテンツデータ編集画面では、対象データをcontent_dataに格納し、コンテンツフィールド定義と保存済みのフィールド値を追加します。未保存のデータや保存値がないフィールドでは、対象データまたは値が含まれない場合があります。
PowerCMSの登録済みカスタムオブジェクト編集画面では、対象データをcustomobjectに格納し、保存済みのカスタムフィールド値、カスタムフィールド定義、フォルダ情報を取得できる場合は追加します。
画面を限定して実行する
次の例は、記事一覧画面でのみ処理を実行します。対象サイトのMyAdminStyle設定にある「body の閉じタグの直前」へ、script要素を含めて入力してください。
<script>
if (
typeof myAdminStyleVars !== 'undefined' &&
myAdminStyleVars.mode === 'list' &&
myAdminStyleVars.type === 'entry'
) {
console.log('記事一覧画面です。');
// 記事一覧画面で実行する処理を記述します。
}
</script>
編集対象の情報を確認する
記事一覧画面では、個別の記事情報を保持するentryは含まれません。記事情報を確認する場合は、保存済みの記事を1件開き、その編集画面で確認してください。
- 「CSSとJavaScriptの記述例」にある確認用JavaScriptを、「body の閉じタグの直前」へ入力して保存します。
- 保存済みの記事の編集画面を開きます。
- ブラウザの開発者ツールでコンソールを開き、管理画面を再読み込みします。
- 出力された
myAdminStyleVarsのentryを確認します。 - 確認後、追加した確認用コードを削除して保存します。
ウェブページではpage、Movable Typeのコンテンツデータではcontent_dataを確認します。新規作成画面などでは、保存済みの対象データが含まれない場合があります。
出力にはユーザー情報や保存データが含まれるため、コンソールの内容を共有する場合は注意してください。
保存済みの値と編集中の値
myAdminStyleVarsに含まれるフィールド値は、管理画面の表示時に取得した保存済みの値です。画面上で入力内容を変更しても、自動的には更新されません。
編集中の値を使用する場合は、対象の入力欄から取得してください。また、対象データや値が存在しない場合があるため、プロパティの有無を確認してから参照してください。
MTMLの扱い
設定内容は、現在のサイトIDをコンテキストとしてMTMLの構文確認と評価が行われます。MTMLのコンパイルまたは実行に失敗した場合、その設定内容は挿入されず、管理画面にエラーメッセージが表示されます。
MyAdminStyle自体は、独自テンプレートタグやグローバルモディファイアを追加しません。 設定欄で使用できるのは、CMSと有効なプラグインが提供している既存のMTMLです。
既存管理画面への影響
設定したコードは、CMS標準の管理画面と同じページ内で読み込まれます。
そのため、CSSは既存の表示や操作部品へ影響し、JavaScriptは既存のイベント処理や他プラグインの処理と競合する可能性があります。
設定を変更するときは、少なくとも次の画面を検証してください。
- システムダッシュボードとサイトダッシュボード
- 記事、ウェブページ、コンテンツデータまたはカスタムオブジェクトの一覧・編集画面
- プラグイン設定画面
- 挿入コードが対象とする固有の画面
注意事項と制限事項
- 設定内容はエスケープされたテキストとしてではなく、管理画面のソースコードとして実行されます。信頼できる管理者だけが変更してください。
- JavaScriptの構文エラーや広すぎるCSSセレクターは、管理画面全体の表示・操作に影響します。変更前のコードを保存し、検証環境で確認してください。
- 外部ファイルを読み込む場合は、URL、配信元の可用性、CMS管理画面のセキュリティ設定を確認してください。
- 特定画面だけを選ぶ設定、コードの版管理、変更履歴、ロールバック機能はありません。
myAdminStyleVarsは管理画面用です。公開テンプレートから使用する変数ではありません。
