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

时间:2014-10-22
点评:文章分享一篇关于dedecms栏目增加按数字字母开头排序输出,做起来很简单我们大概有三个方法,一个是数据增加字段first_word,第二步增自定义函数getfristword,第三步在模板文件中调用自定函数
 
 
我们先测试一下读取子类 

代码如下:

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文件,我们在这里增加自定义函数

 

好了我们的效果就出来了如图

好了看看最终效果

上一条:Dede网站修改模板路径的方法 拒绝模板泄漏被盗 下一条:简单几步为DedeCMS实现LightBox效果

相关文章

最新文章