# 静的ページプラグイン

## 概要

静的ページプラグインは、本来、（Geeklogが作成する動的ページとは対照的に）静的コンテンツを持ったページを作成するためのものでした。そういうわけで「静的」という名前になっています。「このサイトについて」や「目標宣言」などのページが思い浮かぶでしょう。

その時以来、人々は様々な目的で静的ページを使用しています。静的ページにPHPのコードを含めることができるようになっていますので、静的ページという名前はもはやだいぶ不適切なものになっています。

## 機能

- PHPの使用をサポート
- 読みやすいURLを作成するための編集可能なページID
- 静的ページをGeeklogのインデックスページと話題ページに表示し、全画面表示することもできる("スプラッシュスクリーン機能")
- 既存のページをコピーする機能
- GeeklogのURL書き換え
- `[staticpage:]` と `[staticpage_content:]` 自動タグを実装
- Geeklogのパーミッションシステムを適切にサポート

## PHPの使用

### PHPを使えるようにする

重要: セキュリティ上の理由で、静的ページでのPHP使用はデフォルトでは無効になっています。有効にするには、Static Page Adminグループに、 `staticpages.PHP` 権限を与える必要があります。そのためには、管理者としてログインし、管理者用メニューから「グループ」を選択します。Static Page Adminを見つけて、グループ名の左側にある編集アイコン（ペンの形）をクリックします。ページの下の方に「権限(Rights)」のリストがあり、`staticpages.delete` と `staticpages.edit` には既にチェックが入っています。Static Page Adminグループに属する人が静的ページでPHPを使えるようにするには、 `staticpages.PHP` にチェックを入れてから保存をクリックします。

上述の `staticpages.PHP` 権限に加えて、静的ページ全体でPHPの使用を無効にするグローバルなオプションもあります。このオプションは「管理者用メニュー - コンフィギュレーション - 静的ページ」の中にある「PHPを許可する」です。「いいえ」にすると、`staticpages.PHP` よりも優先され、静的ページの中でPHPを使えなくなります。

### 使用法

静的ページでPHPを不適切に使用すると、セキュリティの問題が発生する可能性があります。注意して使用してください。

静的ページごとにPHPの使用を有効にする必要があります。コンテンツ編集欄の下に、次の選択肢のあるPHPのドロップダウンリストがあります。

- PHPを実行しない
  静的ページの中にPHPのコードが含まれていても、実行されず、コードがそのまま表示されます。
- PHPを実行する(return)
  静的ページに含まれるPHPのコードが実行されます。'return'とは、このページが表示する内容をPHPのコードで（`echo` 文や `print` 文を使って）直接出力する代わりに `return` 文で返すことを意味します。これは静的ページプラグイン ver 1.3から導入されたオプションです。
- PHPを実行する
  静的ページに含まれるPHPのコードが実行されます。このオプションを使うと、ページレイアウトに干渉することなくPHPの `echo` 文や `print` 文を使ってページの内容を出力できます。

静的ページにPHPのコードを埋め込むときに、PHPの `<?php` タグと `?>` タグを記述してはいけません。静的ページに含まれるPHPのコードは、Geeklog側でこれらのタグを付加されて実行されるからです。

上述の「PHPを実行する」（returnなしの方）を選択する場合は、コードの中でPHPとHTMLを次のように行き来することができます。

    echo "Hello"; ?>, <b>world</b>, <?php echo "how are you?";

この例では、 "Hello, world, how are you?" と表示されます。

## ページID

静的ページを新規作成すると、ページIDが自動的に割り当てられます。このIDは日付・時刻と最大3桁のランダムな数字で構成されています。このページのURLを頻繁に使用するつもりなら（Eメールで引用する場合など）、もっと読みやすいページIDにするのは意味のあることでしょう。

「静的ページの編集」では、ページIDを変えることもできます。たとえば、「当サイトに関して」のページのIDを "20030313100131123" から "about" に変えて、次のURLにできます。

`http://yoursite/staticpages/index.php?page=about`

こちらの方が遙かに引用しやすいし、覚えやすいです。GeeklogのURLリライト機能を活用してさらに改善することもできるでしょう。

ページIDで安全に使える文字はアルファベットと数字だけです。各国固有の文字（ひらがな、カタカナ、漢字など）やほとんどの句読点(とはいえ、'-' と '.' は使えるはず)、スペースは使用しないでください。「静的ページの編集」は一部の不正な文字を検出しますが、全部というわけではありません。

## 静的ページをインデックスページで使用する

Geeklogのセンターブロックの概念では、プラグインがサイトのセンターエリア（つまり、記事と記事の間）にブロックを出力することを許可しています。

