Labs

jQueryを使ったシンプルなイメージスライダー。

2012.02.11 / Labs

jQueryを使ったシンプルなイメージスライダーのサンプルです。
ボックス内に複数の画像を横に並べて、左右にスライド表示をする仕組みです。
サンプルはこちら

HTML内では#galleryボックス内に画像を並べているだけです。画像の枚数には指定はありませんので、何枚でもOKです。

CSSでは基本的にボックスのサイズ指定と、オーバーフロー時に隠す設定のみです。

画像のスライドは「prev」「next」のリンクをクリックした際に、左右にスライドします。スライドする位置は、あらかじめ各画像サイズをもとに座標位置を配列に格納しておきます。

Google Mapsで住所、緯度・経度を取得。

2012.01.27 / Labs

Google Maps APIを使って、マーカーの位置から住所、緯度・経度を取得と、住所からマーカーの移動および、緯度・経度の取得するためのコードのメモです。
サンプルはこちら

マーカーのドラッグで緯度・経度を書き換えて、ドロップの際に住所を書き換えています。
また住所から検索で、マーカーを移動して、緯度・経度を書き換えています。
JavaScript自体のコードはこちら。

CakePHP 2.0でユーザーのアクセス権限をチェック。

2011.10.08 / Labs

CakePHP 2.0 RC3でブログのサンプル、ACLを設定した後に、各コントローラーでアクセス権限をViewのテンプレートファイル内(View/Posts/index.ctpなど)でチェックするためのコードメモです。

 

ブログのサンプル、ACLについてはCakePHPマニュアルページの中にあるチュートリアルを参考に設定してみました。(ACLチュートリアルの説明は難解ですね。かなり苦戦しました・・・。)
CakePHPブログチュートリアル(英語)
ACL を制御するシンプルなアプリケーション(英語)

 

チュートリアルで作成したブログのコントローラ「PostsController.php」のbeforeFilter()の中に下記のコードを記述することで、閲覧しているユーザーのアクセス権限をチェックし、「create」「read」「update」「delete」の各アクションの権限の有無を配列にして、Viewへ渡すデータにセットするようにしています。

 

Viewのテンプレート上では次のように利用できます。

ユーザーの権限によって、編集や削除のリンクを、表示/非表示にしたい場合などに使えるかなと思います。
他にもっと良い方法があるかもしれませんが・・・。

ActionScriptで透過ビットマップのロールオーバーを判定。

2011.06.15 / Labs

マウスのロールオーバー時に、ビットマップの透過ではない部分でのみ判定をする方法です。
通常ビットマップのマウス判定には矩形エリア全体が対象になるので、透明PNGの透明部分でも判定されてしまいます。
それを回避する方法として、マウスのイベントリスナーを使うのではなく、マウス座標上にあるビットマップのピクセル色が透明かどうかを測定して、判定をするようにしています。
サンプルはこちら

Drupal 7でユーザープロフィールの項目をノード内に出力。

2011.05.23 / Labs

Drupal 7から標準で実装されたユーザープロフィールの項目を、ノードの投稿者情報に関連づけて出力する方法です。

 

一般的にユーザーアカウントの名前には英数字のみで構成されるので、それとは別に日本語での名前を、ユーザープロフィールに「field_name」として追加しています。
Drupal 7 User Profile
ユーザープロフィールを出力する一番簡単な方法は、ビューを使うことですが、今回はテーマに組み込む方法で出力を行います。

 

テーマに変更を加えるのは次の2つです。

  1. 「template.php」にpreprocess関数を追加
  2. 「node.tpl.php」にユーザープロフィール変数の出力コードを追加

 

テーマフォルダの中に含まれている「template.php」ファイルに、次のようにpreprocess関数を追加します。

関数名の「THEMENAME」の部分は、実際のテーマ名に置き換えます。
ここでは投稿者の「uid」からユーザープロフィール「field_name」を参照して、「node.tpl.php」に渡す変数の配列に値を追加しています。

 

次に「node.tpl.php」にて、上記で渡された変数を出力します。

「node.tpl.php」ファイルを書き換え後は、「パフォーマンス」でキャッシュのクリアをしないと、うまく反映していないかもしれません。