dedecms按栏目名首字母/数字排序输出的实现方法
<p><span style='font-family: tahoma, arial, "Microsoft YaHei"; font-size: 14px;'>我们先测试一下读取子类 </span></p>
<div class="msgheader" style='margin: 3px auto 0px; padding: 0px 3px; outline: none; line-height: 21.6px; clear: both; border-width: 1px; border-style: solid; border-color: rgb(0, 153, 204); background: rgb(246, 251, 255); overflow: hidden; font-family: tahoma, arial, "Microsoft YaHei";'>
<p class="right">
<span><u>复制代码</u></span></p>
<p>
代码如下:</p>
</div>
<p class="msgborder" style='margin: 0px auto 3px; padding: 0px 3px; outline: none; line-height: 25.2px; font-size: 14px; clear: both; border-right: 1px solid rgb(0, 153, 204); background: rgb(221, 237, 251); overflow: hidden; border-left: 1px solid rgb(0, 153, 204); word-break: break-all; border-bottom: 1px solid rgb(0, 153, 204); word-wrap: break-word; font-family: tahoma, arial, "Microsoft YaHei";'>
<br>
SELECT substr(typename,1,1) FROM `dede_arctype` WHERE topid>0 </p>
<p>
</p>
<p>
好了现在正式开始增加字段</p>
<p>
增加字段如图<br><input height="320" src="https://files.jb51.net/do/uploads/allimg/120419/0109590.png" type="image" width="417"></p>
<p>
取第一个给刚加的字段 first_l</p>
<blockquote>
<ol class="dp-c">
<li class="alt">
<p>
<span><span>update `dede_arctype` set first_word=substr( typename,1,1) </span></span></p>
</li>
</ol>
</blockquote>
<blockquote>
<ol class="dp-c">
<li class="alt">
<p>
<span><span class="keyword">function</span><span> getfristword( $tid ) </span></span></p>
</li>
<li>
<p>
<span>{ </span></p>
</li>
<li class="alt">
<p>
<span>$str =<span class="string">''</span><span>; </span></span></p>
</li>
<li>
<p>
<span>$tid = intval( $tid ); </span></p>
</li>
<li class="alt">
<p>
<span>$dsql = <span class="keyword">new</span><span> Dedesql(</span><span class="keyword">false</span><span>); </span></span></p>
</li>
<li>
<p>
<span>$sql =<span class="string">"select `first_word` from dede_arctype where topid='$tid' group by first_word"</span><span>; </span></span></p>
</li>
<li class="alt">
<p>
<span>$dsql->SetQuery($sql); </span></p>
</li>
<li>
<p>
<span>$dsql->Execute(<span class="string">'hw'</span><span>); </span></span></p>
</li>
<li class="alt">
<p>
<span><span class="keyword">while</span><span>($row=$dsql->GetArray(</span><span class="string">'hw'</span><span>)) </span></span></p>
</li>
<li>
<p>
<span>{ </span></p>
</li>
<li class="alt">
<p>
<span><span class="keyword">if</span><span>($row[</span><span class="string">'first_word'</span><span>]) </span></span></p>
</li>
<li>
<p>
<span>{ </span></p>
</li>
<li class="alt">
<p>
<span>$wd =$row[<span class="string">'first_word'</span><span>]; </span></span></p>
</li>
<li>
<p>
<span>$sql = <span class="string">"select * from dede_arctype where topid=$tid and first_word= '$wd' "</span><span>; </span></span></p>
</li>
<li class="alt">
<p>
<span>$dsql->SetQuery($sql); </span></p>
</li>
<li>
<p>
<span>$dsql->Execute(<span class="string">'wd'</span><span>); </span></span></p>
</li>
<li class="alt">
<p>
<span>$str .=<span class="string">'<div class="ku1_left">'</span><span>.strtoupper($wd).</span><span class="string">'开头</div>'</span><span>; </span></span></p>
</li>
<li>
<p>
<span><span class="keyword">while</span><span>( $rs = $dsql->GetArray(</span><span class="string">'wd'</span><span>) ) </span></span></p>
</li>
<li class="alt">
<p>
<span>{ </span></p>
</li>
<li>
<p>
<span>$str .=<span class="string">'<a href="'</span><span>.str_replace(</span><span class="string">'{cmspath}'</span><span>,</span><span class="string">''</span><span>,$rs[</span><span class="string">'typedir'</span><span>]).</span><span class="string">'" title="'</span><span>.str_replace(</span><span class="string">'下载'</span><span>,</span><span class="string">''</span><span>,$rs[</span><span class="string">'typename'</span><span>]).</span><span class="string">'手机主题" target="_blank">'</span><span>.$rs[</span><span class="string">'typename'</span><span>].</span><span class="string">'</a>'</span><span>; </span></span></p>
</li>
<li class="alt">
<p>
<span>} </span></p>
</li>
<li>
<p>
<span>} </span></p>
</li>
<li class="alt">
<p>
<span>} </span></p>
</li>
<li>
<p>
<span><span class="keyword">return</span><span> $str; </span></span></p>
</li>
<li class="alt">
<p>
<span>} </span></p>
</li>
</ol>
</blockquote>
<p>
写好后,我们找到调用栏目的模板 <br>
jx.html里面这样写 </p>
<div class="msgheader">
<p class="right">
<span><u>复制代码</u></span></p>
<p>
代码如下:</p>
</div>
<p class="msgborder">
<br>
{dede:field.id function="getfristword(@me)"/} 这里是讲把当前栏目的id给getfirestword(); </p>
<p>
</p>
<p>
</p>
<p>
提示影响了 420 行。 ( 查询花费 0.0176 秒 ) 代码成功了,现在查看</p>
<p>
如图</p>
<p>
<input height="489" src="https://files.jb51.net/do/uploads/allimg/120419/0109591.png" type="image" width="76"></p>
<p>
<br>
现在打开 dedecms的/include/channelunit.func.php文件,我们在这里增加自定义函数</p>
<p>
</p>
<p>
好了我们的效果就出来了如图</p>
<p>
<input height="364" src="https://files.jb51.net/do/uploads/allimg/120419/0109592.png" type="image" width="670"></p>
<p>
好了看看最终效果</p>
頁:
[1]