Please Sign In or Register

Drupal のカスタマイズ

PHP を CGI モードで動作させた場合に 404 Not Found ではなく 200 OK を返してしまう

PHP を CGI モードで動作させている Drupal サイトでは、存在しないページやアクセスが許可されていないページを表示した場合に、正しい HTTP レスポンスヘッダを返さない。
通常は、存在しないページの場合 404 Not Found を返し、アクセスが許可されていないページの場合 403 Forbidden を返すはずなのだが、どちらとも 200 OK を返してしまうので、削除したページがいつまでもサーチエンジンにインデックスされたままになってしまうなどの問題が発生してしまう可能性がある。

分類用語の追加

新しい分類用語を作成することができます。

分類用語の追加

ボキャブラリの作成で設定できる内容は以下の通りです。 * は必須項目です。
また、ボキャブラリの設定内容によって追加される設定項目については、(ボキャブラリでの設定項目名) のように記載しています。

ボキャブラリの追加

新しいボキャブラリを作成することができます。

ボキャブラリの追加

ボキャブラリの作成で設定できる内容は以下の通りです。 * は必須項目です。

カテゴリ

コンテンツを分類するためのカテゴリについて、ボキャブラリ(複数の分類用語からなるグループ)とそのボキャブラリに属する分類用語の管理や、分類方法についての設定を行うことができます。

カテゴリ

カテゴリページには、作成したボキャブラリの一覧が表示されます。
Forum モジュールが有効化されている場合は、「Forum」 という名前のボキャブラリが自動的に作成されます。このボキャブラリは Forum 用に特別に作成されたボキャブラリですので、設定できる内容に多少の制限があります。

Views

Views は、データベースのテーブルの内容から、表示する項目、抽出の条件、並べ替えの順序などを指定したクエリを作成するためのモジュールです。
クエリの結果は、特定の URL を持つページまたはブロックとしてサイト上に表示できます。
「クエリ」 + 「ページやブロックでの表示方法」 = 「ひとつの View」 というイメージになると思います。
そして、そのひとつひとつの View に関する設定を行うためのモジュールが Views UI モジュールになりますので、最低でも、Views と Views UI の2つのモジュールを有効にすることが必要です。

Views 使用例 - 最近のコメント

このサイトでの Views の使用例として、「最近のコメント」 ブロックについてまとめています。

デフォルトの 「最近のコメント」 ブロック

デフォルトの 「最近のコメント」 ブロックの内容は、ブロックのみに表示され、特定の URL を持ったページとしては表示されません。
また、表示される内容は、以下の形式で、最新の10件のコメントが表示されるようになっています。

  • コメントのタイトル
    投稿日時(~前)

これを View での設定内容に置き換えてみると、以下のような設定が行われていることになります。

「ブックナビゲーション」 ブロックを全てのページに表示する

「ブックナビゲーション」 ブロックを全てのページに表示させるための方法です。

デフォルトの 「ブックナビゲーション」 ブロックは、そのブックでしか表示されませんので、すべてのページに表示したい場合などは、別にブックごとのナビゲーションブロックを作成した上で、デフォルトのブックナビゲーションを非表示にするという方法をとります。

ブロックの設定の 「ページ固有の表示設定」 で、「以下の PHP コードが TRUE を返したら表示する (PHP モード - PHP に精通した方専用)」 を選択し、「ページ」 に以下の PHP コードを記述します。

コメントのタイトルが長い場合に文字化けを起こす

コメントのタイトルが文字化けコメントに文字数の多いタイトルを使用した場合に、コメントタイトルが途中で切断され、末尾に ? 記号が表示されてしまうことがある。文字化けしていることで、ページ内で使用している文字コードを正しく認識できなくなってしまい、コメントのフィード配信でエラーが発生したり、ページが正しく表示されないなどの問題が発生する可能性も否定できない。

トラブルシーティング

Drupal を運用していくなかで遭遇したエラーやその回避方法などをまとめています。
内容の詳細については、下位ページを参照してください。
※ コンテンツに記載している内容を利用したことにより何らかの損害が生じたとしても、一切の責任を負うことはできませんので、あくまで利用者個人の責任においてご活用ください。

これまでに遭遇したトラブルと解決方法は以下の通りです。

Content Templates (Contemplate)

テンプレート作成時の補助となる PHP コードが記述されていますが、CCK でフィールドを追加したかどうかによってそのコードが異なるようです。
また、CCK で追加したフィールドの 「テキストの処理」 を 「フィルタされたテキスト(選択した入力書式)」 に設定している場合、そのフィールドの入力時に選択した入力書式に 「改行フィルタ」 が含まれていれば、フィールドごとに <p> で括られるようです。

拡張モジュールのドキュメント

詳細なドキュメントが用意されているモジュールの設定方法や、モジュールのレビューで紹介した内容の追加情報などをまとめていく予定です。

※ 拡張モジュールに関するドキュメントは Drupal Handbooks 内の Contributed modules に集約されています。

管理セクション

Drupal にデフォルトで備わっている機能についてのまとめです。

Drupal 5.x では、管理セクションのユーザインタフェイスがかなり改善され、管理セクションページからダイレクトに必要な機能の設定画面へ移動できるようになりました。また、管理セクションページは、タスク別またはモジュール別に表示を切り替えることができるので、必要な機能を見つけやすくなっています。

ブロックの追加

新しいブロックを作成することができます。

ブロックの追加

ブロックの作成に必要な内容は以下の通りです。

ブロックを特定のカテゴリに分類されたページのみに表示する

特定のカテゴリページおよび、そのカテゴリに分類されたページが表示された場合のみブロックを表示するための方法です。

ブロックの設定の 「ページ固有の表示設定」 で、「以下の PHP コードが TRUE を返したら表示する (PHP モード - PHP に精通した方専用)」 を選択し、「ページ」 に以下の PHP コードを記述します。

ブロックの設定

既存のブロックについて、ブロックのタイトルや表示の対象となるユーザグループなどを設定できます。

ブロックの設定

設定できる項目は以下の通りです。

コンテンツの配信