thinkphp のデフォルトのタグパーサーは Lib/Template/TagLib/TagLibCx.class にあります
一般的に使用される volist php とその他の一般的に使用される thinkphp タグを定義します
ここで、作成者はこのクラスに
タグ形式:
タグ機能:
親クラス ID がparentidである列をループアウトします
1.tagLibCx.classのprivate属性に
を追加
'category'=array('attr'=>'parentid',level=>3)その中に attr: タグの属性レベルとタグのネストレベル
2.解析機能を追加
タグ解析の原理は、XML ファイルを読み取ることで対応する情報を取得し、それを必要なものに結合することです
php ソース コード、最終的に echo を通じてページに出力されます
具体的なコードは次のとおりです:
パブリック関数 _category($attr,$content)
{
//タグのすべての属性を $tag 配列に解析します
$tag = $this->parseXmlAttr($attr,'category');
//タグ内の属性を取得します
$parentid= $tag['parentid'];
//ページ解析用の変数を定義します
$result = !empty($tag['result'])?$tag['result']:'cat' //データクエリ結果の保存変数を定義します
;
$key = !empty($tag['key'])?$tag['key']:'i';$mod = isset($tag['mod'])?$tag['mod']:'2';
//データベースクエリステートメントを結合します。ここでは、CategoryModel
によってカプセル化された関数を直接使用します。
$sql = "D('カテゴリ')->";$sql .= "getCategorys(".$parentid.')';
//出力文字をつなぎ合わせます
$parsestr = ' $parsestr .= 'foreach($_result as $key=>$'.$result.'):';
$parsestr .= '++$'.$key.';$mod = ($'.$key.' % '.$mod.' );?>';
$parsestr .= $content;// カテゴリタグ内のコンテンツを解析します
$parsestr .= '';
$parsestr;
を返します
}
カテゴリモデルの getCategorys メソッド
/*
* 親IDに基づいて列情報を取得します
* $parentid 親 ID
* $withSelf に self が含まれるかどうか
*/
パブリック関数 getCategorys($parentid,$withSelf=0)
{
$parentid=intval($parentid);
$categorys=$this->where(array('parentid'=>$parentid,'ismenu'=>1))->order('listorder ASC')->select();
//自分自身を含める
if($withSelf)
{
$categorys2=$this->where(array('id'=>$parentid,'ismenu'=>1))->limit(1)->select();
$category=array_merge($categorys,$categorys2);
}
$カテゴリを返します;
}
3. ページ上の引用
<カテゴリ親id='0'>
<{$cat.catname}>
このようなラベルが完成しました^_^!ボリストを取り除き、ページ上に必要なものを動的に出力できます
!
中華鍋
より抜粋
。