概要

シングルページは通常の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