Drupalでの単一著者ブログの構築

Drupal 7 で一から(一人用の)ブログを作る標準的な手順を解説します。

参考までに、Drupal 4.7.* 以上での標準的な解説手順は、 Drupal.org上の Single user blog - basic にあります(英語)。また、Drupal 6 については How To Create A Blog With Drupal (Alex Fisher著) の解説(英語)が優れています。 本稿は、Drupal 7 が対象です。

なお、複数著者によるブログは、本稿の想定外です。 複数著者によるブログは、組込みの Blog モジュールが Drupal 7 標準です。 ただし、同モジュールは近く(2014年10月現在)リリースされるであろう Drupal 8 ではサポート外のため、 今から Blogモジュールを使用始めるのが賢いかどうかは議論が分かれるかも知れません。

本稿では、皆さんの手元ですでに Drupal、SQLデータベース、HTTPサーバー (おそらく Apacheでしょう)がインストール済で、 自分のウェブサイトにアクセスして管理者としてログインできることを仮定しています。 以下の例は、本家(英語版)の Drupalに沿っています。 お使いのウェブサイトの Drupalが日本語化されている場合は、適宜読み替えて下さい (通常、用語が英語から日本語に変更されているだけのはずです)。

他の追加モジュールもすでにインストールして有効化(enable) しているかも知れませんが、それは差支えありません。ただし、その場合、 インストールされているモジュールによっては、 以下の解説の全てが皆さんの手元の環境でも言葉通り(あるいは画面通り)当てはまるとは限りません。

「ブログ」と一言で言うけれど、実際に実現することは?

ブログとは、こういうものという決まった定式があるわけではありません。 そこでまず最初に、本稿で実現する目標を定義しておきます。 以下にそれを列挙します。これらの全て、後に変更可能です。 本稿は、ブログサイト開発の取っ掛かりになることを意図したものです。

  • 3種類のページが存在する。すなわち、フロントページ(ホーム)、 ブログ投稿の目次ページ(ブログ)、ブログ記事一本一本の各ページ。
    ブログ目次ページ (ブログ)
    目次ページは、最新のブログ記事の題名、日付、ティーザー(要約、さわり、あるいは抜粋)を列挙する。 題名は、ブログ記事本体へのリンクともなっている。
    URL: http://www.example.com/blog
    フロントページ (ホーム)
    ブログページと類似。ただし、追加のバナー文書を含む。
    URL: http://www.example.com/
    各ブログ記事
    題名は大きく表示され、日付と筆者名、そして本文全文が続く。
    画像(複数可)があれば、最上部に表示される。
    本文の後に、同記事のタグ(キーワード、分類)のリストが表示される。
    本文の後に、その前後のブログ記事へのリンクが表示される。
    訪問者は、各ブログ記事へのコメントを残すことができ、それらはブログ記事本文の下に表示される。
    各ブログ記事の URLは、以下のような形式: http://www.example.com/blog/how-one-designs-blog
  • 管理者 (ユーザー名: admin) が各ブログ記事の筆者。
  • 各ブログ記事は、以下の属性を持つ。
    • タグ(複数可)。訪問者は、あるタグに関連する全てのブログ記事を閲覧することができる。
    • Previsous [前] and Next [次] のリンクが前後のブログ記事へのリンクとなっている。
  • すべてのページは、以下の属性を持つ。
    • 主メニューバーには、Home [ホーム] および Blog [ブログ] の二項目がある。
      • Home [ホーム] は、フロントページへのリンク。
      • Blog [ブログ] は、ブログ目次ページへのリンク。
    • サイドバーが表示され、そこで検索フォームが使える。
    • パンくずリスト (breadcrumbs). 「パンくずリスト (breadcrumbs)」とは、現在閲覧中のページが、 同ウェブサイト全体の木構造の中でどこに相当するかを表した文字のこと。 (あるページの)「パンくずリスト」の一例:
      ホーム > 食べ物 > 野菜 > 玉葱

実現のための基本的道筋

Drupal 7 は、(たとえば Joomla! とは大きく異なって) ブログ型の記事を本体の基本機能だけで扱えます。 各ブログ記事の本文は、Drupalが直接操作するデータベースに保存されます。 だから、もし将来、ブログを他の CMSやデータベースに移行する必要が生じても、 その作業は比較的すんなり進むはずです。 逆に、もしブログが特定のモジュールに依存している場合、そうはいきません。 匿名訪問者によるコメントの投稿も本体機能の一部です。 ただし、デフォルトでは不許可になっています。 本文を要約(または抜粋、触り)した「ティーザー」も本体機能に組込まれています。

単一筆者によるブログは、Drupalの本質的機能の一つです。 だからこそ、それに特化した(よく知られた)モジュールは存在していないのだと筆者は理解しています。 一方、 WordPress とは異なり、Drupal はブログに特化した CMSではなく、 多岐にわたるウェブサイトへの一般的枠組みを提供しているものです。 Drupalを使うサイト開発者は、それぞれの目的に応じて、 (組込みまたは外部)モジュールを必要に応じて組合わせて使用する次第です。

本稿で解説する単純なケースでは、 前項の目的を達するため、 以下の方針で進めます。

ブログ目次

