Drupal 7から標準で実装されたユーザープロフィールの項目を、ノードの投稿者情報に関連づけて出力する方法です。
一般的にユーザーアカウントの名前には英数字のみで構成されるので、それとは別に日本語での名前を、ユーザープロフィールに「field_name」として追加しています。
ユーザープロフィールを出力する一番簡単な方法は、ビューを使うことですが、今回はテーマに組み込む方法で出力を行います。
テーマに変更を加えるのは次の2つです。
- 「template.php」にpreprocess関数を追加
- 「node.tpl.php」にユーザープロフィール変数の出力コードを追加
テーマフォルダの中に含まれている「template.php」ファイルに、次のようにpreprocess関数を追加します。
|
<?php function THEMENAME_preprocess_node(&$variables) { $value = db_query("SELECT field_name_value FROM {field_data_field_name} where entity_id= :uid", array(':uid' =>$variables['uid']))->fetchField(); $variables['alter_name'] = $value; } ?> |
関数名の「THEMENAME」の部分は、実際のテーマ名に置き換えます。
ここでは投稿者の「uid」からユーザープロフィール「field_name」を参照して、「node.tpl.php」に渡す変数の配列に値を追加しています。
次に「node.tpl.php」にて、上記で渡された変数を出力します。
|
<?php print $alter_name; ?> |
「node.tpl.php」ファイルを書き換え後は、「パフォーマンス」でキャッシュのクリアをしないと、うまく反映していないかもしれません。
Drupal 7正式版が登場して5ヶ月あまり経ちますが、そろそろ主要モジュールも整ってきたので、Drupal 6からDrupal 7へ移行を進めています。
Drupal 7でサイトを構築するにあたり重要となるテーマ作成ですが、基本的な構成のみをまとめたスクラッチテーマを作成してみました。
Drupal 7のスクラッチテーマ
drupal 7ではテーマを継承してサブテーマを作ることができるので、上記の基本構成以外はサブテーマにて装飾を加えていくことで、効率的なサイト構築が可能です。
テーマ制作の流れは、おおむねDrupal 6の場合と変わっていないように感じました。
ただしテンプレートファイル内で利用するメソッド、パラメータには変更があったので、Drupal 6のテーマをDrupal 7用に書き換えるのは、少し大変かもしれません。
またDrupalオフィシャルサイトでは、テーマ作成のためドキュメントが充実しているので、とても参考になりました。
Theming Drupal 6 and 7 | drupal.org
ActionScriptで方向キーが押された時のイベントのメモです。
|
import flash.events.KeyboardEvent; stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPress); function onKeyPress(event:KeyboardEvent):void { switch (event.keyCode) { case 38: break; //up case 40: break; //down case 37: break; //left case 39: break; //right } } |
ステージにイベントリスナーをかけて、方向キーが押された時に関数を実行します。
jQueryでページ内のアンカーポイントまでスムーズにスクロールするスクリプトです。
スクロールのイージングには「jquery.easing.1.3.js」を利用しています。
サンプルはこちら
|
function scrollToAnchor() { $("a[href*=#]").click(function() { var target = this.hash; var offset = $(target).offset().top; if (offset > $(document).height()-$(window).height()) { offset = $(document).height()-$(window).height(); } $("html, body").animate({scrollTop:offset}, {duration:1000, easing:"easeOutQuart"}); return false; }); } |
<a>タグのリンクからハッシュ(#の部分)のみを抽出して、ページ先頭からの高さを調べています。
ActionScriotでXMLを操作する際に、よく使うメソッドのメモです。
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
|
var xml:XML = <root> <item id="1"> <name>test1</name> <url>www.example1.com</url> </item> <item id="2"> <name>test2</name> <url>www.example2.com</url> </item> <item id="3"> <name>test3</name> </item> </root>; //一つ目(0番目)の「item」ノード内の「name」ノードの内容を取得 trace(xml.item[0].name) //test1 //二つ目の「item」ノードの「id」属性を取得 trace(xml.child("item")[1].@id) //2 //「item」ノードの数を取得 trace(xml.item.length()); //3 //「item」ノード内の「url」ノードの数を取得 trace(xml.item..url.length()); //2 //一つ目(0番目)の「item」ノードの二つ目(1番目)のノード名を取得 trace(xml.item[0].child(1).name()); //url //「item」ノード内の「name」ノードの内容が「test1」の「url」ノードの内容を取得 trace(xml.item.(name == "test1").url); //www.example1.com //「item」ノード内の「id」属性が「2」の「url」ノードの内容を取得 trace(xml.item.(@id == 2).url) //www.example2.com //三つ目(2番目)の「item」ノードに「url」ノードの有無をブール値で取得 trace(xml.item[2].hasOwnProperty("url")); //false |