Create ThinkPHP labels. The default tag parser of thinkphp is in LibTemplateTagLibTagLibCx. the class defines commonly used thinkphp tags such as volistphp. here I add a default tag parser for catego thinkphp in Lib/Template/TagLib/TagLibCx in this class. in class
It defines common thinkphp tags such as volist php.
Here I add Tag parsing
Label format:
<{$ Cat. catname}>
Tag function:
Loop output column where the parent class id is parentid
1. add the private attribute of tagLibCx. class
'Category '= array ('attr' => 'parentid', level => 3)
Attr: Attribute level of the tag. the nested level of the tag.
2. add resolution functions
The tag parsing principle is to get the corresponding information by reading the xml file, and then combine the required information.
Php source code, and finally output on the page through echo
The code is as follows:
Public function _ category ($ attr, $ content)
{
// Resolve all attributes of the tag to the $ tag array
$ Tag = $ this-> parseXmlAttr ($ attr, 'Category ');
// Obtain the attributes in the tag
$ Parentid = $ tag ['parentid'];
// Define the page-resolved variables
$ Result =! Empty ($ tag ['result'])? $ Tag ['result']: 'cat'; // defines the data query result to store variables.
$ Key =! Empty ($ tag ['key'])? $ Tag ['key']: 'I ';
$ Mod = isset ($ tag ['mod'])? $ Tag ['mod']: '2 ';
// Pieces the database query statement. here, the CategoryModel encapsulated function is used directly.
$ SQL = "D ('Category ')-> ";
$ SQL. = "getCategorys (". $ parentid .')';
// Concatenate output characters
$ Parsestr ='
$ Parsestr. = 'foreach ($ _ result as $ key => $ '. $ result .'):';
$ Parsestr. = '+ + $'. $ key. '; $ mod = ($'. $ key. '%'. $ mod. ');?> ';
$ Parsestr. = $ content; // Parse the content in the category label
$ Parsestr. =' ';
Return $ parsestr;
}
GetCategorys method in CategoryModel
/*
* Obtain the topic information based on parentid.
* $ Parentid parent id
* $ Whether withSelf contains itself
*/
Public function getCategorys ($ parentid, $ withSelf = 0)
{
$ Parentid = intval ($ parentid );
$ Categorys = $ this-> where (array ('parentid' => $ parentid, 'ismenu '=> 1)-> order ('listorder ASC ') -> select ();
// Include yourself
If ($ withSelf)
{
$ Categorys2 = $ this-> where (array ('id' => $ parentid, 'ismenu '=> 1)-> limit (1)-> select ();
$ Category = array_merge ($ categorys, $ categorys2 );
}
Return $ categorys;
}
3. reference on the page
<{$ Cat. catname}>
Such a label is ready. ^_^! You can get rid of the volist and dynamically output what we want on the page.
From wok
Secret defines the tags of commonly used thinkphp such as volist php. here I add a catego in this class...