AllCreator - オールクリエイター



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

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

NetCommonsデザインのツボ

NetCommonsデザインのツボ
12345
2011/09/22

お知らせモジュールを使って画像をPOPUP

Tweet ThisSend to Facebook | by:藤原
この間、Facebookで質問を受けてお答えした話です。

なんでもWYSISWYGエディタで画像を差し込み、ページサイズの都合上、小さな画像に縮めて表示したい、それはWYSISWYGエディタの画像の詳細設定で簡単にできる、
しかし、本来の大きな画像も見せたい、なので、画像をクリックしたら本来のサイズでPOPUPさせたい....

もしかしたら結構ある要望なんでしょうかね。
NetCommonsの汎用DBでもこのような機能を実装していますし。

この方はjqueryで組み込みを考えてらっしゃったようなのですが
いかんせんNetCommonsはprototype.js、バッティングの解除とかいろいろ考えていると頭痛くなっちゃいます。

NetCommonsのWYSISWYGエディタをつかい、かつ、HTMLをかける権限を持っているならもっと楽な方法があります。
お知らせモジュールに画像をUPしたあと、その画像のimgタグを
 <a href="#" title="" onclick="commonCls.showPopupImageFullScale(this);return false;"></a>
で囲む方法です

ここをクリックしてみてね!



このjavascriptの関数、NetCommonsが使っているjavascript共通ライブラリに実装されているものなので、なんの心配もなく使用できます。
javascriptに多少の心得のある方は是非お試しください。


※とはいえ、あまり多用して1ページ内にこの手の画像をたくさん埋め込むと、当然、ページが重くなりますからご注意を。
NetCommonsのWYSISWYGエディタの画像詳細設定で画像を小さくしても、実際ロードされる画像は元画像のバイト数ですから!

20:56 | 投票する | 投票数(1) | コメント(0) | 応用:アイディア集
2011/03/10

そのCSS記述、NetCommonsではご法度でした

Tweet ThisSend to Facebook | by:藤原
久しぶりに、NetCommonsのテーマ作成でドジを踏んでしまいました。
皆さまが同じところにハマらないよう、あえてお恥ずかしい話をひとつ。

ご存じのとおり、CSSの記述で、カラーを指定する場合、
#FFFFFF の代わりに #FFF と書くことができます。
R,G,Bがそれぞれゾロ目の数値の場合は、3桁に省略することができるんですね。

NetCommonsのテーマのCSSでも同様です。だって普通のCSSファイルとほぼ同等のものですから。

ところが!!
これをやってはいけない場面があったのです。

NetCommonsの主坦としてページの作成権限をもったことのある人なら、編集ができるブロックにマウスを入れた瞬間、対象のブロックがフワーッと色がフラッシュするのを体験されていると思います。
これは、Javascriptで、対象ブロックのbackground-colorを取り出し、その色を一瞬ハイライト色に変え、あと、だんだん、もとのbackground-colorに近付けて戻していく、という処理をやっています。

このとき、background-colorを例の3桁表記にしていると、IE7,IE8では「元のbackground-colorは『3桁+000』の色」として誤認識するみたいなんです。

3桁表記でバックの色指定をして、IEで編集しようとすると、わらわらとブロックの色がとんでもない色に....,.絵文字:絶望
いやー焦りました。

ということで、NetCommonsのCSS記述時は、background-colorは6ケタで!がお約束のようです。。。。
皆さまもお気を付け下さい。

追記:
NetCommonsの...と書いてしまいましたが、これっておそらく、こう云うJavascript処理では共通的に発生することなんでしょうね。
Javascriptで色変え処理とかをするような場合は6ケタ表記が無難なんでしょうね。

18:19 | 投票する | 投票数(0) | コメント(0) | 応用:その他
2011/02/23

テーマにJavascriptは埋め込めるのか

Tweet ThisSend to Facebook | by:藤原
NetCommonsのカスタマイズをしている方々の中で最も多い質問のひとつに『「jQuery」を組み込むにはどうしたらいいですか?』といったものがあります。
皆さん、Webページに動きをつけたいんですよねぇ。
将来的にはHTML5がフォローするんでしょうけど、一般的になるまではまだまだかかるでしょうし。

ということで試してみました。
ブロックタイトルバーをクリックしたら本体部分が開いたり閉じたりするブラインドオープン/クローズブロックテーマ
カレンダーで「1日分表示タイプの今日の予定」がぴらーっと開いたときは、ちょっと嬉しかったですね。こんなの欲しかったのですよ。

この動きはscript.aculo.usのeffect.jsを組みこんで実現しています。
NetCommonsのJavascriptはprototype.jsがベースにあるので、jQueryよりも組み込み易いように感じたので。
ただ、バージョンには気をつけないと、最新のScript.aculo.usでは動作しませんのでご注意を。

組み込みは、ちょっといいのかな?と思いながら、ブロックテーマのファイルセットの中にjsフォルダを作成し、そこにeffect.jsを配置、システムでDB上に管理されるJSファイルの一部としてeffect.jsを組み込ませる、という手法を取りました。
そしてブロックテーマのテンプレートからDBに管理されているJSデータをダウンロードするようにしています。
テーマフォルダの中にJSファイルを置いてもちゃんと取り込んでくれるんですねー。
でも多分、テーマの中のJSを読み込んで管理してしまうのは、想定外のことではないかしら絵文字:困った 冷汗

デモサイトにも書きましたが、現状ではこの方法はあまりよろしくないんです。
なぜなら、配置したJSファイルは「このブロックテーマのJS」という形では管理されず、「テーマのJS」という形で管理されるから。
いろんなテーマごとにJSファイルを置いても、それら一式読み込まれちゃうんで、下手するととんでもないバッティングが発生します。

