QuicKeysは、Mac上でのいくつかの処理をまとめ一つのアクションに登録して、作業を自動化することができるユーティリティです。
またMacでの状態をある程度チェックできるので、状況に応じて処理を振り分け、簡単なシーケンスのアクションも作成できます。
次の例は、Safariのアクティブ、非アクティブの状態をチェックして、表示、または非表示にするアクションです。
上記のような小さなアクションでも、自分に合わせてたくさん作っておくと、Macの操作性はぐっと良くなるのでおすすめです。
CakePHPでトップページの表示を変更するには「app/views/pages/home.ctp」を書き換えることで可能です。
この場合レイアウトは、自動的に「app/views/layouts/default.ctp」を利用します。
通常レイアウトの変更には、コントローラーのアクションに「$this->layout = ‘default’;」といった感じで、任意に変更ができるのですが、もともとコントローラーを作成しないトップページの場合では、簡単にレイアウトの変更ができません。
そのための解決方法として、トップページの表示を担うコントローラーをCakePHPコアのライブラリからコピーして、一部修正することにします。
はじめに、コアに含まれるライブラリ「cake/libs/controller/pages_controller.php」を、「app/controllers」にコピーします。
「pages_controller.php」内のdisplayアクションは次のようになっています。(バージョン1.3.8)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
function display() { $path = func_get_args(); $count = count($path); if (!$count) { $this->redirect('/'); } $page = $subpage = $title_for_layout = null; if (!empty($path[0])) { $page = $path[0]; } if (!empty($path[1])) { $subpage = $path[1]; } if (!empty($path[$count - 1])) { $title_for_layout = Inflector::humanize($path[$count - 1]); } $this->set(compact('page', 'subpage', 'title_for_layout')); $this->render(implode('/', $path)); } |
このdisplayアクションに、レイアウトを指定する記述を追加することで、トップページ用のレイアウトを変更できます。
|
function display() { $path = func_get_args(); //ここから if ($path[0] == 'home') { $this->layout = 'home'; } //ここまで ... } |
上記の例では、ページのパスが「home(トップページ)」の場合に、「home」レイアウトを利用するようにしています。
後は「app/views/layouts」フォルダに、テンプレート「home.ctp」を作成すればレイアウトの変更が可能になります。
現在人気の高い2つのCMS、DrupalとWordpressですが、同じくCMSという括りではあるものの、実際には両者でかなり性格の異なっているように思います。
大きく分けると、サイトの構築、更新作業において、Drupalは複雑なサイト、Wordpressはシンプルなサイトに向いているようです。
どちらのCMSも長く利用していますが、それぞれに得意なところ、不得意なところがあるので、構築するサイトの構成によって使い分けるようにしています。
これまで2つのCMSを自分が使ってきた中で、それぞれ次のような特徴があると思います。
Drupalで最も優れているところは、コンテンツの柔軟性にあります。
通常のブログタイプのCMSでは、一つ記事にタイトル、本文のみの構成ですが、Drupalでは様々なタイプの追加フィールドを任意で設けることができます。なので、例えば不動産サイトのような複雑な情報サイトでも、比較的容易に構築することが可能です。
もう一つ大きな特長として、ユーザー権限の管理があります。
複数の階層によるユーザーグループの権限を作成でき、ユーザー毎に、きめ細かくサイト内ページの閲覧権限などを設定できます。会員制サイトなどの構築には威力を発揮します。
逆にマイナスと感じるところは、やはり学習の難しさにあると思います。
初めてインストールした直後では最小構成の機能しか使えない状態なので、ブログとして利用する場合でも、画像の挿入さえままならない状況です。
いくつかのモジュールを組み合わせれば、基本的なブログとして利用できるようになりますが、初めて利用した際には、かなりハードルが高いように思います。
さらにサイト構築となると、テーマ作成も必要になりますが、これがまた簡単ではありません。
Drupalのルールに基づいてテンプレートファイルなどを作成していきますが、理解するにはそれなりの時間がかかってしまいます。
ただ一度覚えてしまうと、とても理にかなったルールなので、開発も楽しく?なります。
WordPressはブログタイプのCMSで、固定ページ機能を組み合わせることで、大抵のWebサイトの構築には十分な能力を持っています。
またブログをベースにしていることもあり、シンプルな管理画面に加え標準でのWYSWYSエディタが搭載されていて、とても親しみやすい印象を受けます。
テーマを含むサイトの開発においても、HTMLの知識と、Wordpressの出力を担うテンプレートタグをおおまかに理解していれば、独自のサイト構築も難しくはありません。
WordPressにとってもマイナス部分は、これは良いところでもありますが、あくまでブログベースのサイトしか作れないことです。
基本的にタイトル、本文の構成なので、イレギュラーなコンテンツの作成ができません。
カスタムフィールドを使う方法もありますが、更新作業の際にパソコンに詳しい人だったら問題ありませんが、そうでない人にとっては、かなりストレスが溜まるように思います。
2つのCMSを比較すると、自分の中では上記のような特徴が挙げられますが、あくまで性格の異なるもととしてとらえています。
例えるなら、自動車とバイクのような違いがあるように思います。
サイトの構築では、いろいろなケースがあるので、どのように構築するかは毎回悩みます。
ただ一つのCMSのみで構築を考えるより、CMS利用の有無も含めて、複数のCMSを使い分けていくことがベストのようです。ケースによってはJoomla!やMoodleが向いている場合もあります。
とりわけ、DrupalとWordpressは開発も盛んで将来性が高いので、時間をかけて学習するだけの価値はあるように思います。
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