すこしでも役に立てばいいなぁ
ペコの裏話。

ペコデザインのオフィス内で話している
役に立つことから、無駄なことまで
いろんなことを、公開してみようと思いました。

Category List

CMSのログイン画面編集の手順 #ablog_cms
才木ケイ

webメディアプランナー
才木ケイ

a-blog cmsでは更新のしやすさや、レイアウトの変更、表示されている場所をクリックし編集できるダイレクト編集機能など更新するユーザーの為の優しい機能がたくさんあります。

そんなお手軽な部分だけでなく、「管理画面のここをどうにかしたい」「更新する際にこのボタンはいらない」などCMSの管理画面の部分も割と簡単に編集・変更できるのも特徴です!

そこで今回自社運営サイトのログイン画面を変更する機会があったので、a-blog cmsの管理画面への入り口「ログインページ」の編集・変更の手順を紹介していきます。
今回はCMSの導入方法などは全部飛ばしていますのでご了承下さい!
CMSのバージョンは2.6.1.4となっております。


こんな感じに変えたい!


これを


こうしたいと思います。
サイトに合った変更を施すだけでログイン時のテンションが上がってきますよね!
では作業に入ります!

ログイン画面を表示させているファイルはどこ?

a-blog cmsを利用している方はよく見る画面だと思いますが、これがログイン画面です。


ログイン画面を表示しているファイルは契約しているサーバーのa-blog cmsを置いている場所から

/themes/system/login.html

このファイルで表示しています。
直接このファイルを編集してしまうとa-blog cmsのバージョンアップデート等を行ったときに上書きされて消えてしまうので現在使用している(/themes)のフォルダの直下に入れて編集をしていきます。

themesフォルダの直下に移動したところでお使いのエディターでlogin.htmlを開いてみましょう。
開くとこんな感じになっていると思います。


ちゃんとthemesに置いたlogin.htmlが適応されているか確認するためにのすぐ下に適当な文字を入れて更新してみて下さい。


左上の方に表示されてたでしょうか?

これでログイン画面を編集する準備は整ったので、実際に中身を見ていきましょう!

ログイン画面の中身はどうなってる?

login.htmlはこのファイル単体でログイン時の表示を全て行っているので、場合による条件分岐がたくさんあり少しごちゃっとしています。
一般的にはログイン画面を度々更新するという事はあまりないと思うので、わかりやすいコメントアウトを残しておく程度で大丈夫だと思います。

login.html内部には下の順番でコンテンツが並んでいます。

  • head部分
  • ログイン部分
  • 読者登録部分
  • パスワードのリセット部分

上から順番に解説していきましょう。

head部分

ここの特徴は検索で表示されたりしないようmetaタグでnoindexが指定してあったり、デフォルトのcssが指定してあるぐらいです。
ログイン画面の見た目を編集したい場合はここで新しいcssファイルを読み込ませて、そのcssファイルを更新していくのが良いと思われます。

ログイン部分

ここでログインの部分です。htmlファイルで言うと24行目にあるから96行目にあるがログイン時の表示を担当しています。

25行目にある一つ目の条件分岐はa-blog cms 2.7.1.4に付属されているsimple2016または、site2016というテーマを使っていた場合のログインヘッダーの画像の表示用分岐になります。
それ以外のテーマを使っているときは分岐によりa-blog cmsのロゴが表示されますね!

<!-- BEGIN_MODULE Blog_Field -->
	<!-- BEGIN_IF [{loginHeaderImage@path}/nem/] -->
		<!-- BEGIN loginHeaderImage:veil -->
			<img class="acms-admin-loginHeaderImage" src="%{ARCHIVES_DIR}{loginHeaderImage@path}" alt="%{BLOG_NAME}">
		<!-- END loginHeaderImage:veil -->
	<!-- ELSE --><img class="acms-admin-loginHeaderImage" src="/images/ablogcms_login.gif" alt="a-blog cms">
	<!-- END_IF -->
<!-- END_MODULE Blog_Field -->

もし何か画像を用意している場合はこの25行目を全て消して新しくimgタグを追加したら良いと思います。

独自にカスタムフィールドで画像を追加している場合もこの部分を上書きすれば良いでしょう。

これでロゴの変更に成功したと思います!

その下28行目から94行目は上から順に

  1. ログインサイトの情報
  2. ログインエラーメッセージ集
  3. IDとパスワードinput部分
  4. パスワードをお忘れですか?ボタン
  5. 各種SNSログインログインボタン
  6. 新規の読者登録ボタン&サイトに戻る

となっています。