これ、知っている人は知っている動作ですね。
NetCommonsでは、Javascrptは基本的にはモジュール単位で管理されているだけ。モジュールでテンプレートを複数作って分けたとしてもJavascriptは一括でまとめて読み込まれてしまう、というものです。
テーマに付属したJSも、これに類似した動作となっているんですね。

もしも「JSファイルはテンプレートごとに読み込む」というような動きに変わったら、
きっと「テーマごとにJSを埋め込む」みたいなカスタマイズもできるのでは?
などと夢想中です。

あぁでもそうなったらそうなったで、「このテーマとこのテーマではバッティングするから一緒に使っちゃダメ」とか小難しい状態になってしまうのかしらん。
それはそれでいやかも。
そう考えると、やっぱりシステム系のフォルダにちゃんとeffect.jsを置いて、使いたいテーマに随意に使ってもらう、って管理された形の方がいいのかな。

12:00 | 投票する | 投票数(0) | コメント(0) | 応用:アイディア集
2010/10/14

2.3.1.0でのヘッダーメニュー非表示方法

Tweet ThisSend to Facebook | by:藤原
公式サイトのフォーラムに「ヘッダーメニューを非表示にする方法で...」という書き込みがありました。
リンクも張っておきますが、要約しますと
「NetCommons実践カスタマイズ」P224 
18.ヘッダーメニューを非表示にする方法を試した。
日誌モジュールで前の5件を見るために、数字をクリックしてみても画面が変わらない。
IEからだとエラーを返される。
ログインしていれば、問題なく見られる...

ということだそうで、これは早速調べてみねば。
2.3.0.0までは、確かに実践本の通りで問題なく動作。
しかし、2.3.1.0からはログインしていない状態だと、フォーラムの書き込みのとおり、javascriptで動くところがことごとくエラーになりました。IEに限りません。

これは間違いなく2.3.1.0の改修で発生している現象のようです。

08:30 | 投票する | 投票数(2) | コメント(0) | 応用:HTML
2010/01/20

モジュールのCSS

Tweet ThisSend to Facebook | by:藤原
NetCommonsのスタイルテーマの設定などで、ページを作っていくと、ふと気になるときがありませんか?
例えば日誌モジュール、日付や、日付の前にインデックスとして置かれているアイコンが青緑に固定されています。

template作り変えるほどではないけれど、赤でイメージ統一したページのとき、『あぁ、この部分の色を変えたい...』などとなったことは?
こんな感じです↓

周りが赤だけど中のキーカラーは青緑

こんなとき、
じゃあ、赤用の日誌デザインをつくろう!となることが多いのではないでしょうか。

通常、モジュールのスタイルを増やす、となると
1.新しいtemplateをつくる
2.新しいtemplateに合わせたCSSを作る
3.ブロック配置した日誌モジュールのテンプレートを新しいのに切り替える
となります。

まぁ、これはこれでOKなんですけど。
ブロック配置した日誌モジュールの、ブロックスタイルを赤からオレンジに変えたら?
じゃあ、オレンジ用のtemplateを作って、新しいCSSを作って。。。。
同じことを全部しなくてはなりません。

実は、NetCommonsの拡張機能で、とても便利なものがあります。
モジュールのCSSはブロックやページスタイルのテーマカラーに合わせたものを自動的に表示してくれるんです。
あ、CSSを作るのは作らないといけませんけどね絵文字:うーん 苦笑

でも、その技を使えば上記の手順の1と3はやらなくて済むんです!
数が増えると、この手間省きは大きいですね。

手順は以下の通り。
1.日誌モジュールの場合は webapp/modules/journal/view/maple.iniの書き換えを行います。HeaderIncセクションのcss_globalの値の$temp_nameを$theme_nameに変更します
この手順は1回だけです。CSS増やすたびにやったりしなくてOKです。

2.対応したいスタイルテーマを決めます。
例えば、上記の例でいくとclassicのredです。
webapp/modules/journal/files/css ディレクトリのdefaultをコピーしてredというディレクトリを作ります。
3.redディレクトリの中のCSSを、自分の赤イメージに合わせて変更します。

あ、しまった。詳しく書いたら手順の数がさっきのものとおんなじになっちゃったですが、2,3の手順は、前者のやり方でも付いて回りますから、「手順数おんなじじゃない」とか誤解の無いようお願いします。

さてさて、赤用のスタイルシートを書いて、モジュールの更新をかけてみます。
先ほどの日誌ブロック、何もしなくても新しいCSSが適応されているはずです。
色があってます

とりあえず、日付の色とインデックスアイコンを変えてみました。
本当はもっと凝って、リンク色なんかも工夫を入れたいところですよね。

そして、色違いを揃えていけば、ページ(ブロック)テーマを変えれば、モジュールのデザインも勝手に変わってくれるようになります!


◆注意
この方法、デメリットがあります。
HeaderIncの定義を変えてしまうので、バージョンアップのとき、上書きされるおそれがあります。
そして、テーマのほうにあわせろ、という設定なので、逆にテンプレートに合わせろ、という動きがなされなくなってしまいます。
そして、致命傷ですが。2.2.0.1ではバグがあって、日誌モジュールでは、記事の表示を切り替えるとCSSがdefaultのものに戻ってしまいます。
これは簡単なバグのためで、簡単に直せますから、コード触れる方は、ご自分で修正可能です。
待っていれば、次期バージョンでリリースされるとのことですから、気長に待つのもありですね。


11:13 | 投票する | 投票数(0) | コメント(0) | 応用:css
12345