「静的ページの編集」で「センターエリア」にチェックを入れると、静的ページを表示する場所を選択するために、「表示エリア」と「話題」というドロップダウンリストが使えるようになります。「表示エリア」で選べるのは、「ページの最上部」、「注目記事の下」、「ページの下」（この3つは説明不要でしょう）と「ページ全体」です。最後の「ページ全体」とは、この静的ページがインデックスページとして表示される、つまり、通常の記事が一切表示されなくなるということです。サイトの「スプラッシュ画面」や「ようこそ」ページを作成するのに役に立つでしょう。

ヒント: 静的ページをスプラッシュ画面として使用する場合、訪問者を普通のインデックスページへ誘導するリンクが必要になることもあるでしょう。この場合は、静的ページの中に `index.php?display=all` というリンクを作成すればよいでしょう。

2番目の「話題」ドロップダウンリストを使うと、静的ページの表示を特定の話題、ホームページ（トップページ）のみ、全ページ（つまり、すべての話題 + ホームページ）に限定できます。これはブロックを表示するオプションと全く同じです。

ヒント: これらのオプションをパーミッションと組み合わせることもできます。たとえば、ゲストユーザにしか表示されない「ようこそ」ページを作成することも可能です。

### ソート（並べ換え）

センターブロックでのソート項目: センターエリアの同一セクション内（たとえば、インデックスページのトップに静的ページを2つ表示する場合）に複数の静的ページを表示させる場合、「管理者用メニュー - コンフィギュレーション - 静的ページ」で表示順を選ぶことができます。選択肢は、次の通りです。

- 日付（更新日時の新しい順に並べ換え）
- ページID（ページIDで並べ換え：初期値）
- タイトル（ページのタイトルで並べ換え）

この順序が適用されるのは、センターブロック内の静的ページだけです。センターブロックを出力する他のプラグインはこの順序には含まれません。また、センターブロックは普通のGeeklogのブロックのような外見をしているとは限りません。この目的のためには、下にある「ページをブロックで囲む」を「はい」にします。

メニューでのソート項目: サイトのメニューに表示される静的ページを並べ換えることもできます(`header.thtml` テンプレートファイル内で、 `{plg_menu_elements}` 変数を使用している場合)。この項目も「管理者用メニュー - コンフィギュレーション - 静的ページ」で表示順を選ぶことができます。選択肢は、次の通りです。

- 日付（更新日時の新しい順に並べ換え）
- ラベル（メニューに表示される文字列：初期値）
- ページID（ページIDで並べ換え：初期値）
- タイトル（ページのタイトルで並べ換え）

## 静的ページをブロックで囲む

「静的ページの編集」で「ブロックで囲む」をチェックすると、静的ページをGeeklogのブロックレイアウトで囲むことができます。この場合、静的ページのタイトルがブロックのタイトルとして使用されます。また、普通のブロックと同様にヘルプ表示用のURLを入力することもできます。URLを入力すると、そのURLにリンクするヘルプアイコンが表示されます。

このオプションの初期値は、「管理者用メニュー - コンフィギュレーション - 静的ページ」で設定することができます。

## 静的ページをコピーする

同じような静的ページがたくさんある場合、既存のページをコピーしてから編集したいでしょう。静的ページのリストで、コピー欄のアイコンをクリックすれば簡単にコピーできます。コピーすると新たなページIDがついたページができます。

## URLリライト

この機能は実験的なものであり、IISでは動作しないことが知られています。

Geeklogはある種のURL書き換え、つまり、URLの外観を検索エンジンに拾われやすいものにする機能を持っています。たとえば、

`http://yoursite/staticpages/index.php?page=20030313100131123`

の代わりに、次のような外観にすることができます。

`http://yoursite/staticpages/index.php/20030313100131123`

検索エンジンの中には、URLに '?' や '=' などの文字が含まれていると、そのページをインデックスに登録しないものがあるということが知られています。これをさらに推し進めて、数字で構成されたページIDを（できれば、ページの内容と関連する）単語や表現に置き換えることで、検索エンジンにさらに登録されやすくすることもできるでしょう。

`http://yoursite/staticpages/index.php/about`

URL書き換えを行うには、「管理者用メニュー - コンフィギュレーション - Geeklog - サイト」で「URLリライト」を「はい」にする必要があります。

### 所有者の削除と共に削除する

Geeklogのすべてのオブジェクト同様、静的ページには所有者（そのページの作成者）がいます。そのユーザのアカウントが何らかの理由で削除された場合、そのユーザが所有していた静的ページも削除するか、GeeklogのRootグループに属する人に引き継がせることができます。

「管理者用メニュー - コンフィギュレーション - 静的ページ」で「所有者の削除と共に削除する」を「いいえ」（初期値）にすると、所有者が削除されても作成した静的ページは削除されず、Rootグループのメンバ（ユーザIDが最も若い人、つまり、たいていはサイトの管理者）に引き継がれます。「はい」にすると、所有者のアカウントが削除されたとき、作成した静的ページも削除されます。