石头下的小草 發表於 2023-8-26 00:00:00

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&gt;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-&gt;SetQuery($sql);  </span></p>
                </li>
                <li>
                        <p>
                                <span>$dsql-&gt;Execute(<span class="string">'hw'</span><span>);  </span></span></p>
                </li>
                <li class="alt">
                        <p>
                                <span><span class="keyword">while</span><span>($row=$dsql-&gt;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-&gt;SetQuery($sql);  </span></p>
                </li>
                <li>
                        <p>
                                <span>$dsql-&gt;Execute(<span class="string">'wd'</span><span>);  </span></span></p>
                </li>
                <li class="alt">
                        <p>
                                <span>$str .=<span class="string">'&lt;div class="ku1_left"&gt;'</span><span>.strtoupper($wd).</span><span class="string">'开头&lt;/div&gt;'</span><span>;  </span></span></p>
                </li>
                <li>
                        <p>
                                <span><span class="keyword">while</span><span>( $rs = $dsql-&gt;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">'&lt;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"&gt;'</span><span>.$rs[</span><span class="string">'typename'</span><span>].</span><span class="string">'&lt;/a&gt;'</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]
查看完整版本: dedecms按栏目名首字母/数字排序输出的实现方法