通常、管理画面で作成したメニューはブロックを使うことで割り当てられた場所に配置ができますが、テンプレート内に直接追加することもできます。
|
<?php print theme('links', array('links' => menu_navigation_links('menu-custom'), 'attributes' => array('class'=> 'custom'))); ?> |
上記では「menu-custom」という名前で作成したメニューを、テンプレートファイル「page.tpl.php」に追加することで、カスタムに表示することができます。
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」を作成すればレイアウトの変更が可能になります。
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」ファイルを書き換え後は、「パフォーマンス」でキャッシュのクリアをしないと、うまく反映していないかもしれません。
PHP、JavaScript、ActionScriptそれぞれで、整数を指定桁数に合わせて0で埋めるスクリプトのメモです。
いずれの場合も一つ目の引数に対象となる整数、二つ目の引数に桁数を渡しています。
JavaScriptとActionScriptは型指定の有無の違いだけで、同じスクリプトで動作します。
PHP
|
<?php $result = convertNum(1234, 5);//01234 function convertNum($num, $figures) { $str = sprintf("%0".$figures."d", $num); return $str; } ?> |
JavaScript
|
var result = convertNum(1234, 5);//01234 function convertNum(num, figures) { var str = String(num); while (str.length < figures) { str = "0"+str; } return str; } |
ActionScript
|
var result = convertNum(1234, 5);//01234 function convertNum(num:uint, figures:uint):String { var str:String = String(num); while (str.length < figures) { str = "0"+str; } return str; } |
WordPressには通常の投稿以外に、固定ページを作成するためのページ機能があります。
通常の利用では投稿した記事ページとあまり差がないようですが、テンプレートを切り替えることで、ページ機能の使い道の幅が広がります。
ページ機能で作成したページすべてに利用するためのテンプレートは「page.php」となりますが、各ページ個別にテンプレートを切り替えるには、ページスラッグを後に続けて「page-one.php」「page-two.php」となります。
ページ機能テンプレートの本来の使い方は、WordPressの投稿フォームで入力した内容を自由なデザインで表示するためのものですが、WordPressでの入力内容を全く利用せずに、純粋なPHPページを表示するという使い方もあります。
WordPressで用意されているテンプレートタグ「the_title()」「the_content()」を使わないで、直接ページ機能テンプレートに内容を記述していきます。
例えば全画面フラッシュのページなど、投稿フォームでは作成が難しい場合や、他のプログラム用にXML出力ページに有効です。
もちろんページ機能テンプレート内ではWordPressのテンプレートタグも使えるので、より柔軟な静的サイトの作成に応用できます。