新ブログ記事が投稿されるたび、目次ページの最上部に、 その新記事へのリンクが自動的に追加されるようにします。 つまり、ブログ筆者(サイト管理者)が新記事を投稿するたび、 毎回手動で目次更新しません。

これを実現するため、 Views (ビュー) モジュールを使います(同モジュールは、 Drupal 7 で構築されたウェブサイトでは事実上の標準となっていて、 Drupal 8 では Drupal本体に組込まれます)。

コンテンツ型 (Content type)

Drupalにおいては、大きく分けて二種類のページがあります、すなわち ノード (node) とそれ以外です。 node は、通常の文書型のコンテンツからなるページを指し、 通常、静的(つまり、本文は、閲覧するたびに変化はしない)です。一方、 node以外は、訪問者が閲覧するたびに(一から)動的に生成されます。 たとえば、目次ページ、各ユーザーのアカウントのページ、検索結果のページなどがこれに相当します。

各ブログ記事は、nodeになりましょう。一方、その目次ページは通常、 nodeではありません。なぜならば、目次ページは、 閲覧要求があるたびにデータベース(あるいはディスク)を参照して、 要求された条件に合うすべてのノードを探し当て、 (たとえば時系列などの)条件にしたがって順序を決めて、 それらを列挙するからです。なお、言うまでもなく、 目次ページを静的な node とすることも可能です。 その場合、新記事が加わるたび、あるいは時には既存の記事が更新されるたび、 目次ページを手動で編集する必要があります。

Drupal では、各ノードは、それぞれある(一つの)コンテンツタイプ (Content type)に属します。 Content-type は、Drupal において、ノードを種別分けする最も基本的な方法を提供しています

Drupalでは、任意の数のコンテンツ型 (Content type) を定義できます。 デフォルトでは、Basic と Articleの二種類が定義されています。 Basic型は、たとえば「当サイトについて」のような静的なページに使われることを想定しています。 一方、Article型は、日記やブログや新聞のような時系列に沿って投稿されるページに使われます。

以下のブログ作成では、新しいコンテンツ型 Blogpost を定義することにします。 既存の Article型を使う事はもちろん可能です。 しかし、一般論として、サイトにおいて重要な区分となるものには、 専用のコンテンツ型を用意して使用するのがお勧めなので、以下ではそれに従う次第です。

URLエイリアス (Path alias)

Drupalで構築されたサイトでは、デフォルトでは、ノードの各ページの URL (URI)は、 /node/1234 のような形になります。 一般論として、これは勧められる形ではありません。 代わりに、たとえば各ブログ記事ならば、 http://www.example.com/blog/SOMETHING のような形の URLが望ましいでしょう。ここで、 SOMETHING は、同記事の日付や題名などに関連するものでしょうか。 特に、ブログ目次の URLが blog であれば、 各ブログ記事の URL が /node/1234 などであれば、 それは不自然でしょう。加えて、このような通し番号のみの URLは、 検索エンジンのランク付けで不利とされることも無視できません。

Drupal では、記事を投稿あるいは編集するたびに、それ独自の (無機的な通し番号よりは読み易い) URLを設定する事ができ、それを path alias (「URLエイリアス」が標準的邦訳か)と呼びます。 URLエイリアス設定の有無に関わらず、(デフォルトでは)上述の node+通し番号の URLも依然、使用可能ではあります。

ただ、それぞれの記事で URLに重複が無く、それなりに読み易い限り、 具体的な URLの一文字一文字が何かはそれほど気にならないところではありましょう。 以下では、 Pathauto モジュールを導入することで、新記事を書いた時に自動的に URLエイリアスがつけられるようにします。

(注: 日本語記事とURLエイリアス): この Pathauto モジュールは、文書の題名を URLエイリアスとしてアスキー文字列に限るように設定した場合、 原則、英語への対応となっています。 他の言語でも題名が英数字の場合は対応は容易です。 一方、アジア文字など非英数字の題名をアスキー化する場合は、追加で Transliteration モジュールが必要です。しかしながら、問題は、同モジュールにおいて 2014年10月現在、日本語漢字はすべて中国語(北京語)読みとして解釈されてしまいます (参照: 「D8の日本語翻字を改めて」)。 日本語などにも対応する努力はあり、パッチも発表されてはいますが、 標準リリースには含まれていません。

加えて、題名が日本語の時だけ機能を手動でオフにするのも、どうもうまく働きません (参照: drupal.org上のバグ報告)。 というわけで、日本語題名もしばしば使うサイトを運営する筆者の場合、結局、 Pathauto モジュールは使用しておりません。ご参考までに。

前後記事へのリンク

ブログ記事は、通常、日記と同様、書かれた(あるいは発表された)日時にしたがって並べられます。 だから、各記事のページに、前後の記事へのリンクがあると幸便でしょう。 訪問者が興味を惹かれたら、毎回目次ページに戻ること無く、 次(前)の記事を次々に読む事ができますから。

この機能、つまり前後の記事へのリンクをつける機能、 を提供するモジュールは幾つかあります。最低限、 筆者(編集者、管理者)はそれぞれの記事の URLを知る必要はなく、 また新記事が投稿されるたびに一つ前の記事に戻って「次の記事」リンクを追加するよう編集する必要もないことが条件です。 本稿では、その条件に合う中でもっとも基本的で単純なモジュール Flippy を導入します。

