a-blog cms のベンチマークモードの活用法
NEW
NEW
a-blog cms のユーザーアイコンは、何も設定しないと user0.png 〜 user9.png で uid の下一桁で 10色のアイコンが自動で振られます。ユーザーの管理画面でアイコンを設定する人も少なくデフォルトのアイコンのままってことが多いんじゃないかと思ったりする部分を識別しやすいように自動でアイコンが設定されたらいいなって思って今回のカスタマイズ「Gravatarのアイコンを反映してみる」という事にチャレンジしてみました。
Wikipedia によると
Gravatar(グラバター)は、サイトを越えて利用できるアバターを作成できるサービス。トム・プレストン・ワーナーが開発した。2007年にAutomatticが買収し、ブログのプラットフォームであるWordPress.comに統合されている。
と書かれている。いつ作られたがかかれてないですが、今は WordPress.com のアカウントと統合されているのかな?
歴史を感じますね。私の SNSアイコンは 3世代あり、それがこの Gravatar には登録されているようです。 (今のヤツ、ルップルちゃん付き、mixi にも設定されているアイコンの順)
ちょっと説明を全部書くのが難しそうなので、demo@beginner でテーマを用意してみました。まずはダウンロードください。
管理画面の左側のアイコン部分になります。
(エントリー作成)ボタンの上にあるアイコン部分の設定になります。
ユーザー一覧のアイコンのテンプレートになります。
ユーザー詳細ページのアイコンのテンプレートになります。少し悩むのが、Gravatar のものなのかを表示させることができないことです。苦肉の策として、Gravatar のアイコンの時には画像を削除するチェックボックスを表示させないようにしました。この画像は消せないという意味になります。
themes_system__layout のディレクトリにある admin.html は、themes/system/_layout を上書きするようにファイルになります。
3.0.28 のファイルに @section を追加しています。 将来的には今後のバージョンに入ったらいいなって思って @extends するように書いています。
Gravatar はメールアドレスを md5 で変換した文字列を利用します。 a-blog cms のログインユーザーのメールアドレスは %{SESSION_USER_MAIL} で表示は可能ですが、このメールアドレスを md5 で変換しないといけないので、%{SESSION_USER_MAIL_MD5} のようなものをオリジナルグローバル変数を作成します。
hook.php の最初の方に
use ACMS_RAM;
を書いて、
public function extendsGlobalVars(&$globalVars) { if ( SUID ) { $globalVars->set('SESSION_USER_MAIL_MD5', md5(ACMS_RAM::userMail(SUID))); $globalVars->set('GRAVATAR',"true"); # この行を消すと Gravatar 利用しないようになります } }
とする事で、メールアドレスを md5ハッシュ化することができます。
kazumich@appleple.com が 28f266d6006293d4b53e365e3f3b57ee になります。
ついでに %{GRAVATAR} に true を設定しておいて、場合によってはこの部分を消すとテンプレート上で Gravatar を使わない設定になるように IFブロックを書いてあります。
extension/acms/Hook.php をカスタマイズする場合には以下の設定 HOOK_ENABLE を 1 に設定を変更する必要があります。
define('HOOK_ENABLE', 1);
上記の実装をコピーすると、Gravatar のアイコンが表示されるようになります。会員制サイトなどには、効果のある実装になるのではないかと思います。 次にリリースする Ver. 3.1 では会員制サイトの機能のテコ入れをしていますので、もしかするとコレも標準的な実装になるかもしれませんね。
Ver. 3.1 で themes_system__layout/admin.html の修正分が反映されることになりました。
今回は多店舗展開をしているウェブサイトで新店を追加する際にできるだけ簡単にサイトの設定を完了させるための設定を考えてみます。
bid | URL | ブログ名 |
---|---|---|
1 | https://www.appleple.com/ | HOME |
2 | https://www.appleple.com/shop/ | ショップ一覧 |
3 | https://www.appleple.com/tokyo/ | 東京店 |
4 | https://www.appleple.com/osaka/ | 大阪店 |
初期の状態としては上記のようになります。 URL は架空のもので実際には 404 です。 ここに bid:5 https://www.appleple.com/nagoya/ 名古屋店を追加していきます。
ここで問題になりそうなのは、このコンフィグセットを「店舗用」を選択する 必要がある事です。このコンフィグセットを選択せず「デフォルト」のままだった際には正しいテーマが設定されず blog テーマになってしまったり店舗用のコンフィグが設定されない事になります。
こうならないようにするためには「店舗追加時の設定マニュアル」を用意する必要が出てきます。できる事なら、このようなマニュアルは作らずに運用できるようにしたい。
店舗一覧が表示される https://www.appleple.com/shop/ の時に上記を表示させます。
themes/*作成しているテーマ*/admin/action.html を
@extends("/admin/_layouts/action.html") @section("extra") <!-- BEGIN_IF [%{BID}/eq/2] --> <form action="/bid/2/admin/blog_edit/" method="post" class="acms-admin-form"> 新規店舗: <input type="text" name="name" value="" placeholder="ショップ名"> <input type="hidden" name="blog[]" value="name"> <input type="text" name="code" value="" placeholder="shopname"> <input type="hidden" name="blog[]" value="code"> <input type="hidden" name="config_set_id" value="1"> <input type="hidden" name="blog[]" value="config_set_id"> <input type="hidden" name="status" value="open"> <input type="hidden" name="blog[]" value="status"> <input type="hidden" name="domain" value="%{DOMAIN}"> <input type="hidden" name="blog[]" value="domain"> <input type="hidden" name="indexing" value="on"> <input type="hidden" name="blog[]" value="indexing"> <input type="submit" name="ACMS_POST_Blog_Insert" value="店舗作成" class="acms-admin-btn-admin acms-admin-btn-admin-primary" onclick="javascript:return confirm('新規店舗子ブログを追加します。よろしいですか?')"> </form> <!-- END_IF --> @endsection
こんな感じに設定します。4.5行目の 2 は /shop/ の ブログID になりますので、環境によって変わってきます。また、13行目の name="config_set_id" value="1" についても、店舗用のコンフィグセットID が 1 なのでこのような設定にしてあります。
誰にでも思いつく簡単な管理画面の実装になります。 a-blog cms の管理画面のカスタマイズは、簡単な HTML をどう書くかだけになります。
https://www.appleple.com/shop/ のカテゴリー設定で、
CID | カテゴリー名 | カテゴリーコード | グローバル化 |
---|---|---|---|
3 | お知らせ | news | チェック |
4 | スタッフ紹介 | staff | チェック |
5 | アクセス | access | チェック |
のように設定をするとします。 a-blog cms の グローバル化 のチェックは下層の子ブログで利用できるようにする設定 になります。店舗毎に自由にカテゴリーを設定するのではなく、店舗毎のブログの1つ上の階層でカテゴリーを作ることで子ブログを作成するだけで、https://www.appleple.com/nagoya/news/ という「お知らせ一覧」のページを作ることができるようになります。
このグローバルカテゴリーがあることで、上の階層で店舗の news をまとめた一覧を表示させることが簡単に行うことができます。