外部リンクの不具合 (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」とだけ入れて報告してみてください。

タグ: