Zencart を静的URLに変換してみる
方法としては2種類あります。
・Ultimate SEO URLsを使う
・がとらぼさんのところのZenCart URL書き換えパッチ日本語版をカスタマイズして使う
S-pageさんのところのZenCartで動的URLを静的URLに変換を参考に今回はがとらぼさんのパッチを使って頑張ることにしました。
理由としては
ZenCart URL書き換えパッチ日本語版は、カテゴリID.htmlや商品ID.htmlの他、自由に設定することもできますが、Ultimate SEO URLsモジュールは手軽な一方、カテゴリや商品名が変更された場合に、URLが変更されてしまいます。ということなので、商品の入れ替えなどのときにUltimate SEO URLsの方だと手間がかかってしまうかなということと、定番ページのURLの変換ができるかどうかわからなかったので、書き換えパッチの方が汎用性があるのではと判断してのことです。
がとらぼさんのところで詳しく解説されているので、.phpや.htaccessの知識が少しでもあればわかります。(始めはずらっと書かれていることを全て理解しなければならないのかと考えると諦めそうになりましたけど)ゆっくり一つの項目ごとに読み進めれば問題なかったです。
1.html_output.phpをダウンロードする。Zencart ver1.2対応なのでver1.3を使用している場合は修正が必要です。
がとらぼさんのパッチ
////
// Output a form textarea field
function zen_draw_textarea_field($name, $wrap, $width,
$height, $text = '', $parameters = '', $reinsert_value = true)
{
$field = '<textarea name="' . zen_output_string($name) .
'" wrap="' . zen_output_string($wrap) . '" cols="'
. zen_output_string($width) . '" rows="'
. zen_output_string($height) . '"';
if (zen_not_null($parameters)) $field .= ' ' . $parameters;
$field .= '>';
if ( (isset($GLOBALS[$name])) &&
($reinsert_value == true) ) {
$field .= stripslashes($GLOBALS[$name]);
} elseif (zen_not_null($text)) {
$field .= $text;
}
$field .= '</textarea>';
return $field;
} この部分をver1.3のものに戻す。 /*
* Output a form textarea field
*/
function zen_draw_textarea_field($name, $width, $height,
$text = '', $parameters = '', $reinsert_value = true) {
$field = '<textarea name="' . zen_output_string($name) .
'" cols="' . zen_output_string($width) . '" rows="'
. zen_output_string($height) . '"';
if (zen_not_null($parameters)) $field .= ' ' . $parameters;
$field .= '>';
if ( (isset($GLOBALS[$name])) &&
($reinsert_value == true) ) {
$field .= stripslashes($GLOBALS[$name]);
} elseif (zen_not_null($text)) {
$field .= $text;
}
$field .= '</textarea>';
return $field;
}
2.url_data.phpをダウンロードする。url_replace.datという名前なのでリネームする必要があります。ルートにおくわけですが、このファイルでカテゴリーや商品をどのような名前で表示させるかを決められます。
3..htaccessをダウンロードする。mod_rewriteを記述します。ほとんど書いてくれていますが、自由ページは指定がないので、自分で好きなようにファイル名をつけてやります。
4.最後にconfigure.phpを修正(1行追加記述)します。
define('USE_PCONNECT', 'false'); // use persistent connections?
define('STORE_SESSIONS', 'db'); //
leave empty '' for default handler or set to 'db'
define('USER_FRIENDLY_URLS_REWRITE', 'true');5.必要に応じてテンプレート側でトップページへのリンクを全て書き換えて、全てのファイルを上書きすれば出来上がり。
一からmod_rewriteを書いたりするのって結構面倒だけど、ガトラボさんのパッチを利用することで、作業はすごく簡単にできますよ。
