AllCreator - オールクリエイター



オールクリエイター株式会社―モバイルサイトに強いテクニカルディレクターのプロ集団

 
NetCommonsのデザイン関連のハックをしつつ、役に立ちそうな情報を発信するページです。
藤原が担当しています。藤原自身が勉強中の身ゆえ、一度掲載した記事でも予告無く訂正、削除されることがあります。ご了承下さい。
(お断り)ここでの記事やプログラム、設定の例は、なにものも保証するものではありません。お試しになる場合、必ず、皆様の自己責任のもとでお試しください。
記事に対する誤記のご指摘、新たなアイデアなど、皆様からのコメントお待ちしています。
コメントを記入するには会員登録(無料)が必要となります。お手数ですが登録のお手続きをお願いします。
※お知らせ: 登録完了は管理者の承認後となります。あしからずご了承下さい。
 

NetCommonsデザインのツボ

NetCommonsデザインのツボ
12345
2012/10/29

ブロックテーマとアイコン...そしてバグ

Tweet ThisSend to Facebook | by:藤原
NetCommonsはブロックテーマとページテーマがあるのは皆さんご存知ですね。
また、NetCommonsはシステムにいろいろな色のアイコンが用意されていることも、すでにご存じかと思います。
デフォルトの灰色やピンク、オレンジ、ブルーなど多彩に用意されていますよね。

私はNetCommonsのデザイン講座で、icon_color.iniを設定しておくことで、自分が作成したブロックテーマが使用するアイコンカラーを指定できますよ、ということを話しています。
ピンクっぽいブロックテーマを作成したときは、icon_color.iniにpinkを指定しておくだけで、いくつかのモジュールで使用されているアイコンがピンク色になります。

これだけでも結構便利なんですが、自分独自のアイコン画像を用意して、自作ブロックテーマ内では自作アイコンを使わせることもできます。
まずは、NetCommonsで用意されているアイコン画像と同じファイル名で画像を用意しておきます。
次に自分が作成したブロックテーマのimagesフォルダ内にicons/ブロックサブフォルダを作成して、そこに、先ほど作成しておいた画像を配置するだけ!

これで、そのブロックを使用しているところだけ自作アイコンが使われるようになります。

=======

ところが!
この機能を利用して、独自のアイコンデザインのブロックを用意したところ、NetCommonsの潜在バグをひとつ見つけてしまいました。

こうやって用意されたアイコン画像、普通はちゃんと用意したものが使われるのですが、「印刷」アイコンが思い通りに出てきてくれない。。。
用意しているのに、相変わらずデフォルトの印刷アイコン(小さなプリンターの画像です)が出てきてしまう.......

印刷ボタンは、モジュールが「この画面は印刷対応にしてね」と設定している場合、自動的にモジュールの右上に付け加えられます。
印刷ボタン用のHTMLを組み立てているのは、Filter_View.class.phpの137行目あたりからの28行分なんですが、このときはまだ処理しているブロックのテーマを取得していないんです。

テーマ名が保存されているSmartyの変数に残っているのは、前回処理したブロックのテーマ名。
実際に処理中ブロックのテーマを取得し直しているのは403行目あたりの
if($themeStr != "") {//ここでブロックのテーマ名、icon_colorが設定されている
$themeStr = basename($themeStr);
list($block_color, $themeDir, $themeCssPath) = $common->themeAssign($renderer, $block_id, $themeStr);
}
この処理。

ここで使用しているブロック名とかが分かるんだから、印刷ボタンを用意するのはこの処理の後でないと、ブロックに設定された正しいボタンが持ってこれないんですよ。

仕方ないので、印刷ボタン組み立て処理の位置を、この処理の後の場所へ移動させました。
これで予定通り可愛い印刷ボタンがブロックに登場できました!

皆さんも、独自アイコンを用意されるときは、この問題気をつけてくださいね。

09:40 | 投票する | 投票数(2) | コメント(0) | 応用:その他
12345