ちゃだろぐ

computing

< 2012-05 >
  12345
6789101112
13141516171819
20212223242526
2728293031  
Powered by Nucleus CMS
Total1725155 7days2566 Yesterday368 Today310
Since 2004-07-11

Nucleus

FancyURLsモードで新しいblogをサブディレクトリに置いた場合のitemlink

FancyURLsモードで新しいblogをサブディレクトリに設置すると、デフォルトではテンプレート変数<%itemlink%>の返す値は、
http://www.tyada.com/music/index.php?itemid=253
のようになってFancyURLsしてくれない。できれば、
http://www.tyada.com/music/item/253
でアクセスしたいのが人情ってもんだ。

# と言いつつ、長い間放っていたが。

<%itemlink%>の値を正しくFancyURLsさせるには、/music/index.phpの中の$CONF['Self']の値を以下のように変更する。

$CONF['Self'] = '/music';

もしくは相対パスなら、

$CONF['Self'] = '.';

また、上記のリンクをアクセスすると 404 Error - Not found になってしまうので、サブディレクトリmusicの中に以下のitemファイルを作っておく。

<?

include('../fancyurls.config.php');
include('../config.php');

$data = explode("/",serverVar('PATH_INFO'));
$itemid = intval($data[1]);

selectBlog('music');
selector();

?>

テンプレート変数<%itemlink%>は、/nucleus/libs/globalfunctions.phpのcreateItemLink関数で$CONF['URLMode']の値に従って返されるが、この関数の直前に$CONF['Self']の値が.phpで終わっていたら、FancyURLsモードからNormalモードに戻す以下の処理がある。

// switch URLMode back to normal when $CONF['Self'] ends in .php
// this avoids urls like index.php/item/13/index.php/item/15
if (	($CONF['URLMode'] == 'pathinfo')
	&&	(substr($CONF['Self'], strlen($CONF['Self']) - 4) == '.php')
	) {
	$CONF['URLMode'] = 'normal';
}

サブブログをサブディレクトリに設置すると、$CONF['Self']の値はサブディレクトリ内のindex.phpの中で定義されるが、デフォルト設定では$CONF['Self']の値は'index.php'と'.php'で終わっているため、Normalに戻ってしまう。

かといって、マニュアルの「便利な使い方ヒントの紹介 - Googleなどのサーチエンジンに引っかかりやすくする方法 - Fancy URLモード」の記述のように

同様にindex.phpファイルの$CONF['Self']の値を編集(引用符の中を削除)

してしまうと、<%itemlink%>の返す値は
http://www.tyada.com/item/253
になってしまう。そこで、

$CONF['Self'] = '/music';

とすれば、うまく行く。

2005-05-14_00:37-tyada

Related


Fatal error: Cannot redeclare class soapclient in /virtual/tyada/public_html/nucleus/plugins/nusoap.php on line 4538