現在わかっている問題
メニューの表示位置がおかしい
サブメニューが並べる順序順に表示されない問題
並べる順序を指定していない場合に重複表示される
現在解決法が示されているもので上の3つかな?
また新たに問題を発見してしまった。
変な例で申し訳ないがw
「きつね_うどん」と「きつ_つき」というメニューがあると「きつ」メニューのサブに「うどん」が表示されたりされなかったり(記事のあるなしで挙動が変わる)。
現在公式BBSの情報によりfunction.incにある問題のか所は修正されてこのようになっているんだけど(オレンジの部分)グリーンの部分を見て欲しい。
$sql = "select * from ".$_TABLES["topics"]." where topic like '".$topic_first."_%' ORDER BY sortnum,topic ASC";
あいまい検索の場合$topic_firstの後ろにある「_」が任意の1文字として扱われるため「%」1文字の場合と意味合いは同じになっている。何カ所かでこのあいまい検索が使われているので探ってみる。ちなみに「\_%」とエスケープするだけでは完全に直らなかった。
その後の調べで1階層目のデータをDBから引いてくる段階ですでに問題があることもわかった。先ほどの所のもう少し上を見てみると
$sql="select * from ".$_TABLES["topics"]." where topic like '".$topic_first."%'";
と、なっていてこの部分で第1階層「きつ」のときに「きつね」にもヒットしてしまっている。「きつ」に表示できる記事がなくとも「きつね」に記事がある場合表示フラグが立ってしまう。その後サブメニューでの表示判定で記事がないことになるのでメニューは表示されるが記事がないということになる。かといって%を取っ払うと2階層目のあるメニューがすべてヒットしなくなるのでダメだ。うーん、なにかカンタンな解決方法はないものか・・・
コメント (0件)
Geeklog実験室
http://geeklogtest.maryn.jp/article.php/20071024114454694