外部リンクの不具合 (5.5.1)
2012年3月4日 at 16:33
5.5.1 日本語版でのテストをしています。
サイトマップ上に設置する外部リンク機能。
オートナビやページリストに concrete5 サイト以外の場所に飛ばすことが出来る機能です。
その機能ですが、詳しくは確認していませんが 5.5.1 から動作が変わります。それにともなって、ページリストの挙動がおかしくなっているかもしれません。5.4.2.2 でも同じような現象が起こっているかも。
皆さまの確認をお願いいたします。
ページリストの中に、外部サイトへのリンクがある時に、きちんとそのリンクが有効ですか?特にプリティーURLを有効にしている皆さまへ確認をお願いいたします。
【専門的な説明】
以前のバージョンでは、URL の中に外部サイトの URL が PagePath テーブルに埋め込まれ、そのアドレスを踏むと外部サイトに飛ぶように設定されています。
しかし、5.5.1 (?)より、プリティー URL ではなく、【サイトUR:】/?cID=XXXX というリンクを一旦踏んで、外部サイトに飛ぶようになっています。
そしてページリスト中のリンクが相対パスになっているのです。
これだとプリティーURLが有効であると、【サイトURL】/【現ページURL】/?cID=XXXX という下層にあるページのパラメーターを読もうとするリンクが作られ、うまく飛ばなくなります。
ということで /concrete/blocks/page_list/view.php を /blocks/page_list/view.php にコピーし、14行目
$target = $cobj->getAttribute('nav_target');
の下に以下の上記分を挿入
if (mb_strpos($PageListURL,'?cID=') === FALSE) {
// regular URL
} else {
$PageListURL = BASE_URL . DIR_REL . '/' . $PageListURL;
}
というハックをして、ページリストに「?cID=」が含まれると、絶対パスに変更するという条件をつけ、リンク先URLを $PageListURL にするので、 のある文を
<h3 class="ccm-page-list-title"><a <?php if ($target != '') { ?>target="<?php echo $target?>"<?php } ?> href="<?php echo $PageListURL ?>"><?php echo $title?></a></h3>
と変更してみました。まあ強引な修正です。
本家にも報告しました。
http://www.concrete5.org/developers/bugs/5-5-1/external-link-in-page-list/
このバグの修正を本家強く望んでいる人は、本家の上記ページの「+」ボタンを押し、「Environment」に自分のサーバーの情報を入れ、本文に「Confirmed」とだけ入れて報告してみてください。
タグ:
Your post has been saved and will be published after approval by the forum moderator.