使用方式
1
2
3
4
5
6
7
8
9
|
{dede:channelarclist} <!--省显示--> < a href="">省级标题:{dede:field name='name'/}</ a > {dede:channel type='son'} < a href="">市级标题:[field:name/]</ a > {dede:arclist} 该市文章{field:title/} {/dede:arclist} {/dede:channel} {/dede:channelarclist} |
替换在/include/taglib/channel.lib.php 下的lib_channel函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
function lib_channel(& $ctag ,& $refObj ) { global $dsql ; $sanji = $ctag ->GetAtt( 'sanji' ); $attlist = "typeid|0,reid|0,row|100,col|1,type|son,currentstyle|,cacheid|,line|1" ; FillAttsDefault( $ctag ->CAttribute->Items, $attlist ); extract( $ctag ->CAttribute->Items, EXTR_SKIP); $innertext = $ctag ->GetInnerText(); $line = empty ( $row ) ? 100 : $row ; $default_line = $ctag ->CAttribute->Items[ "line" ]; $likeType = '' ; //读取固定的缓存块 $cacheid = trim( $cacheid ); if ( $cacheid != '' ) { $likeType = GetCacheBlock( $cacheid ); if ( $likeType != '' ) return $likeType ; } $reid = 0; $topid = 0; //如果属性里没指定栏目id,从引用类里获取栏目信息 if ( empty ( $typeid )) { if ( isset( $refObj ->TypeLink->TypeInfos[ 'id' ]) ) { $typeid = $refObj ->TypeLink->TypeInfos[ 'id' ]; $reid = $refObj ->TypeLink->TypeInfos[ 'reid' ]; $topid = $refObj ->TypeLink->TypeInfos[ 'topid' ]; } else { $typeid = 0; } } //如果指定了栏目id,从数据库获取栏目信息 else { $row2 = $dsql ->GetOne( "SELECT * FROM `daima_arctype` WHERE id='$typeid' " ); $typeid = $row2 [ 'id' ]; $reid = $row2 [ 'reid' ]; $topid = $row2 [ 'topid' ]; $issetInfos = true; } if ( $type == '' || $type == 'sun' ) $type = 'son' ; if ( $innertext == '' ) $innertext = GetSysTemplets( "channel_list.htm" ); if ( $type == 'top' ) { $sql = "SELECT id,typename, typenameen, typeimg, typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath From `daima_arctype` WHERE reid=0 And ishidden<>1 order by sortrank asc limit 0, $line "; } else if ( $type == 'son' ) { if ( $typeid ==0) return '' ; $sql = "SELECT id,typename, typenameen, typeimg, typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath From `daima_arctype` WHERE reid= '$typeid' And ishidden<>1 order by sortrank asc limit 0, $line "; } else if ( $type == 'self' ) { if ( $reid ==0) return '' ; $sql = "SELECT id,typename, typenameen, typeimg, typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `daima_arctype` WHERE reid= '$reid' And ishidden<>1 order by sortrank asc limit 0, $line "; } //And id<>'$typeid' $needRel = false; $dtp2 = new DedeTagParse(); $dtp2 ->SetNameSpace( 'field' , '[' , ']' ); $dtp2 ->LoadSource( $innertext ); //检查是否有子栏目,并返回rel提示(用于二级菜单) if (preg_match( '#:rel#' , $innertext )) $needRel = true; if ( empty ( $sql )) return '' ; $dsql ->SetQuery( $sql ); $dsql ->Execute(); $totalRow = $dsql ->GetTotalRow(); //如果用子栏目模式,当没有子栏目时显示同级栏目 if ( $type == 'son' && $reid !=0 && $totalRow ==0) { $sql = "SELECT id,typename, typenameen, typeimg, typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath FROM `daima_arctype` WHERE reid= '$reid' And ishidden<>1 order by sortrank asc limit 0, $line "; $dsql ->SetQuery( $sql ); $dsql ->Execute(); } $GLOBALS [ 'autoindex' ] = 0; for ( $i =0; $i < $line ; $i ++) { if ( $col >1) $likeType .= "<dl>\r\n" ; for ( $j =0; $j < $col ; $j ++) { if ( $col >1) $likeType .= "<dd>\r\n" ; if ( $row = $dsql ->GetArray()) { $row [ 'sonids' ] = $row [ 'rel' ] = '' ; $row [ 'line' ] = $default_line + $i ; if ( $needRel ) { $row [ 'sonids' ] = GetSonIds( $row [ 'id' ], 0, false); if ( $row [ 'sonids' ]== '' ) $row [ 'rel' ] = '' ; else $row [ 'rel' ] = " rel='dropmenu{$row['id']}'" ; } //处理同级栏目中,当前栏目的样式 if ( ( $row [ 'id' ]== $typeid || ( $topid == $row [ 'id' ] && $type == 'top' ) ) && $currentstyle != '' ) { $linkOkstr = $currentstyle ; $row [ 'typelink' ] = GetOneTypeUrlA( $row ); $linkOkstr = str_replace ( "~rel~" , $row [ 'rel' ], $linkOkstr ); $linkOkstr = str_replace ( "~id~" , $row [ 'id' ], $linkOkstr ); $linkOkstr = str_replace ( "~typelink~" , $row [ 'typelink' ], $linkOkstr ); $linkOkstr = str_replace ( "~typename~" , $row [ 'typename' ], $linkOkstr ); $linkOkstr = str_replace ( "~typenameen~" , $row [ 'typenameen' ], $linkOkstr ); $likeType .= $linkOkstr ; } else { $row [ 'typelink' ] = $row [ 'typeurl' ] = GetOneTypeUrlA( $row ); if ( is_array ( $dtp2 ->CTags)) { foreach ( $dtp2 ->CTags as $tagid => $ctag ) { if (isset( $row [ $ctag ->GetName()])) $dtp2 ->Assign( $tagid , $row [ $ctag ->GetName()]); } } $likeType .= $dtp2 ->GetResult(); } } if ( $col >1) $likeType .= "</dd>\r\n" ; if ( $sanji ) { $typeid = $row [ 'id' ]; if (( class_exists ( 'PartView' ))) { $pv = new PartView( $typeid ); $text = $likeType ; $text = str_replace ( array ( '{field' , '/}' ), array ( '[field' , '/]' ), $text ); $pv ->SetTemplet( $text , 'string' ); $artlist = $pv ->GetResult(); $likeType = $artlist ; } } $GLOBALS [ 'autoindex' ]++; } //Loop Col if ( $col >1) { $i += $col - 1; $likeType .= " </dl>\r\n" ; } } //Loop for $i $dsql ->FreeResult(); if ( $cacheid != '' ) { WriteCacheBlock( $cacheid , $likeType ); } return $likeType ; } |
转载请注明出处。