ホームページ  >  記事  >  バックエンド開発  >  Thinkphp がパンくずリスト ナビゲーション (現在の場所) を実装する例 Sharing_PHP チュートリアル

Thinkphp がパンくずリスト ナビゲーション (現在の場所) を実装する例 Sharing_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:29:581012ブラウズ

以前は列が少なかったので、ブラインド方式 (ホームページ -> 列名) を使用していましたが、現在は列が増え、徐々に第 2 レベルの列、第 3 レベルの列も追加されています。明らかにこの方法は適切ではないので、ちょっと改良しました。それほど難しいことではありません。再帰関数を使用するだけです。

使用例:

コードをコピー コードは次のとおりです:

//現在の位置 - 最初のパラメータ catid は現在の列の ID、2 番目のパラメータはその列のタイトルです。記事では、現在の列を呼び出します。位置については、2 番目のパラメータを空のままにすることができます。
$this->assign("now_here",$this->now_here($catid,$res['title']));

実装コード:

コードをコピーします コードは次のとおりです:

//説明します。列テーブル カテゴリの catid は列 ID、catname は列名、asmenu は列の親の ID、それがトップレベルの列の場合、asmenu は 0 です。
保護された関数 now_here($catid,$ext=''){
$cat = M("カテゴリ");
$here = 'ホームページ';
$uplevels = $cat->field("catid,catname,asmenu")->where("catid=$catid")->find();
if($uplevels ['asmenu'] != 0)
$here .= $this->get_up_levels($uplevels['asmenu']);
$here .= ' -> a href="/cat_'.$ uplevels['catid'].'.html">'.$uplevels['catname']."";
if($ext != '') $here .= ' -> ' .$ext;
return $here;
}
保護関数 get_up_levels($id){
$cat = M("カテゴリ");
$here = '';
$uplevels = $cat->field(" catid,catname,asmenu")->where("catid=$id")->find();
$here .= ' -> '.$uplevels['catname']."";
if($uplevels['asmenu'] != 0){
$here = $this-> ;get_up_levels($uplevels['asmenu']).$here;
}
return $here;
}



添付ファイル: 別の例

コードをコピーします コードは次のとおりです:

class IndexAction extends Action {

public function cat() {
load('extend'); // extend.php ファイルをロードします
// すべてのカテゴリを取り出します
$Catalog = M('Categories')->select();

$nav_array = array();
$this->getNavCrumbs($Categories, 2120, $nav_array);
dump($nav_array);

// すべてのカテゴリを取り出します (そしてそれらをツリーに構築します)
// $CategoryTree = list_to_tree($Categories, 'categories_id', 'parent_id');
}

/**
* カテゴリ ID に基づいてパンくずリストを逆方向に構築します
* @param $Categories すべてのカテゴリで構成される配列
* @param $categoryId 上向きトレースに使用されるカテゴリ ID
* @param $navCrumbs 結果の保存に使用される配列、渡すだけ空の配列
*/
public function getNavCrumbs($Categories, $categoryId, &$navCrumbs) {
$category = list_search( $Categories, array('categories_id'=>$categoryId) ) ;
$category = $category[0];
$parent_id = $category['parent_id'];
$categories_id = $category['categories_id'];

if( $parent_id != 0 ) { // 0 はルート ノード ID (ルート ノード ID) です
$this->getNavCrumbs($Categories, $parent_id, $navCrumbs);
}

$navCrumbs[$categories_id] = $category;
}

}


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/768136.html技術記事以前は列の数が少なかったため、行き止まりの方法 (ホームページ - 列名) を使用していましたが、現在では列が増え、徐々に第 2 レベルの列、第 3 レベルの列も登場しています。明らかにふさわしくないので...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。