<div class="acms-admin-loginBox clearfix">
	<div class="acms-admin-siteImageText"><span class="acms-admin-label" style="background-color:%{BLOG_THEME_COLOR};">%{BLOG_NAME}</span>&nbsp;<span class="acms-admin-label">ログイン</span>
	</div>
	<div class="acms-admin-form">
		<!-- BEGIN_IF [%{login}/eq/failed] -->
		<label class="validator-result-0 acms-admin-alert acms-admin-alert-danger">ログインに失敗しました</label>
		<!-- ELSE_IF [%{auth}/eq/failed] -->
		<label class="validator-result-0 acms-admin-alert acms-admin-alert-danger">認証に失敗しました</label>
		<!-- ELSE_IF [%{auth}/eq/double] -->
		<label class="validator-result-0 acms-admin-alert acms-admin-alert-danger">アカウントが既に存在します</label>
		<!-- ELSE_IF [%{login}/eq/restriction] -->
		<label class="validator-result-0 acms-admin-alert acms-admin-alert-danger">お使いの端末(ブラウザ)からはログインが禁止されています。<br>管理者にお問い合わせ下さい。</label>
		<!-- END_IF -->
		<label class="validator-result-{mail:validator#restriction} acms-admin-alert acms-admin-alert-danger">お使いの端末(ブラウザ)からはログインが禁止されています。<br>管理者にお問い合わせ下さい。</label>
		<label class="validator-result-{pass:validator#auth} acms-admin-alert acms-admin-alert-danger">ユーザーIDまたはパスワードが違います。</label>
		<label class="acms-admin-form-block acms-admin-clear">ユーザーID / メールアドレス</label>
		<input type="text" name="mail" value="{mail}" class="acms-admin-form-large js-ready-focus acms-admin-form-block validator-result-{pass:validator#auth} acms-admin-sp-form-top" id="input-text-mail" placeholder="" />
		<input type="hidden" name="login[]" value="mail" />
		<label class="acms-admin-form-block">パスワード</label>
		<input type="password" name="pass" value="{pass}"  class="acms-admin-form-large acms-admin-form-block validator-result-{pass:validator#auth} acms-admin-sp-form-bottom" placeholder="" />
		<input type="hidden" name="login[]" value="pass" />
		<input type="hidden" name="redirect" value="%{redirect}" />
		<input type="hidden" name="login[]" value="redirect" />
		<input type="hidden" name="persistent" value="on" />
		<input type="hidden" name="login[]" value="persistent" />
	</div>
	<p class="loginAction">
		<button type="submit" class="acms-admin-btn-admin acms-admin-btn-admin-primary acms-admin-btn-block acms-admin-btn-large" name="ACMS_POST_Login_Auth">ログイン</button>
	</p>
	<p><a href="/login/alt/remind/">パスワードをお忘れですか?</a></p>

	<!-- BEGIN_MODULE Touch_SnsLogin --><!-- BEGIN_MODULE Admin_User_Sns -->
		<p class="acms-admin-border"><span class="acms-admin-borderText acms-admin-login-text">もしくは</span></p>
		<div class="acms-admin-grid"><!-- BEGIN facebook -->
			<p class="loginAction acms-admin-btn-snsloginContainer">
				<span class="acms-admin-btn-snsimage acms-admin-btn-snsimage-facebook">
					<span class="acms-admin-icon acms-admin-icon-facebook"></span>
				</span>
				<button type="submit" class="acms-admin-btn-admin acms-admin-btn-facebooklogin acms-admin-btn-block acms-admin-btn-large acms-admin-btn-snslogin" name="ACMS_POST_Api_Facebook_OAuth_Login"><span class="acms-admin-hide-visually">Facebook</span>ログイン</button>
			</p><!-- END facebook --><!-- BEGIN twitter -->

			<p class="loginAction acms-admin-btn-snsloginContainer">
				<span class="acms-admin-btn-snsimage acms-admin-btn-snsimage-twitter">
					<span class="acms-admin-icon acms-admin-icon-twitter"></span>
				</span>
				<button type="submit" class="acms-admin-btn-admin acms-admin-btn-twitterlogin acms-admin-btn-block acms-admin-btn-large acms-admin-btn-snslogin" name="ACMS_POST_Api_Twitter_OAuth_Login"><span class="acms-admin-hide-visually">Twitter</span>ログイン</button>
			</p><!-- END twitter --><!-- BEGIN google -->

			<p class="loginAction acms-admin-btn-snsloginContainer">
				<span class="acms-admin-btn-snsimage acms-admin-btn-snsimage-google">
					<span class="acms-admin-icon acms-admin-icon-google-login"><img src="/themes/system/images/login/icon_google.svg" width="22" height="22" alt="Google"></span>
				</span>
				<button type="submit" name="ACMS_POST_Api_Google_OAuth_Login" class="acms-admin-btn-admin acms-admin-btn-googlelogin acms-admin-btn-block acms-admin-btn-large acms-admin-btn-snslogin">ログイン</button>
			</p><!-- END google -->
		</div>
	<!-- END_MODULE Admin_User_Sns --><!-- END_MODULE Touch_SnsLogin -->
	<input type="hidden" name="type" value="login" />
