コンテンツブロック内の外部リンクがサイトトップになる

2010年10月4日 at 10:21

発見したのでご報告。
Ver.5.4.0.5日本語版、英語版共に発生します。
コンテンツブロック内にサイトマップで追加した外部リンクを「リンクを追加」から追加すると、ページが表示された時に、リンク先がサイトトップ( / )になってしまいます。

修正方法は以下の通り。

/concrete/models/page.php内のgetCollectionPathFromID()を以下に書き換える。

public static function getCollectionPathFromID($cID) {
$path = Cache::get('page_path', $cID);
if ($path != false) {
return $path;
}

$db = Loader::db();
$path = $db->GetOne("select cPath from PagePaths inner join CollectionVersions on (PagePaths.cID = CollectionVersions.cID and CollectionVersions.cvIsApproved = 1) where PagePaths.cID = ?", array($cID));
if(!empty($path)){
$path .= '/';
}else{
$path = $db->GetOne("select cPointerExternalLink from Pages where cID = ?", array($cID));
if(empty($path)){
return false;
}
}

Cache::set('page_path', $cID, $path);
return $path;
}

その後、キャッシュを削除。

尚、5.4.1RCでは修正されていますが、外部リンクが「http://example.com/index.php?cID=xxx 」の形式になってリダイレクトされてしまいます。

ああ、お客さんのサイトもパッチ当てなきゃ...