**[[質問箱4/455]] [#fe40fc92] #author("2018-03-11T20:41:30+09:00;2009-05-11T03:37:47+09:00","","") **[[質問箱/4455]] [#fe40fc92] |RIGHT:70|LEFT:410|c |~カテゴリ|| |~サマリ|related.inc.phpで同ページ名は表示しないようにしたい| |~バージョン|1.4.7| |~投稿者|[[リモコン]]| |~状態|完了| |~投稿日|&new{2009-05-09 (土) 17:46:17};| ***質問 [#h0779df4] AutoLinkを使用しています。&br; 例えばジュースというページ内にジュースという文字を記載するとrelatedで同じページなのにジュースと表示されてしまうのですが、これを表示させなくしたいです。&br; つまりrelatedで同じページへのリンクを作成したくないのですが、可能でしょうか? ***回答 [#a4a64464] - ?plugin=related で見た場合の一覧データ(加工していない状態)が正しいのなら、次のようなページ構成になっていませんか?&br;1. 他のページの中に親ページ(上の例なら「ジュース」というページ)へのリンクが存在している&br;2. related を(正確には、links_get_related 関数)を呼び出す前に、include など他のページを読み込むプラグインで1 に該当するページを呼び出す&br;1 と2 を両方とも満たすと、どこでrelated の一覧を呼び出しても、自分自身が含まれてしまみたいですね・・・ -- &new{2009-05-09 (土) 20:12:18}; - どうやら1、2の条件を満たしていたみたいで表示されていたみたいです。&br;関連なのに自身のページが表示されるのは見栄えなども考えてどうにかならないかなと思ったのですが、修正は難しいでしょうか?&br;上記の条件を満たさなくさせることもできそうですが、それだと他も少し制限しないといけなくなりますので、どうにか共存できると良いのですが。 -- [[リモコン]] &new{2009-05-10 (日) 12:39:01}; - ?plugin=related で見た場合の一覧データとまったく同じものをrelated に表示させるのなら、lib/make_link.php のmake_pagelink 関数から if (! isset($related[$page]) && $page != $vars['page'] && is_page($page)) $related[$page] = get_filetime($page); の2行を消してください。&br;そうではなく、そのページのみをrelated から消す(それ以外の挙動はこれまでと同じにしたい)のなら、lib/file.php のlinks_get_related 関数を次のように変えてください。(本当は、unset 関数の行の追加のみでいいんですが、[[dev:BugTrack2/236]] のおまじないも適用してあります) // Get a list of related pages of the page function links_get_related($page) { global $vars, $related; static $links = array(); if (isset($links[$page])) return $links[$page]; // If possible, merge related pages generated by make_link() $links[$page] = ($page === $vars['page']) ? $related : array(); unset($links[$page][$page]); // Get repated pages from DB $links[$page] += links_get_related_db($vars['page']); return $links[$page]; } どちらの方法を使うにしろ、自分自身が含まれないように回避できるはずです。 -- &new{2009-05-10 (日) 14:53:35}; - 後者の方法で試してみましたが無事に解決できました。&br;自分の説明がヘタでうまく伝わらないかと思っていたのですが、素早い回答本当にありがとうございました。 -- [[リモコン]] &new{2009-05-11 (月) 03:37:28}; #comment