織夢dede讓頻道自動跳轉到第一個子欄目
新建一個url.htm檔案,然後將一級欄目的欄目屬性設定為封面頁。並將封面模版更改為url.htm。
將以下程式碼複製到該檔案中即可;今天我就來說說用如果通過修改原始碼來簡單實現,其實DEDECMS在資料庫表@#_arctype中,是否為頻道,是用ispart這個欄位去儲存的,它有3個值(0,-1,1),對應的網站後臺的 頻道封面、最終欄目、外部連線。所以我們只需要在程式中對ispart進行一個簡單的判斷,就OK。廢話不多說了,第一步:開啟/include/helpers/channelunit.helper.php 開啟下面的程式碼 GetOneTypeUrlA函式function GetOneTypeUrlA($typeinfos)
{
return GetTypeUrl($typeinfos['id'],MfTypedir($typeinfos['typedir']),$typeinfos['isdefault'],$typeinfos['defaultname'],
$typeinfos['ispart'],$typeinfos['namerule2'],$typeinfos['moresite'],$typeinfos['siteurl'],$typeinfos['sitepath']);
}
function GetOneTypeUrlA( $typeinfos ) |
{ |
global $dsql ; |
if ( $typeinfos [ 'ispart' ]==1) { |
$typeinfos = $dsql ->GetOne( 'select * from idea_arctype where reid=' . $typeinfos [ 'id' ].' |
ORDER BY sortrank'); |
} |
return GetTypeUrl( $typeinfos [ 'id' ],MfTypedir( $typeinfos [ 'typedir' ]), |
$typeinfos [ 'isdefault' ], $typeinfos [ 'defaultname' ], |
$typeinfos [ 'ispart' ], $typeinfos [ 'namerule2' ], |
$typeinfos [ 'moresite' ], $typeinfos [ 'siteurl' ], $typeinfos [ 'sitepath' ]); |
} |
while($row = $dsql->GetArray()) {
if($row["ispart"]==1&&$row["reid"]==0){//lyy2014-8-12 當欄目為單頁,且為頂級欄目呼叫第一個子欄目連結。
$row1 = $dsql->GetOne("select reid,id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath from #@__arctype where reid='".$row['id']."' ORDER BY sortrank ASC");
if(!empty($row1)){//有子類,沒有不作操作
$row['defaultname']=$row1['defaultname'];
}
}
$typeids[] = $row;
}