タクソノミー (Taxonomy: 用語分類)

Drupal において Taxonomy (タクソノミー) は、「語彙[集] (vocabulary)」の集合、あるいは「語彙集を使った分類」 指す用語または概念です。 それぞれの「語彙[集] (vocabulary)」が、 一定のあるいは好きな数の「用語 (term)」を含みます。 「タクソノミー」は、通常、サイト上のノード(コンテンツ)の分類に使われます。 各コンテンツ型ごとに、任意の数の「語彙[集] (vocabulary)」を設定でき、 各ノードは、(その「語彙」が許す限り)任意の数の「用語 (term)」を含む(保持する)ことができます。

分かりにくいでしょうか? いやはやごもっとも! 原文の英語でも、すぐにはぴんと来ない概念です。 Drupal特有の概念でしょうか(おそらく、ですが)。 でも、当座、正確に理解する必要はありません。 サイトが大きくなって、コンテンツによって分類したい、 という欲求がでてきた時に、学んでも遅くありません。

本稿では、単純にいきます。 デフォルトで設定されている「タグ (Tags)」という語彙(vocabulary)一つだけを使用します。 各ブログ記事に、任意の数の term (用語またはキーワード)を与えられます(ように設定します)。 タグを用いて、訪問者が、あるキーワードを含む全てのブログ記事を閲覧する、というようなことを可能に(させるように)なります。

パンくずリスト (Breadcrumbs)

基本的な「パンくずリスト」(Breadcrumbs)は本体組込みで利用できるとは言え、その機能は限られています。 本稿では、 Custom Breadcrumbs モジュールを用いて、柔軟に「パンくずリスト」(Breadcrumbs)を生成します。

その他: テーマ、ブロック、コメント他

テーマ (theme)は、サイトと各ページの外観を規定するものです。 本稿では、デフォルトの二つのテーマのうちの一つ、Bartik を使用します。

Drupalでは、デフォルトでは、サイトの副題、メニューバー、コンテンツ本文と言ったページ内の各構成要素の配置は、ブロック (Block)によって規定されます 本稿では、ブロックの設定を行います。

コメントやティーザーは、Drupalの本体組込み機能の一つです。 本稿では、それら Drupalの標準機能を使用します。

必要なモジュールのインストールと有効化

インストール

まず、以下のモジュールをインストールします。

加えて、次の二つのモジュールをインストール(および有効化)しておくことをお勧めします。 サイト管理に役立つモジュールです。 (ただし、本稿の以下のスクリーンショットは、単純のため、これら二モジュールを使用していない状態のものです。)

  • Admin Menu (管理者がのメニュー管理に有用)
  • Module Filter (インストール済みモジュール管理に有用)

これらのモジュールをインストールするのに抜群に簡単な方法は、 drush を用いることです。 貴サイトの Drupalのディレクトリ(またはフォルダ)に chdir (移動)して、以下を実行すればおしまいです。