</div>
<!-- BEGIN subscribeLink -->
	<div class="acms-admin-loginBox-bottom">
		<div class="acms-admin-grid">
			<p class="acms-admin-col-6">
				<a href="/login/alt/subscribe/" class="acms-admin-btn-flat acms-admin-btn-block">新規の読者登録はこちら</a>
			</p>
			<p class="acms-admin-col-6">
				<a href="%{BLOG_URL}" class="acms-admin-btn-flat acms-admin-btn-block">サイトに戻る</a>
			</p>
		</div>
	</div>
<!-- END subscribeLink -->

エラーメッセージの文言を変えたり、inputにplaceholder属性を追加したりと色々出来ると思います。
ビジュアルを変える場合はcssの読み込みを消して新規で作ったり、現在使われているクラスを消してみたりしていけば良いと思います。

ビジュアルを変える際のおすすめはa-blog cmsのcssは消さずに残しておくことです。

バリデータを使ったエラーメッセージの表示非表示の変更jQueryを使い自動でフォームにフォーカスなど割りと便利な機能が含まれており、ビジュアル面以外は適応させておいたほうがいいです。

エラーメッセージの表示非表示にバリデータを使った表示非表示の変更の機能
class名のvalidator-result-{oooo}の部分で機能しています
jQueryを使い自動でフォームにフォーカスの機能
js-ready-focusというclass名があるタグで機能しています。

読者登録部分

