2008年11月29日土曜日

スタジオマップ(SPPD)でMySQL5.0が使える

つい先日、SPPDはじめ主だったホスティング先のMySQLのバージョンが
4.0.xなので、drupalの6.xが使えない・・・と書いたばかりだったが

SPPDからメールが来ていて、費用は現状のまま(月額千円)、

ディスク容量300MB→3GB
月額210円でMySQL 4.0.x→無料でMySQL5.0

などなど大幅にサービスレベルを上げたらしい。
素晴らしいぞSPPD。

サイト制作手順の整理

1:まずは当たり前のこととしてページ構成とかページ内容の要件定義。
  ユーザのこだわりの部分とか、既存サイトからそのまま引っ越したい
  ページなどは充分にチェック要。

2:全体のページ構成(階層)図=taxonomy定義=URLエイリアス定義

3:レイアウトが1つで済めばそれに越したことはないが、普通はそうはいかない
  はずなので、2と合わせて、各ページが対応するレイアウト種別も決める。

4:今回は、
  a)トップページで1つ page-front.tpl.php
  b)7つの分野ごとに1つ。計7つ。各分野には5~8ページくらいが含まれる。
               page-業務カテゴリ.tpl.php
  c)サイトマップ、問合せ、プライバシーポリシー、それに検索画面用のレイアウトも1つ。
               page-search.tpl.php

ページ内taxonomyの非表示

投稿した記事の右下済みに表示されるtaxonomy。
表示されるだけなら問題ないものの、リンク先が/taxonomy/・・
となっていて、クリックされると分野別レイアウトとはまた別の
(規定値の)レイアウトになるので具合が悪い。

これは、コンテンツ用テンプレートファイル(node.tpl.php)で
該当箇所をコメントアウトして解決。

2008年11月28日金曜日

ぱんくずリストの表示を業務階層別にする方法

せっかくtaxonomyで業務分野の階層を定義したのだから
ぱんくずリストもこのtaxonomyを基準にして表示できたら
良いな~・・と思っていたら、ありました。
何でもありますね。

http://drupal.0829.info/module/taxonomy_breadcrumb

その名もずばり、「taxonomy breadcrumb」。

ただ、初期値(無設定)のままだと、ぱんくずリストの各項目に
対応するリンクは/taxonomy/term/1 などとなって具合が
悪いので、それぞれの用語に対して、対応する「URLエイリアス」
を設定しておくこと。

あと、ルートに相当する「ボキャブラリ」のbreadcrumb pathは
空白にしないと、ルート自体が表示されてしまう。

投稿情報(投稿者・日付)を表示しない方法

投稿情報が消えないので調べてみると・・

http://drupal.jp/node/443に、「初心者が迷走するかも」
と書かれてました。
要するに、サイトの構築メニューで、テーマ毎の設定ではなくて、
全般(Global)のほうの設定項目に「表示するしない」の
選択があると。なるほど。解決。

2008年11月27日木曜日

URLエイリアス用テンプレートファイル

そもそもDrupalで行こう!と決めた動機が、「パス毎にレイアウトが
変えられる」という点にあったのだが、テストしてみてガックリ。

ページをどんどん作成していくと、作成順にnode/11とかnode/12など
のパスが生成されていくのだが、それらにURLのaliasをつけて、
例えば「service/delivery」「service/hepdesk」などという名称に
したとしても、aliasのほうはあくまでaliasなので、「パス」とは
思ってくれないのだ。困った・・・

で、いつものように検索してみると、何とすばらしい、その名もずばり
「Different page templates depending on URL aliases」という
記事を発見。( http://drupal.org/node/139766

要するに、template.phpの中の_phptemplate_variables()という
関数を再定義して、いや、書き換えればOKということなのだった。

これで予定通り、serviceとかrecruitなどの業務上のカテゴリーを
基準にしてレイアウトを設定
できるようになりましたとさ。
めでたしめでたし。

.htaccess

じゃあ .htaccessは使わないのかというとさにあらず。

Drupalでは、初期設定のままだと、作成した各ページは

ドキュメントルート?q=node/3 

など、いかにも引数を与えて表示させてますというのが丸分かりの
表記になってしまい、検索エンジン対策上も良ろしくないようだ。

これを解消するのが「クリーンURL」と呼ばれる表記法で、上記だと

ドキュメントルート/node/3

となる。で、クリーンURLを可能にするには、.htaccessの中におまじないが必要。

RewriteEngine on
# 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]

おまじないが済んだら管理メニューでクリーンURLを「有効」に。

Drupal5.7のインストール

インストールガイドに詳しく書いてあるのだが、sakuraだと.htaccessでphpの制御を
しようとすると「500エラー」になる。sakuraが用意してくれているツールを使って
php.iniに下記を記述すること。

;
mbstring.language = neutral
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = off
mbstring.func_overload = 0
mbstring.internal_encoding = UTF-8

Drupalのインストール

早速Drupalのサイトにアクセスして最新版(6.x)をダウンロード。
インストールも簡単。。。しかし、あれ!?動かないぞ・・・

6.xでは、MySQLの4.1以上が必須要件になっていたのだった。。。
これまでMySQLのバージョンなんて気にしたこともなかったのだが、
私がテスト環境で使えるsakura、sppd、lolipopはどれも4.0.xであることが判明。
なんちゅう落とし穴。このためにまたどこか契約するのもバカバカしいし。

しかたが無いので5.7をダウンロードしてインストール。
まあ5.xのほうが資産も多いだろうと自分を説得。

どうしてDrupalなのか

割とページ数の多いサイトなのでCMSをベースにしないと大変だろうとは思っていた。

ただ、今回の要件は既存の(HTML)サイトからの移行ページも結構ある。
また、ユーザ要件を確認していくと、トップページとコンテンツページが同じレイアウト
では具合が悪い感じ。さらに、カテゴリーというか分野毎にレイアウトが
変更できたほうが望ましいようだ。

これまでXoopsとかGeeklog、Wordpressくらいしか触っておらず、それらも、
CMSに合わせてサイトを制作」してきたという経緯がある。

それらのCMSでは「テーマの変更が一瞬でできる」というメリットがあるものの、
全ページ同一のレイアウト(テーマ)、良くてもトップページのみが別にできる程度という
認識だったので CMSを使うのは難しいんじゃなかろうか・・・というギモンもあった。

で、色々調べてみたところ(とはいえ有料のCMSは調べてないのだが)、Drupalだと
レイアウトを規定するテンプレートファイルが、「トップページ用」とか「パス別」とか、
究極は「個別のページごと」に変えられるということなのだ。しかも結構簡単に。

これはスバラシイ、と、この情報だけでDrupalの採用を決めてしまった私・・・

これまでの経緯

Drupalで200ページほどのビジネスサイトを制作することになりました。
色々勉強しないといけないこともありそうです。

ただ私の性格上、完成したときにはそれまでの苦労やくふうはすっかり
忘れてしまうので、もう1度Drupalで制作することになったときに全く
同じ苦労をしてしまいそうです。

というわけで、これは自分のための備忘録です。。。