點評:文章分享一篇關于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文件,我們在這里增加自定義函數
好了我們的效果就出來了如圖
好了看看最終效果