NP_TagEX|Magical URLで使う

NP_TagEX|Magical URLで使う

Author : pushman|Nucleus|2005-11-17 Thu 22:38

いやいやいやいや。ほんとおもしろいですね、タグ。いくつかのバグフィクスもされた最新版が公開されています。
NP_TagEX バージョン0.4 @ nakahara21

で、Fancy URL で使っている場合の対策は書かれていますが、親戚の様な使い方である mod_rewrite*1 を利用した場合、ちょっと不具合がありました。といっても、その原因はMagical URL を使用する場合も「グローバル設定」の「URL モード」を「Fancy」にする必要があるためで、「NP_TagEX」の原因ではありません。それをふまえた上で、メモ。

具体的にどういう症状を引き起こすかというと、タグをクリックした時の URL を開いても、そのタグでフィルタリングしたアイテムが一つも表示されなくなります。ま、実際に Magical URL で運用している人は、インストールすれば嫌でも目にすると思いますので、おためしください。

修正はもうあっちゅう間にできます。一番最後に以下のような if 文があります。

if ($CONF['URLMode'] == 'pathinfo')
	$link = $CONF['BlogURL'] . '/tag/' . $ready.$sep.$this->_rawencode($tag);
else
	$link = $CONF['BlogURL'] . '?tag=' . $ready.$sep.$this->_rawencode($tag);
return addLinkParams($link, $linkparams);

Fancy URL を利用しているなら、

http://www.nannokannno.com/tag/タグ

として、そうでない場合は

http://www.nannokannno.com/?tag=タグ

としてください、ということですね。
ですので、以下のように修正するだけです。

if ($CONF['URLMode'] == 'pathinfo')
//	$link = $CONF['BlogURL'] . '/tag/' . $ready.$sep.$this->_rawencode($tag);
	$link = $CONF['BlogURL'] . '?tag=' . $ready.$sep.$this->_rawencode($tag);
else
	$link = $CONF['BlogURL'] . '?tag=' . $ready.$sep.$this->_rawencode($tag);
return addLinkParams($link, $linkparams);

削除するのではなく、念のためにコメントアウトしておきましょう。

と、バージョン 0.2 まではこれでよかったのですが、0.4 以降は Fancy URL への対応が組み込まれたので、もう一個所修正部分が増えました。「function getNoDecodeQuery」内にも Fancy URL の判別コードと、その場合の処理が書かれていますので、僕の施した修正をした場合は Fancy URL の処理部分を全てコメントアウトすることで、問題を回避できました。こんな感じです。

function getNoDecodeQuery($q){
/*	global $CONF;

	if ($CONF['URLMode'] == 'pathinfo'){
		$urlq = serverVar("REQUEST_URI");
		$tempq = explode($q.'/', $urlq, 2);
		if($tempq[1]){
			$tagq = explode('/', $tempq[1]);
			return $tagq[0];
		}
	}else{*/
		$urlq = serverVar("QUERY_STRING");
		$urlq = str_replace('?','',$urlq);
		$urlq = explode('&',$urlq);
		for($i=0;$i<count($urlq);$i++){
			$tempq = explode('=',$urlq[$i]);
			if($tempq[0] == $q)
				return $tempq[1];
		}
//	}
	return FALSE;
}

もう思い切っていっきにごそっとコメントアウトするのがポイントです。僕は閉じ括弧のコメントアウトをよく忘れるので、ご注意。

  • *1別名 Magical URL です。

Tag(s): NP_TagEX

[Nucleus] Next & Previous

Comment Form (policy)

(メールアドレスは非公開です)

Others
Newest 5 Items

NP_znItemFieldEXとNP_ifの連携

NP_znItemFieldEX|PHP 5で検索機能を有効にする

NP_GoogleMaps|最大ズームレベルを変更

NP_ImageExtractor|エラー修正

NP_ImageExtractor|画像を抽出するプラグイン

Web Service

Google Mapsで緯度と経度を測定

Nucleus CMS: Pure Publishing