Drupal導入メモランダム(さくらインターネット スタンダード)

CMSを運営する機会があったので、勉強することになりました。
CMSがいろいろある中で迷ったのですが、「Drupal(ドルーパル)」を選択。

選択理由は、

  • フリーである
  • 多くのサイトで導入されている
  • 将来性が高そう

といったところ。機能的に他のCMSと比べてどの程度違いがあるかまではまだわかっていませんが、多数のモジュールが公開されてることも考えると、普通に使う分には十分な機能がありそうです。
速度とか使いやすさとか、やたらめったらと使い倒すわけでもなければ気にならないし。

Drupalを設置する

英語のドキュメントが充実しているので読める方はそちらのほうがいいですが、私のように苦手な人は、下のリンクを参考にするとよいでしょう。

さくらインターネット スタンダードでの場合、少し癖があって、そのまま設置するとうまくいきません。

Drupal.0829.info さくらインターネットのとおりにやれば設置できます。

上記のリンクには書かれていないこと(主にさくらの仕様に関すること)を補足しておくと、

  • さくらの場合DBサーバは別なので、インストール時にホスト名を入力。DBサーバはさくらのサーバ設定から見れます。
  • cronの設定にも制限があります。DB同様サーバ設定からcronを設定しましょう。
  • クリーンURLを使用する場合、.htaccessを少し書き換える必要があり。具体的には、
  # Rewrite current-style URLs of the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

  # Rewrite current-style URLs of the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA]

にする。

テーマの導入

テーマ(Webのデザインを設定するスキンのようなもの)はDrupal.org Themesからいろいろとダウンロードできます。気に入ったものをthemasディレクトリに保存しましょう。

自分でいじる場合は、各テーマを参考にしてPHPCSSのファイルを書き換えるとよいです。

デフォルトでは、

page.tpl.php
ページ全体のテンプレート
block.tpl.php
サイドバーのブロックテンプレート
box.tpl.php
メインのコンテナのテンプレート
comment.tpl.php
コメントのテンプレート
node.tpl.php
ノードのテンプレート

で設定できます。また、○○.tpl.phpというファイルを作って、templete.php内で$variables['template_file'] = '○○';とでもすれば、テンプレートを書き換えられるっぽいです。
あと、特定のノードタイプに対して書き換える場合はnode-○○.tpl.phpを使うとよいみたい。

テンプレート周りはまだ不確かなので間違ってたらすみません。とりあえず、page.tplcssだけでもいじっておけば大体大丈夫です。

にいろいろとTipsが書かれています。

モジュールの導入

5.xでの場合です。

デフォルトでは最低限のモジュールしか入っていないので、インストールしましょう。とりあえず私が入れたのは、

Views
ノードを抽出して表示できる
Spam
スパム対策
PEAR Wiki Filter
いくつかのWiki記法が使えるようになる。別途PEARのパッケージをダウンロードする必要あり
Pathauto
PathモジュールでのURLエイリアス設定を自動化
jTooltips
ツールチップの見栄えがよくなる。Javascript使用

その他のモジュールに関しては、

あたりをどうぞ。でもモジュールは本家を見たほうが早いかもしれない。

サイト構築

コンテンツの作成でページを作成。階層関係があるなら、ブックがオススメ。ページとかストーリーでも似たようなものです。

メニューも追加すれば普通の見た目のサイトは大体構築できるはず。

Tips

自分で困ったときの改善点のメモ

3階層以下のサイトメニューを表示

テンプレートのなかに$secondary_linksなるものがあって、メインのメニューで2階層目にあたるもののリストが格納されてます。

デフォルトでは現在のページがメニュー階層に当てはまるときリスト表示してくれるのですが、2階層までしか表示してくれません。

3階層目以下にもメニューがある場合は、テンプレートに

<?php
$msn = variable_get('menu_primary_menu', 0);
$tertiary_links = menu_primary_links(3, $msn);
if (!empty($tertiary_links)){
  print '<div id="tertiary" class="clear-block">';
  print theme('menu_links', $tertiary_links);
  print '</div>';
}
?>

みたいな感じで追加すればOK。数字を変えれば4階層以下も同様。

おわりに

まだ勉強中なので間違ってるところがあったらすみません。日本ではまだあまり普及していないので、まともにやろうとすると英語を勉強しなければなりますまい。