drush を使用しない場合、GUIだと、以下の手順になります。 まず、貴サイト(http://www.example.com/ とします)に管理者としてログインし、 最上部のメニューバーの Modules (=モジュール)をクリック、次いで画面最上部近くにある Install new module のリンクをクリックします。 あるいは代わりに、貴サイトのドメイン直下の /admin/modules/install を(ブラウザのアドレスバーにコピーして)開いても同じことです。 Drupal本家のウェブサイトから、それぞれのモジュールの圧縮ファイルを見つけます (上述のリンクを参照して下さい)。たとえば、
http://ftp.drupal.org/files/projects/token-7.x-1.5.tar.gz
そして、(貴サイトの)ページ上のフォーム Install from a URL 内に上の圧縮ファイルURLを入力し、 Install ボタンを押します。

(GUIでなく)コマンドライン上で作業する場合は以下の手順になります。 これをインストールするすべてのモジュールに対して繰返します。 なおここでは、Drupalがインストールされた(最上部)ディレクトリを /DRUPAL-ROOT/ と記述しています。これは実際には、 ~/public_html/~/Sites/ やあるいはインストール状況に応じて別のディレクトリでしょう。

  1. 上述の圧縮ファイルをローカルの任意のディレクトリ(たとえば ~/Downloads/)にダウンロードします。
  2. 同圧縮ファイルを、/DRUPAL-ROOT/sites/all/modules/ 以下に解凍します。
    たとえば、ターミナルを開いて、以下のコマンドを走らせ(入力し)ます(「%」は除くこと):
    % cd ~/Downloads/
    % tar xvfz token-7.x-1.5.tar.gz
    % mv -i token /DRUPAL-ROOT/sites/all/modules/

有効化 (Enable)

次に、使用するモジュールを有効化 (enable)する必要があります。 なお、(一個の圧縮ファイルとしてダウンロードした)モジュールのパッケージ一個には、複数のモジュールが含まれていることがよくあります。 それらはそれぞれ個別に「有効化」することが必要です。

ここでも、抜群に簡単な方法は、drush を用いることです。 サイトの Drupalのディレクトリに chdir (移動)して、以下を実行します。

drush を使用せず、GUIだと、管理者メニューバーの Modules (=モジュール) をクリックして(または /admin/modules を開き)、 上述のモジュールを全てクリックして、最後、ページ最下部にある Save configuration (=設定を保存)ボタンを押して変更を確定(保存)します。

(注:) モジュールの内、Blog モジュールは、有効化しないで下さい。 同モジュールは複数著者によるブログのためのもの(Drupal 7 専用)ですから、ここでは用いません。

これにて第一段階は完了しました。 以下の作業は、全てウェブサイト上で行います。 (もしまだならば)ブラウザで貴サイトを開いて、 管理者としてログインしておいて下さい。

Screen Shot: Site Information

Site information を編集中。 ここでは、Drupal はローカルサーバー内のサブディレクトリにインストールされています。

最も基本的な設定

まず、サイトの最も基本的な設定を行います(このうち幾つかは既にお済ましかも知れませんが)。

(画面最上部の)管理者メニューの Configuration (=環境設定)をクリックし、 次いで、 Site information (=サイト情報)に進み(クリックし)ます。 または次の URLを開きます: /admin/config/system/site-information
以下のように編集して下さい(もしまだ行っていなければ、ですが)。

SITE DETAILS: Site name, Slogan, E-mail address
適切に設定。ここのメイルアドレスはサイトのデフォルトのアドレスであり、 管理者(ユーザー)のメールアドレスとは異なっていても構いません。
FRONT PAGE: Number of posts on front page (=トップページの記事数)
デフォルトは 10。上の画面では 2 に設定しました。
FRONT PAGE: Default front page (=デフォルトのフロントページ)
デフォルトは node。消去して(つまり空文字列として)下さい。

編集後、画面最下部の Save configuration (=設定を保存)ボタンを押すことをお忘れなきよう。

新コンテンツ型 Blogpost 生成

(画面最上部の)管理者メニューの Structure (=サイト構築)をクリックし、 次いで最上部近くのリンク Add content type (=コンテンツタイプの追加)をクリックします。 または次を開く: /admin/structure/types/add 。 そして以下のように編集します。

まず、最上部のフォーム Name内に Blogpost と入力します(引用符は除いて)。 最下部近くのボタン Save content type を押して、保存します。 切替わった新しい画面で、新コンテンツ型 Blogpost が、最下段に加わっているのが確認できます。

Screen Shot: Content-type created

新コンテンツ型 Blogpost が生成された。

次に、コンテント型の同表内の Blogpost の行の中の manage fields (=フィールドの管理)をクリックします。 ここで、このコンテント型に属する各記事(投稿)がどのような情報を保持するかを設定します。 表内の最下段(ラベル: Add existing field)で、 中央のフォームがドロップダウンリストで - Select an existing field - となっているのが見えるでしょう。そこで、 Image: field_image (Image) を選び、最下部の Save ボタンを押して保存します。 画面が別の設定画面に切替わります。 ここでは特に何も編集や更新の必要はありません(そうしたければどうぞ)。 単に最下部までスクロールして、 Save settings ボタンを押して保存します。

再び画面が切替わって、元の manage fields (=フィールドの管理)編集画面に戻りました。 新たに Image の行が、Body の下に加わったのが確認できます。

Screen Shot: Content-type: Manage-fields

新コンテント型 Blogpost 編集中、Imagemanage fields に加えたところ。

この手順を再度繰り返します。今回は、 Image: field_image (Image) の代わりに(と言っても、もう同項目は加えたので、今では同項目はドロップダウンリストからはそもそも消えているはずですが) Term reference: field_tags (Tags) を選んで、保存します。

ここで設定した 5つの項目(Title, URL path settings, Body, Image, Tags)が、 Blogpostコンテンツ型のコンテンツ(記事、投稿)を作成する時に入力または編集するものです。

さて、画面上部に、いくつかのタブが見えます。 中央のタブが、MANAGE DISPLAY (=表示の管理)です。クリックして下さい。 今、表内の 3行は、上から Body, Image, Tags になっています。マウスのポインターを文字 Image のすぐ左側の十字マークの上に移動させ、ドラッグ・アンド・ドロップすることで、この Image 行を Body 行の上に移動させます。 最後、ボタン Save を押すことをお忘れなく。

表のこの 3行(Image, Body, Tags)が、(このコンテンツ型の)記事を閲覧した時に上から表示される順番です。 なお、題名は(この設定に表れていませんが)最上部に表示されます。 以上がデフォルトの表示設定です。 上部右側(主メニュータブの下部)の Teaser (=ティーザー)タブをクリックすることで、 ティーザーでの表示を編集設定することもできます。 当座、敢えて変更せず、デフォルトのままにしておきます。

Pathauto 設定

(注): 前述のようにPathauto モジュールと日本語題名との相性はよくありません。 もし必要無ければ、この節は飛ばして下さい。

Screen Shot: Pathauto configuration

Pathauto モジュール設定画面。

Pathauto ノード(この場合はブログ記事)を作った時、URLエイリアスを自動的に生成するモジュールです。 ただし、若干の設定が必要です。

管理者メニューの Configuration (=環境設定)をクリックし、 次いで URL aliases (=URL エイリアス)に進み(クリックし)ます。 または次の URLを開きます: /admin/config/search/path
上部のタブの内、PATTERNS をクリックします。

最上部のフォームグループ(CONTENT PATHS)の最下部に "Pattern for all Blogpost paths" というフォームがあります。そこに "blog/[node:title]" と入力し、最下部のボタン Save configuration を押して保存します。 これで、Blogpost コンテンツ型のデフォルトの URLエイリアスはディレクトリ /blog/ 以下で、ファイル名は記事の題名から抽出されたものになります。

なお、ここの入力で、先頭に「/」は加えないで下さい。 それが、Drupalに一般的な仕様です。

次いで、別のタブ SETTINGS をクリックします。 余談ながら、これらタブのうちの幾つかは、Pathauto モジュールが有効化されて初めて顕われるものです。 それが Drupalでモジュールが動く仕組みです。 つまり、モジュールは、 configuration, structure, permission と言った管理者メニューに追加選択肢を与えることがあります。

グループ Update action において、 "Create a new alias. Delete the old alias." をチェックします(デフォルトで既にチェックされているかも知れません)。 Save configuration を押して保存します。

これは以下の意味です。 一旦、URLエイリアスが生成された後、もしそれが(編集などで)変化して旧いものがそのまま残されると、新エイリアスを期待する時に旧いエイリアスの方に飛ばされたりして、問題を起こすことがあります。 そのような変化の際、Pathautoモジュールが旧いものを消さない限り、SQLデータベースに直接アクセスする力技以外には、その旧いエイリアスを消去する方法が無いかも知れません(参照: drupal.org上のバグ報告)。 そのような理由で、上が筆者の推奨設定です。

なお、仮に、ある URLエイリアスを長い間使ってきたのが、何らかの理由で変更が必要になった場合は、 Redirect モジュールで(HTTP 403を発生させて)新しい URLエイリアスに転送させるのが優れた方法でしょうか。 そうすると、デッドリンクも発生せず、新旧二つが並立して混在する事も無く、検索エンジンでも再登録がスムーズに進みますから。

これで、Pathauto モジュールの基本設定は終了です。 同モジュールは、デフォルトで、(英数字の)題名の各単語を「-」でつないだものを URLエイリアスとします。 それは設定により変更できます。

初めてのブログ記事投稿!

さぁ、これで、最初のブログ記事投稿の準備が整いました! 管理者メニューの Content、 次いで Add content をクリックします。 または、フロントページ(例: http://www.example.com/)を(管理者としてログインした状態で)開いて、ページ内あるいはサイドパネルの Add [new] content をクリックします。

Blogpost をクリックします。 つい今しがた、ブログ用コンテンツ型として設定したものですね。 ここでお好きなように編集できます。 とりあえず、Title (最上部のフォーム)に "My first post" と入力して、Body にも適当に何かを書きましょう。 次いで、画面最下部にある表のすぐ上の「Tags」フォームに "fruit, red" と入力します。 最下部の Preview ボタンを押します。

Screen Shot: Preview of a new content

初めてのブログ記事編集の最中、プレビューしているところ。

(注:) もし、Pathauto モジュールを使用していない場合、画面下部の表中のタブ URL path settings にて、 blog/my-first-post を入力して設定しておきましょう。

これで問題なければ、最下部のボタン Save を押して保存します。

おめでとうございます! こうして、ご覧の通り、最初のブログ記事が無事投稿、出版されました。 URLは、http://www.example.com/blog/my-first-post です(ドメイン名を貴サイトのものに読み替えて下さい)。

フロントページを開いて下さい。 今投稿したブログ記事のティーザーが見られることでしょう (もしブログ本文が短い場合、ティーザーは全文とほぼ同じかも知れません)。 ティーザーの題名部、あるいは "Read more" のリンクをクリックすることで、ブログ記事全文が見られます。

ここで一旦ログアウトして、同ページを見てみましょう。 少し違って見えますね。それが、編集者と一般訪問者との違いです。 管理者として再度ログインし直して、作業を続けましょう。

二番目のブログ記事投稿

もう一本、ブログ記事を投稿しましょう。 題名は、"My second post" とします。 Tags のフォームで、"fruit, yellow" と入力してみて下さい。 "f" を入力するや否や "fruit" というヘルプ箱が表示されたのに気付きましたか? これは、"fruit" という用語(キーワード)が語彙 Tags にすでに登録されているからです。 一方、同時に、新しいキーワード(ここでは "yellow")を追加することもできる次第です。 これは、先に、コンテンツ型をそのように設定した結果です(デフォルトがそうだ、ということ)。 そうではなく、Tags に新しいキーワードを追加するのを禁止して、既存のものだけに限るように設定することも可能です (設定画面: /admin/structure/types/manage/blogpost/fields/field_tags/widget-type / 管理メニューの Structure (=サイト構築)からも辿れる)。

同記事を保存したら、同記事閲覧の画面になりましたね。 記事本文の下に、二つ(fruityellow)の "Tags" が見えます。 "fruit" の方をクリックすると、投稿した二つのブログ記事のティーザーが列挙されます。 両記事とも、タグ "fruit" を持つからです。 一方、"yellow" の方をクリックすれば、二番目の記事しかあがってきません。 これが、Tags の使い方の一例です。

前後の記事へのリンク設定

管理者メニューの Structure (=サイト構築)から、 Content types をクリックし、次いで Blogpost の行の "edit" をクリックします。 または、/admin/structure/types/manage/blogpost を開きます。 画面をスクロールして、下部の表中、左側のタブの中から、 "Flippy settings" をクリックします。 "Build a pager for this content type" をチェックします。 クリックした途端、他にも多くのオプションが顕われますが、当座無視して、この変更を保存します(ボタン Save content type を押下)。

ちなみに、最初にこのコンテンツ型を作成・設定した時に、この設定をすることももちろん可能でした。 説明の都合上、この順序にしただけです。

最初のブログ記事を見てみましょう(http://www.example.com/blog/my-first-post)。 記事本文の下側に "Next" というリンクがつきましたね。 それをクリックすることで、二番目のブログ記事が見られます。

ブログ記事目次ページ — Views

ここでは、(最新の)ブログ記事の目次ページを作成します。 そのため、Views モジュールを使用します。 Views モジュールは、数ある Drupalのモジュールの中で、最も自由度が高く強力なものの一つです。 しかしその自由度の高さは、裏を返せば、設定はかなり複雑であることも意味します。

管理者メニューの Structure (=サイト構築)から Views をクリックするか、または /admin/structure/views を開きます。 表中の "Front page" の行で、 一番右側の列(OPERATIONS)で、 Enable (有効)のすぐ右側の下向き三角形をクリックすると、 ドロップダウンリストが現れます。 Clone を選び(クリックし)ます。

Screen Shot: Creating new Views

Frontpage をクローンして新Viewsを作成しようとしているところ。

画面が切替わったポップアップの中のフォーム「View name」に Blog-index と入力します。 Continue ボタンを押して作業継続します。 これが、この新Viewの(管理用の)名前です(だから、tanuki でも何でも構わないわけですが)。

次が、この新Viewsの設定用主画面です。 以下のように編集します。

  1. 主表の左上隅近くに、 "Display name: Page" という行があります。その "Page" の部分をクリックし、Nameを 「Page」を「Blog」へと書換えます。 これが、目次ページの題名として使われる文字列です。

    (注): 日本語のみでサイトを構築する場合は、「Blog」の部分を「ブログ」などとしてもちろん構いません。 バイリンガルあるいは多国語サイトの場合は……、それはサイトの国際化の設定次第になります。

  2. 表の左側の列で、 FILTER CRITERIA という項目の中で、 同語の右側にある「Add」をクリックします。 立上がったポップアップ(モーダルウィンドウ)の中で、(スクロールし続けて) Content: Type をチェックして、最下部近くの Apply (all displays) (=適用)ボタンを押します。 次に立上がったポップアップの中の Content types の項目で、Blogpost をチェックします(左側では、デフォルトで One of がチェックされているはずです)。最下部近くの Apply (all displays) (=適用)ボタンを押します。 画面が切替わって元の Views設定用主画面に戻った時、 FILTER CRITERIA の項目の最後に、 "Content: Type (= Blogpost)" の 行が加わっているのが見て取れるでしょう。 これで、この Blog-index View ページは、コンテンツ型 Blogpost の記事のみを表示するように設定できました。

  3. 設定用主画面の表中、真ん中の列の一番上に、 「PAGE SETTINGS」の項目があります。 その最初の行は、 「Path: /frontpage」。 その /frontpage をクリックして、「frontpage」を「blog」に書換えます。 ボタンApply(=適用)を押します。 これが、目次ページの URLです。

  4. 表の真ん中の列の上の方、上述の行(今では Path: /blog となっている)のすぐ下側の行が 「Menu: No menu」です。 No menu をクリックして、ポップアップの中で、 "Normal menu entry" をチェックします。 右側にフォームが現れます。 「Title」フォームに「Blog」と入力します。 「Menu」ドロップダウンリストの中から、 "Main menu" を選びます。 下部の Apply (=適用)ボタンを押します。

  5. 最後、設定用主画面の上部にある Save ボタンを押して、これまでの編集を保存します。

さて、 http://www.example.com/blog にアクセスしてみましょう。 今までのブログ記事のティーザーが列挙されているでしょう。

Screen Shot: Creating new Views

Views 設定用主画面 (作業終了間際)

主メニューの調節

今では、主メニューバー上に Blog タブが見えているはずです。 ただし、Blog タブは、Home よりも左側に来ていませんか。 この位置関係を交換してみましょう。

管理者メニューの Structure (=サイト構築)から Menus をクリックするか、または /admin/structure/menu を開きます。 一番上の行が、Main menu になっています。 同行の list links をクリックします。

出てきた表の上からの順番が、メニューバーで左から表示される順番です。 表中の各行の一番左側の十字マークを ドラッグ・アンド・ドロップすることで BlogHome との順序を変更できます。 ボタン Save configuration を押して保存します。

これで、貴サイトのどのページを閲覧しても(リロード=再読込が必要かも知れませんが)、 主メニューバーの中の順序が変化したのが見て取れます。

フロントページの微調整

ブログ目次ページができましたが、現在、それはフロントページと酷似していますね。 フロントページの方だけに最上部に歓迎のメッセージを表示することで、少し差をつけてみましょう。

管理者メニューの Structure (=サイト構築)から Blocks をクリックするか、または /admin/structure/block を開きます。 上右側隅を見れば、現在 BARTIK タブになっていることを確認して下さい。

ここで、最上部近くの文章リンク "Demonstrate block regions (Bartik)" (=ブロックリージョンを仮表示する)をクリックすることで、 この(現在使用中の)テーマ Bartikにて、各ブロックがどのように名付けられて配置されているのかをチェックできます。 ここでは、ブロック「"Featured"」を使うことにしましょう。 なお、別のテーマを用いれば、ブロックの名前も配置も違うものになります。 ですから、(今後)別のテーマを導入したときは、そのテーマに沿って、おそらくブロック設定を再編集する必要が生じます。

まず最初に、画面上方、先ほどの "Demonstrate block regions (Bartik)" のすぐ下にあるリンク "Add block" (=ブロックを追加) をクリックします。 以下のように設定します。

  1. 上から二番目のフォーム "Block description" に、Welcome banner と入力。
  2. 主フォーム "Block body" に、好きなメッセージを書込む。たとえば、「Welcome to my website!
  3. REGION SETTINGS」(=リージョンの設定)の項目で、「Bartik (default theme)」のドロップダウンリストにおいて、「Featured」を選択。
  4. Visibility settings」(=表示の設定)の項目(ページ最下部の表で、左側に数個のタブがある)で、「Pages」(=ページ)タブ(デフォルトで開いているはず)において、 "Only the listed pages" (=以下のページのみ)をチェックして、その下のフォームに、「<front>」と入力(不等号が不可欠です!)。
  5. 画面下部のボタン Save block を押下して保存。

これで、フロントページをリロード(再読込)すると、今入力した歓迎メッセージが最上部に見えます。 一方、他のページではそれは見えません。

パンくずリスト (Breadcrumbs)設定

Custom Breadcrumbs モジュールを用いて、パンくずリスト(Breadcrumbs)の設定を行います。 これまで、フロントページを除くどのページを閲覧しても、文字「Home」が上左隅に表示されます。 これが実は、デフォルトのパンくずリスト(Breadcrumbs)です。 でも、このままでは大して(いや、全く)意味がありません。 Custom Breadcrumbs は、大変自由度が高く、強力なモジュールです。 言葉を替えれば、設定は結構複雑です。 以下、見てみましょう。

管理者メニューの Configuration (=環境設定)から Custom breadcrumbs settings をクリックするか、または /admin/config/user-interface/custom-breadcrumbs を開きます。 以下のように設定します。

  1. 基本設定の項目 PAGE TITLE (=ページタイトル)の中のチェックボックスにて、 Append page titleUse plain text page title crumb の両方にチェックを入れる。
  2. 基本設定の項目 MENU STRUCTURE にて、 Use the menu structure to set the breadcrumb trail にチェックを入れ、その下の Menu name (=メニューの名前) を全てハイライトする。
  3. 次の項目 TAXONOMY STRUCTURE (=高度な設定)において、以下をチェックする。
    • Use the taxonomy hierarchy to set the breadcrumb trail for nodes and taxonomy pages
    • Show vocabulary in breadcrumb trail
    • Show current taxonomy term in breadcrumb trail for node pages
    • Show current taxonomy term in breadcrumb trail on the taxonomy term page
  4. そのすぐ下、TAXONOMY STRUCTURE の項目のラジオボタン Include or exclude taxonomy-based breadcrumbs for the following node types 中で、 「Include」を選択。
  5. 下部のボタン Save configuration (=設定を保存)を押下。

Screen Shot: Custom-Breadcrumbs configuration

Custom Breadcrumbs 設定画面 /admin/config/user-interface/custom-breadcrumbs。同モジュールは、Configuration および Structure の両方で設定編集が必要となることに注意。

続いて、 管理者メニューの Structure (=サイト構築)から Custom Breadcrumbs をクリックした後、 右上隅近くのタブ Node (=ノード)をクリックします。 あるいは、 /admin/structure/custom_breadcrumbs/node/add を開きます。 以下のように設定します。

  1. Node type (=ノードタイプ)ドロップダウンリストにおいて、Blogpostを選択。
  2. Titles (=タイトル)フォームにて、Blog と入力(日本語サイトならば「ブログ」など)。
  3. Paths (=パス)フォームにて、blog と入力(言語問わず)。
  4. 最下部のボタン Save (=保存)を押下。

以上で、パンくずリストの設定が完了しました。 最初のブログ投稿を
http://www.example.com/blog/my-first-post また
http://localhost:8888/sandbox/tags/fruit
を再読込して、パンくずリストがどのように表示されるか確認してみて下さい。

一般閲覧者の権限の調整

現在の(デフォルトの)設定では、貴サイトの一般の閲覧者には、利用できる機能と利用が不可の機能があります。 ここでは、その許可水準の調整を行います。

サイト内検索を許可する

Drupal 7 では、サイト内検索は匿名一般訪問者にはデフォルトでは許可されていません。 それが、管理者としてログインした時には検索箱が見えて使えるのにログアウトすると見えなくなる理由です。

この許可基準は、Permission (=権限)の項目で設定されます。 (画面最上部)管理者メニューの People (=ユーザー) をクリックし、 右上隅のタブ PERMISSIONS (=権限)をクリックします。または /admin/people/permissions 。 出てきた表をスクロールして、Search の項目の中の二行 Use search (=検索を利用する) および Use advanced search (=高度な検索を利用する) について、 AUTHENTICATED USER (=認証済みユーザー) および ANONYMOUS USER (=匿名ユーザー)の両方にチェックを入れます。 最下部のボタン Save permissions (=権限の保存)を押すのをお忘れなきよう。

これで、どの訪問者も貴サイトの検索機能を使えるようになりました。 なお、検索箱は、デフォルトで、サイドエリアに配置されています。

一般訪問者からの記事へのコメントを受付ける

前項と同じく、 管理者メニューの People (=ユーザー) をクリックし、 右上隅のタブ PERMISSIONS (=権限)をクリックします。または /admin/people/permissions 。 スクロールして、Comment の項目の中の行 Post comments (=コメントを投稿)において、 ANONYMOUS USER (=匿名ユーザー)にもチェックを入れます。 あわせて、 Skip comment approval (=コメントの承認を省略)にもチェックを入れることも選べます。 デフォルトでは、匿名ユーザー(一般訪問者)の投稿コメントは、一つ一つ管理者の承認を必要とします。

Screen Shot: Permission configuration

匿名ユーザーによるコメントの権限(許可)設定。

言うまでもなく、一般匿名閲覧者からのコメントを許可すると、spam (つまり自動送信迷惑コメント) に晒される危険性があります。 仮に承認制にしたとしても、大量の spamコメントが投稿されれば、承認手続自体が非実際的になる可能性もあります。

spam を防止あるいは抑制する方法は数多くあります。 Drupalでは、 Honeypot モジュールが人気のあるものの一つで、広く使われている CAPTCHA に比べてユーザーの負担が格段に少ないという利点があります。 もちろん、そもそも最初からコメントは一切受付けないという設定を選ぶのも一案です。

ユーザーのログイン機能の無効化

ブログ中心の貴サイトでは、その辺(=世界中)の誰かが、貴サイトにユーザー登録やログイン(を試行)するのは避けたいかも知れません。 あなた一人がサイトで唯一の管理者であり、編集者であり、登録ユーザーでしょうか。 Drupal 7 では、デフォルトでは、登録ユーザー用のログイン(および未登録ユーザーが登録申込み)のフォームが、サイドエリアに表示されています。 これを隠して見えなくしてしまいましょう。

管理者メニューの Structure (=サイト構築) から Blocks (=ブロック)をクリックします。または /admin/structure/blockUser login (=ユーザーログイン) ブロックが Sidebar first (=第1サイドバー)のブロックに見つかるでしょう。 二番目の列(REGION =リージョン)のドロップダウンリストにて、 - None - (- なし -) を選択します。 最下部のボタン Save block (=ブロックの保存)を押します。

これで、ログアウトしたら、ログイン用フォームは見えなくなり、サイドバーにあるのは検索箱だけになりました。

当然ながら、管理者自身であれ、公開ウェブサイトからリンクを辿ってログインすることは最早できません(サーバーは、ログインするまで、あなたが管理者であることを知りませんから!)。 もちろん、問題ありません。 http://www.example.com/user (ドメイン名を貴サイトのものに置換えること)を開けば、ログイン用フォームが現れます。 公開ページにはどこにもこのログイン用フォームへのリンクはないとは言え、直接 URLにアクセスすればいつでもログインできる、という仕組みです。

Screen Shot: Final blog index page

完成したブログ目次ページ。(管理者ではなく)一般訪問者として閲覧。

今後の発展性は?

それこそまさに皆様次第です!

たとえば、ウェブサイトの見映えを変更したいかも知れませんね — 別のテーマを使いましょう。 SNSで容易にシェアできるようにボタンをつけるのもいいですね。 ブログ記事の任意の場所に画像を埋込んでみたいですか? 誰かがある記事にコメントを残した時、その人が同記事の他人のフォローコメントの通知をメイルで受取れるように設定したいかも知れません。 個人的には、最初にしたいだろうことの一つは、(自分用に)ブログ記事投稿・編集専用のアカウントを作成して、そのアカウントでブログ関係の作業は全て行い、一方、同アカウントでは、誤ってウェブサイトの大事な設定を変更したりすることが(権限的に)不可能なようにすることです。 などなど、可能性は無限大です。 まさに全て皆様次第です!

多くのウェブサイトで見かけるような人気ある機能の多くは、すでに誰かが開発したモジュールがあって、おそらく drupal.org のサイトで見つけられるでしょう。 探してみましょう。 もしくは、自分の好みに完璧に沿った専用モジュールを開発するのもいいですね。 Drupal本体自身に手を入れることさえできます(ただし、一般論として Drupal本体に手を入れるのは勧められません。 というのも、バージョンが上げたりパッチを当てた時に、サイト全体が急に動かなくなる可能性があるからです)。 Drupal は大変自由度の高い CMSですからね。
お楽しみ下さい!

末筆ながら、もしこの文書が有用でしたら(もしくは不正確な記述などありましたら)、どうぞ気軽に以下にてコメントやフィードバックをお寄せ下さいませ。 あるいは、筆者まで連絡を取って下さることも歓迎します。


コメントを追加