本日Drupal 7の正式版が登場して、オフィシャルサイトよりダウンロードが可能になりました。
早速、ローカル環境(MAPP)にインストールし、併せてDrupal 6のころから使っていたモジュールもいくつか試してみました。
今のところ各モジュールのバージョンは正式なものではなく開発版が多くを占めているので、うまく動作しなかったり、インストールの段階でエラーになったりするものもあります。
ざっくり触ってみたところ、一番印象的なのは管理がしやすくなったところでしょうか。Drupal 6のころはメニューが深く、目的の項目にたどり着くまでが煩わしかったですが、Drupal 7ではメニュー構成も含めて、よく考えられているように思います。
またモジュールのアップデートも管理画面上で行えるので、ずいぶん楽になりました。
そして何より、既に日本語版として利用できるのは非常にありがたいです。翻訳していただいている方々には感謝です。
Drupal本体は正式版となりましたが、主要モジュールの正式版が登場するまではもうしばらくかかると思うので、当面はDrupal 6が活躍しそうです。
drupal.org
ActionScriptで外部のSWFファイルに登録してあるフォントを、動的に埋め込む方法です。
初めにフォント情報をリンケージとして登録するためのSWFを作成します。
新規でflaファイルを作成して、ライブラリパネル上で右クリックから表示されるコンテクストメニューで「新しいフォント…」を選択します。
フォント名を入力して、埋め込みたいフォントと文字を選択します。
ここでのフォント名は後から参照することはないので、自由な名称で構いません。
続いて「ActionScript」タブからリンケージの「アクションスクリプト用に書き出し」にチェックを入れて、クラス名を入力します。
このクラス名は埋め込みの際にActionScriptから参照します。
これでライブラリパネルに、リンケージとしてフォントが登録されました。
この状態でSWFファイルを書き出して、ファイル名を「fonts.swf」としておきます。
次に、作成した外部SWFを読み込み、フォントを埋め込むActionScriptファイルを作成します。
下記のようなスクリプトを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
package { import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLRequest; import flash.system.ApplicationDomain; import flash.text.AntiAliasType; import flash.text.Font; import flash.text.TextField; import flash.text.TextFormat; public class Main extends Sprite { public function Main() { var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); loader.load(new URLRequest("fonts.swf")); function onComplete(event:Event):void { var domain:ApplicationDomain = loader.contentLoaderInfo.applicationDomain; var HelveticaRegular:Class = domain.getDefinition("HelveticaRegular") as Class; var field:TextField = new TextField(); var format:TextFormat = new TextFormat(); var helvetica_regular:Font = new HelveticaRegular(); Font.registerFont(HelveticaRegular); format.font = helvetica_regular.fontName; field.defaultTextFormat = format; field.embedFonts = true; field.antiAliasType = AntiAliasType.ADVANCED; field.text = "Font embedded via external swf file."; stage.addChild(field); } } } } |
上記はドキュメントクラスとして記述した場合の例です。
|
var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); loader.load(new URLRequest("fonts.swf")); |
初めに作成した外部SWFファイルを読み込みます。
|
var domain:ApplicationDomain = loader.contentLoaderInfo.applicationDomain; var HelveticaRegular:Class = domain.getDefinition("HelveticaRegular") as Class; |
外部SWFファイルにリンケージとして登録したフォント(クラス)を利用可能にするために「ApplicationDomain」を登録します。
フォントクラス「HelveticaRegular」として登録します。
|
Font.registerFont(HelveticaRegular); |
先ほど登録したフォントクラスを、グローバルフォントに登録します。
|
format.font = helvetica_regular.fontName; |
フォントクラスから作成したオブジェクトをもとに、テキストフォーマットにフォント名を指定します。
フォントの埋め込みを有効にします。
|
field.antiAliasType = AntiAliasType.ADVANCED; |
フォントクラスから埋め込みの際のテキストフィールドは、アンチエイリアスが「NORMAL」の状態で、あまりきれいではないので「ADVANCED」に変更します。
(追記/2011.12.02)ウィンドウをスクロールの際に、背景もズレてしまう不具合があったので、CSSとJavaScriptの一部を調整しました。
jQueryを使ってモーダルウィンドウを作成します。ウィンドウに表示するコンテンツはjQueryのAjaxで読み込むようにしています。
サンプルはこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link href="common/css/style.css" rel="stylesheet" type="text/css" media="all" /> <script src="common/js/jquery-1.4.4.min.js" type="text/javascript"></script> <script src="common/js/init.js" type="text/javascript"></script> <title>modal window</title> </head> <body> <div id="modal"> <div class="background"></div> <div class="container"></div> </div><!-- modal --> <ul> <li><a href="test-01.html" class="modal">ウィンドウ1</a></li> <li><a href="test-02.html" class="modal">ウィンドウ2</a></li> <li><a href="test-03.html" class="modal">ウィンドウ3</a></li> </ul> </body> </html> |
jQueryを使ってリストのリンクをクリックで「href」のアドレスを参照し、「div#modal div.container」に対してコンテンツを読み込み、表示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
@charset "utf-8"; html, body { height: 100%; margin: 0px; padding: 0px; } div#modal { display: none; position: fixed; width: 100%; height: 100%; } div#modal div.background { position: fixed; width: 100%; height: 100%; background-color: #000000; opacity: 0.75; filter: alpha(opacity=75); -ms-filter: "alpha(opacity=75)"; } div#modal div.container { position: relative; width: 500px; height: 500px; background-color: #ffffff; } |
CSSでは、モーダルウィンドウの背景を黒(#000000)の透明度75%としています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
$(function() { setModal(); }) function setModal() { //HTML読み込み時にモーダルウィンドウの位置をセンターに調整 adjustCenter("div#modal div.container"); //ウィンドウリサイズ時にモーダルウィンドウの位置をセンターに調整 $(window).resize(function() { adjustCenter("div#modal div.container"); }); //背景がクリックされた時にモーダルウィンドウを閉じる $("div#modal div.background").click(function() { displayModal(false); }); //リンクがクリックされた時にAjaxでコンテンツを読み込む $("a.modal").click(function() { $("div#modal div.container").load($(this).attr("href"), data="html", onComplete); return false; }); //コンテンツの読み込み完了時にモーダルウィンドウを開く function onComplete() { displayModal(true); $("div#modal div.container a.close").click(function() { displayModal(false); return false; }); } } //モーダルウィンドウを開く function displayModal(sign) { if (sign) { $("div#modal").fadeIn(500); } else { $("div#modal").fadeOut(250); } } //ウィンドウの位置をセンターに調整 function adjustCenter(target) { var margin_top = ($(window).height()-$(target).height())/2; var margin_left = ($(window).width()-$(target).width())/2; $(target).css({top:margin_top+"px", left:margin_left+"px"}); } |
リンクの「href」のアドレスを参照してコンテンツを読み込み、表示しています。
背景の「div#modal div.background」、またはコンテンツ内の「a.close」をクリックで、モーダルウィンドウを閉じます。
WordPressには通常の投稿以外に、固定ページを作成するためのページ機能があります。
通常の利用では投稿した記事ページとあまり差がないようですが、テンプレートを切り替えることで、ページ機能の使い道の幅が広がります。
ページ機能で作成したページすべてに利用するためのテンプレートは「page.php」となりますが、各ページ個別にテンプレートを切り替えるには、ページスラッグを後に続けて「page-one.php」「page-two.php」となります。
ページ機能テンプレートの本来の使い方は、WordPressの投稿フォームで入力した内容を自由なデザインで表示するためのものですが、WordPressでの入力内容を全く利用せずに、純粋なPHPページを表示するという使い方もあります。
WordPressで用意されているテンプレートタグ「the_title()」「the_content()」を使わないで、直接ページ機能テンプレートに内容を記述していきます。
例えば全画面フラッシュのページなど、投稿フォームでは作成が難しい場合や、他のプログラム用にXML出力ページに有効です。
もちろんページ機能テンプレート内ではWordPressのテンプレートタグも使えるので、より柔軟な静的サイトの作成に応用できます。
jQueryをリサイズイベントを応用して、ページに配置されたDIVボックスをセンターに配置する方法です。
センター配置にはCSSのプロパティ「top」「left」を使っています。ページ読み込み時、ウィンドウがリサイズされた時に上記のプロパティを設定することでセンター配置しています。
サンプルはこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>center-box</title> <style type="text/css"> html, body { height: 100%; margin: 0px; } div#outer { width: 50%; height: 100%; background: #e6e6e6; } div#inner { position: relative; width: 200px; height: 200px; background: #b3b3b3; } </style> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script> <script type="text/javascript"> $(function(){ centerBox(); //ウィンドウがリサイズされたとき $(window).resize(function() { centerBox(); }); }) //外側のボックスと内側のボックスの余白を計り、内側のボックスに座標を設定 function centerBox() { var margin_top = ($("div#outer").height()-$("div#inner").height())/2; var margin_left = ($("div#outer").width()-$("div#inner").width())/2; $("div#inner").css({top:margin_top+"px", left:margin_left+"px"}); } </script> </head> <body> <div id="outer"> <div id="inner">BOX</div> </div><!-- outer --> </body> </html> |
ページの読み込み時、ウィンドウがリサイズされた時に関数を実行しています。
センター配置には外側のボックスを内側のボックスの余白を計算して、内側ボックスの左上の座標を設定しています。
|
$(function(){ centerBox(); //ウィンドウがリサイズされたとき $(window).resize(function() { centerBox(); }); }) //外側のボックスと内側のボックスの余白を計り、内側のボックスに座標を設定 function centerBox() { var margin_top = ($("div#outer").height()-$("div#inner").height())/2; var margin_left = ($("div#outer").width()-$("div#inner").width())/2; $("div#inner").css({top:margin_top+"px", left:margin_left+"px"}); } |