<!-- BEGIN subscribe -->
	<div class="acms-admin-titleBox"><!-- BEGIN_MODULE Blog_Field -->
		<!-- BEGIN_IF [{loginHeaderImage@path}/nem/] -->
			<!-- BEGIN loginHeaderImage:veil -->
			<img class="acms-admin-loginHeaderImage" src="%{ARCHIVES_DIR}{loginHeaderImage@path}" alt="%{BLOG_NAME}">
			<!-- END loginHeaderImage:veil -->
		<!-- ELSE -->
			<img class="acms-admin-loginHeaderImage" src="/images/ablogcms_login.gif" alt="a-blog cms">
		<!-- END_IF -->
	<!-- END_MODULE Blog_Field --></div>
	<div class="acms-admin-loginBox">
		<div class="acms-admin-siteImageText">
			<span class="acms-admin-label" style="background-color:%{BLOG_THEME_COLOR};">%{BLOG_NAME}</span>&nbsp;<span class="acms-admin-label">新規読者登録</span>
		</div>
		<!-- BEGIN sendMsg#before -->
			<p class="acms-admin-login-text">お名前とメールアドレスを登録いただくと指定されたメールアドレスに確認メールが送信されます。メールの内容の従って登録をしてください。</p>
		<!-- END sendMsg#before -->
		<!-- BEGIN sendMsg#after -->
			<p class="acms-admin-alert acms-admin-alert-info">入力されたメールアドレス宛に、確認用URLをパスワードを記載したメールを送信しました。</p>
		<!-- END sendMsg#after -->
		<label for="input-text-mail" class="validator-result-{name:validator#required} acms-admin-alert acms-admin-alert-danger">名前が入力されていません。</label>
		<label for="input-text-mail" class="validator-result-{mail:validator#required} acms-admin-alert acms-admin-alert-danger">メールアドレスが入力されていません。</label>
		<label for="input-text-mail" class="validator-result-{mail:validator#email} acms-admin-alert acms-admin-alert-danger">不正なメールアドレスです。</label>
		<label for="input-text-mail" class="validator-result-{mail:validator#doubleMail} acms-admin-alert acms-admin-alert-danger">すでに登録されているメールアドレスです。</label>
		<label for="input-text-mail" class="validator-result-{mail:validator#send} acms-admin-alert acms-admin-alert-danger">メールの送信に失敗しました。システムの設定に問題があります。システムの管理者にお問い合わせください。</label>
		<!-- BEGIN_IF [{step}/eq/step/_or_/{step}/eq/reapply] -->
			<!-- 入力画面の時ここが出力 -->
		<!-- ELSE_IF [{step}/eq/result] -->
			<!-- 完了画面の時ここが出力 -->
		<!-- END_IF -->
		<div class="acms-admin-form">
			<label class="acms-admin-form-block acms-admin-clear">名前</label>
			<input type="text" name="name" value="{name}" class="acms-admin-form-large  acms-admin-form-block validator-result-{name:validator#required} acms-admin-sp-form-top" placeholder="" />
			<input type="hidden" name="user[]" value="name" />
			<input type="hidden" name="name:validator#required" />
			<label class="acms-admin-form-block acms-admin-clear">メールアドレス</label>
			<input type="text" name="mail" value="{mail}" class="acms-admin-form-large  acms-admin-form-block validator-result-{mail:validator#required} validator-result-{mail:validator#email} validator-result-{mail:validator#doubleMail} validator-result-{mail:validator#send} acms-admin-sp-form-bottom" placeholder="" />
			<input type="hidden" name="user[]" value="mail" />
			<input type="hidden" name="mail:validator#required" />
			<input type="hidden" name="mail:validator#email" />
			<input type="hidden" name="mail:validator#doubleMail" />
			<!-- <label class="acms-admin-form-block acms-admin-clear">メールマガジン</label>
				<input type="hidden" name="mail_magazine" value="off" />
				<label class="acms-admin-form-checkbox" for="input-checkbox-mail_magazine">
				<input type="checkbox" name="mail_magazine" value="on"{mail_magazine:checked#on} id="input-checkbox-mail_magazine" />
				<i class="acms-admin-ico-checkbox"></i>
				メールマガジンを受け取る
				</label>
				<input type="hidden" name="user[]" value="mail_magazine" />
				<label class="acms-admin-form-block acms-admin-clear">モバイルメールマガジン</label>
				<input type="hidden" name="mail_mobile_magazine" value="off" />
				<label class="acms-admin-form-checkbox" for="input-checkbox-mail_mobile_magazine">
				<input type="checkbox" name="mail_mobile_magazine" value="on"{mail_mobile_magazine:checked#on} id="input-checkbox-mail_mobile_magazine" />
				<i class="acms-admin-ico-checkbox"></i>
				モバイルメールマガジンを受け取る
				</label>
			<input type="hidden" name="user[]" value="mail_mobile_magazine" /> -->
		</div>
		<!-- BEGIN submit -->
			<p class="loginAction">
				<button type="submit" class="acms-admin-btn-admin acms-admin-btn-admin-primary acms-admin-btn-block acms-admin-btn-large" name="ACMS_POST_Login_Subscribe">読者登録</button>
			</p><!-- BEGIN_MODULE Touch_SnsLogin -->
				<p class="acms-admin-border"><span class="acms-admin-borderText acms-admin-login-text">もしくは</span></p>
				<p class="acms-admin-login-text">SNSアカウントで登録するとワンクリックでログインできます。</p>
				<div class="acms-admin-grid">
					<p class="loginAction acms-admin-btn-snsloginContainer">
						<span class="acms-admin-btn-snsimage acms-admin-btn-snsimage-facebook">
							<span class="acms-admin-icon acms-admin-icon-facebook"></span>
						</span>
						<button type="submit" class="acms-admin-btn-admin acms-admin-btn-facebooklogin acms-admin-btn-block acms-admin-btn-large acms-admin-btn-snslogin" name="ACMS_POST_Api_Facebook_OAuth_Login">読者登録</button>
					</p>
					<p class="loginAction acms-admin-btn-snsloginContainer">
						<span class="acms-admin-btn-snsimage acms-admin-btn-snsimage-twitter">
							<span class="acms-admin-icon acms-admin-icon-twitter"></span>
						</span>
						<button type="submit" class="acms-admin-btn-admin acms-admin-btn-twitterlogin acms-admin-btn-block acms-admin-btn-large acms-admin-btn-snslogin" name="ACMS_POST_Api_Twitter_OAuth_Login">読者登録</button>
					</p>
					<p class="loginAction acms-admin-btn-snsloginContainer">
						<span class="acms-admin-btn-snsimage acms-admin-btn-snsimage-google">
							<span class="acms-admin-icon acms-admin-icon-google"></span>
						</span>
						<button type="submit" name="ACMS_POST_Api_Google_OAuth_Login" class="acms-admin-btn-admin acms-admin-btn-googlelogin acms-admin-btn-block acms-admin-btn-large acms-admin-btn-snslogin"><span class="acms-admin-hide-visually">Google</span>読者登録</button>
					</p>
				</div>
		<!-- END_MODULE Touch_SnsLogin -->
		<input type="hidden" name="type" value="signup" />
	<!-- END submit -->
	<div class="acms-admin-grid">
		<p class="loginLink acms-admin-col-6">
			<a href="/login/" class="acms-admin-btn-flat acms-admin-btn-block">ログイン画面に戻る</a>
		</p>
	</div>
</div>
<!-- END subscribe -->

99行目〜187行目
から始まる部分は読者登録用となっています。
管理画面よりユーザー登録の外部申請を受け付けるにチェックを入れた場合表示されるようになります。

パスワードのリセット部分

<!-- BEGIN remind -->
	<div class="acms-admin-titleBox"><!-- BEGIN_MODULE Blog_Field -->
		<!-- BEGIN_IF [{loginHeaderImage@path}/nem/] -->
			<!-- BEGIN loginHeaderImage:veil --><img class="acms-admin-loginHeaderImage" src="%{ARCHIVES_DIR}{loginHeaderImage@path}" alt="%{BLOG_NAME}"><!-- END loginHeaderImage:veil -->
		<!-- ELSE -->
			<img class="acms-admin-loginHeaderImage" src="/images/ablogcms_login.gif" alt="a-blog cms">
		<!-- END_IF -->
	<!-- END_MODULE Blog_Field --></div>
	<div class="acms-admin-loginBox">
		<div class="acms-admin-siteImageText"><span class="acms-admin-label" style="background-color:%{BLOG_THEME_COLOR};">%{BLOG_NAME}</span>&nbsp;<span class="acms-admin-label">パスワードの再発行</span></div>
		<!-- BEGIN sendMsg#before -->
		<p class="acms-admin-alert acms-admin-alert-info">パスワード再発行依頼の確認メールを送信します。</p><!-- END sendMsg#before --><!-- BEGIN sendMsg#after -->
		<p class="acms-admin-alert acms-admin-alert-info">パスワードリセット申請メールを送信しました。</p><!-- END sendMsg#after -->
		<label for="input-text-mail" class="validator-result-{mail:validator#required} acms-admin-alert acms-admin-alert-danger">メールアドレスが入力されていません。</label>
		<label for="input-text-mail" class="validator-result-{mail:validator#exist} acms-admin-alert acms-admin-alert-danger">登録されていないメールアドレスです。</label>
		<label for="input-text-mail" class="validator-result-{mail:validator#send} acms-admin-alert acms-admin-alert-danger">メールの送信に失敗しました。システムの設定に問題があります。システムの管理者にお問い合わせください。</label>
		<!-- BEGIN_IF [{step}/eq/step/_or_/{step}/eq/reapply] -->
			<!-- 入力画面の時ここが出力 -->
		<!-- ELSE_IF [{step}/eq/result] -->
			<!-- 完了画面の時ここが出力 -->
		<!-- END_IF -->
		<div class="acms-admin-form">
			<label class="acms-admin-form-block acms-admin-clear">メールアドレス</label>
			<input type="text" name="mail" value="{mail}" class="acms-admin-form-large js-ready-focus acms-admin-form-block validator-result-{mail:validator#required} validator-result-{mail:validator#exist} validator-result-{mail:validator#send}" id="input-text-mail" placeholder="" />
			<input type="hidden" name="login[]" value="mail" />
			<input type="hidden" name="mail:validator#required" />
			<input type="hidden" name="mail:validator#exist" />
		</div>
		<!-- BEGIN submit -->
			<p class="loginAction">
				<button type="submit" class="acms-admin-btn-admin acms-admin-btn-admin-primary acms-admin-btn-block acms-admin-btn-large" name="ACMS_POST_Login_Remind">再発行</button>
			</p>
		<!-- END submit -->
		<div class="acms-admin-grid">
			<p class="loginLink acms-admin-col-6">
				<a href="/login/" class="acms-admin-btn-flat acms-admin-btn-block">ログイン画面に戻る</a>
			</p>
		</div>
	</div>
<!-- END remind -->

212行目〜248行目
ここでパスワードのリセット時の表示を変更する事が可能です。

まとめ


自社運営サイトでは最終的にこのような感じに仕上がりました!

このページでご紹介した内容でこのように変更していくことができます。
意外と簡単に編集可能なので是非挑戦してみて下さい!


才木ケイ

webメディアプランナー才木ケイ

ベースでリズムを刻むようにキーボードを打ちます。良いパパになれるように仕事もプライベートもがんばっております!