概要
シングルページは通常のconcrete5サイトのページとよく似ていますが、次のような重要な違いがあります。
- 名前の通り、シングルページはサイト内の1カ所にのみ存在できます。例えば、ログインページがたくさんあるのは不自然ですよね。
- シングルページはページタイプの一覧には表示されません。シングルページは、ページタイプを持たないからです(そして複数追加できないからです)。
- シングルページのカスタムコードは、特定の場所、特定のパスに依存します。
- シングルページのビューテンプレートは、デフォルトではテーマディレクトリ内にありません。
シングルページの例はないかって?concrete5のログインページは、完璧なシングルページのサンプルです。サイト内に複数のログインページは不要です。ひとつで十分です。さらに、ブロックや他のパーツからログインページにリンクする場合に、ログインページが /login にあることを信頼できることが必要です。
concrete5の管理画面内のページはシングルページのもうひとつのサンプルです。管理画面のページのために、テーマやページタイプのセレクタを乱雑にしたくないでしょう。しかし、シングルページはconcrete5のページでもあるので、権限を設定したり、CMSからタイトルを変更したり、さらにはブロックを追加することまでできる場合があります。はい、シングルページはブロックエリアを持つことが可能です。
シングルページを追加する
concrete5 でネットワークサイトを構築するために、ログインユーザーに画像をアップロードさせるページが必要になったとしましょう。そして、ページが下記のURLで必要になったとします。
http://www.yoursite.com/index.php/media/
このページをシングルページとすることを決めました。なぜなら、このページはカスタマイズされた特殊な機能を持ち、様々なページからこのページにリンクするからです。シングルページを追加するには、空のPHPファイルをサイトのルート内の application/single_pages/ ディレクトリに作成します。名前は "media.php" とします。ファイル名はこのページのURLパスと対応します(例: "media.php" = http://www.yoursite.com/media")。名前を複数に分割したい場合は、アンダースコアを使います(例: "my_profile.php")。
concrete5 の管理画面にログインし、[ページとテーマ>シングルページ]を開きます。一覧の上の「シングルページを追加」フォームに "media" と入力し「新規」ボタンをクリックします。".php" は入力しないでください。
問題なければページが更新され、サイトのルートに新しいシングルページが追加されます。ページの名前や権限、属性はCMS上で変更できます。唯一できないことは、シングルページのハンドル、ページパスを変更することです。なぜなら、シングルページはツリー内に1箇所にしか存在しないからです。
新しいシングルページにアクセスしてみましょう。現在のテーマが選択された、内容のないページを見ることができるでしょう。これは、作成したシングルページに何もコンテンツがないからです。シングルページのビューテンプレートを作成する必要があります。
シングルページビューテンプレートにコンテンツを追加する
シングルページは現在のテーマの "view.php" テンプレートで囲まれます。このことは、シングルページではヘッダーやフッターを読み込ませる必要がないことを意味します。
concrete5 サイトに同梱されている、concrete/themes/elemental/view.php を開いてみてください。このファイルが、Elemental テーマが選択されている際にシングルページのラッパーになるファイルです。
変更できますか?はい、もちろん。特定のテーマでシングルページをより柔軟にコントロールしたい場合は、テーマにシングルページと同じファイル名のファイルを作成するだけです。つまり、テーマ内のファイルは header や footer であっても、シングルページのテンプレートとして使われる可能性があるということです(つまり、この例の場合は、シングルページとして "media" を追加しましたので、テーマ内の "media.php" が該当します。)。このテンプレートはシングルページの代わりに使われます。
シングルページとパス
サイト内の特定のセクションに複数のシングルページを格納したい場合は、シングルページとその子ページのためにフォルダを作成することができます。例えば、次のファイルを作成する代わりに、
application/single_pages/media.php
こちらを使うこともできます。
application/single_pages/media/view.php
そして上記と同じようにシングルページを追加します。あなたのシングルページは /media で確認できますが、このパスの下に他のページを追加することも可能です。
application/single_pages/media/add.php
application/single_pages/media/organize.php
これらのシングルページはそれぞれ http://yoursite.com/index.php/media/add や http://yoursite.com/index.php/media/organize/ でアクセス可能です。
サイト内にすでにあるパーツを拡張する
管理画面のような concrete5 の機能を拡張するのにも、シングルページを使うことができます。concrete5 の管理画面の中に、カスタムのビジネスロジックフォームを作成したいとします。このフォームが次のURLでアクセスできるとき、
http://www.yoursite.com/index.php/dashboard/my_business_forms/
次のファイルを作成します。
application/single_pages/dashboard/my_business_forms.php
そして、管理画面のシングルページインターフェースから追加します。この新しいペジは管理画面のナビゲーションにすぐに追加されます。
インタファクティビティの追加
すでに見てきたように、シングルページは再利用する必要がない、特定の問題を解決するために最適な手段です。このことは、これらのページが検索フォームや複数ステップのフォーム、特定のオブジェクトの追加/編集を行うフォームなどの、インタファクティビティを持つ主な理由です。
キーワードは「フォーム」です。シングルページに何かデータを送信するためには、シングルページのコントローラーが必要です。詳細は次のページで説明します。
原文:Overview