唐伯虎 发表于 2021-7-27 22:20:12

dedecms按栏目名首字母/数字排序输出的实现方法

我们先测试一下读取子类


SELECT substr(typename,1,1) FROM `dede_arctype` WHERE topid>0 好了现在正式开始增加字段
增加字段如图

取第一个给刚加的字段 first_l




update `dede_arctype` set first_word=substr( typename,1,1)






function getfristword( $tid )



{



$str ='';



$tid = intval( $tid );



$dsql = new Dedesql(false);



$sql ="select `first_word` from dede_arctype where topid='$tid' group by first_word";



$dsql->SetQuery($sql);



$dsql->Execute('hw');



while($row=$dsql->GetArray('hw'))



{



if($row['first_word'])



{



$wd =$row['first_word'];



$sql = "select * from dede_arctype where topid=$tid and first_word= '$wd' ";



$dsql->SetQuery($sql);



$dsql->Execute('wd');



$str .='<div class="ku1_left">'.strtoupper($wd).'开头</div>';



while( $rs = $dsql->GetArray('wd') )



{



$str .='<a href="'.str_replace('{cmspath}','',$rs['typedir']).'" title="'.str_replace('下载','',$rs['typename']).'手机主题" target="_blank">'.$rs['typename'].'</a>';



}



}



}



return $str;



}


写好后,我们找到调用栏目的模板
jx.html里面这样写


{dede:field.id function="getfristword(@me)"/} 这里是讲把当前栏目的id给getfirestword(); 提示影响了 420 行。 ( 查询花费 0.0176 秒 ) 代码成功了,现在查看
如图


现在打开 dedecms的/include/channelunit.func.php文件,我们在这里增加自定义函数
好了我们的效果就出来了如图

好了看看最终效果

文档来源:服务器之家http://www.zzvips.com/article/13190.html
页: [1]
查看完整版本: dedecms按栏目名首字母/数字排序输出的实现方法