为了更好地实现SEO功能,为了广大的DEDE爱好者不再大伤脑筋,这两天抽了点时间把此功能弄出来跟大家分享。
以下修改能实现DEDE自定义网页文件名的功能,例如:
zi-ding-yi.html/zidingyi.html/defined-pagenaY V U f z y 2 P Wme.html/自定义某某某.html 等
(反正你填什么就是什么,除了短横6 z 7 [ V b j e杠连词符L l T x %号 -,最好别乱填其它特殊符号特别是单、双引号、空格等,以免出错)。
如果你不填自定义文件名,则默认为文章的aid,如:
138.html/65.html 等。
以下皆以文章P z C N ) H i H -模型为例作修改。9 7 A 7强烈建议初学者在对文件进行修改前备份Z y 3之。
以下为针对 DEDE VQ ) } M K E o5 的修改:
==========a ] 9 !====\ 8 @ V |===============================7 i k o T q========================
1、在 后台 频道管理 -> 修改栏目(或者增加栏目) -> 高级选项 -> 文章命名规则:
把 {typedir}/{Y}{M}/{D}-{aid}.html 修改成 {typedir}/{+ ! n Kaa}.html
({aa} 用来接收自定义文_ @ R J _ J X =件名。因个人不大喜欢年月日之类的,所以把{Y}、{M}、{D}、{aid}等都f j 7去掉了,你喜欢的话,自己加上, c 1 v A o O 9 P即可)
2、修改数据库表 dede_archives 增加 pagename 字段 varchar 100 (100够用了,如果不够用,自己改大(255之内)即可j \ , r [ +)
在 后台 -> 功能菜单 -> SQL命令运行器 中输入: A $ ! M Z !:
altL l Q u { ?er table dede_archives a\ x r ? |dd column pagename varL = F Echar(100);
按确定执行即可。
3、增加对 {aa} 的处理:
修改Z o t Q 3 d I Q文件:include/inc_channel_unix ? 0 z 7 - ~ jt_functions.php
把大约73行的:% 9 g T [
$articleRule = str_replace("{cc}",dd2char($. v 1 # 6m.$d.$aid.$y),$articleRule);
改为:
$articleRule = str_replace("{aa}",GetPagename($aid),$articleRule);
(因为{cc}实在没什么用,扔掉得了)
4、针对上面 GetPagename($aidX B t ? 1 1) 的处理:
修改文件: include/P p s _ H ~inc_functions.php
在文件最后O 0 ( a E # g J J面 ?> 前加入以: ? 7 $ 7下函数:
//获取自定义文件名的函数r A M |,检测如果输入了自定义文件名则文件名^ g K t h h k B |为所输入的,否则默认为文章的aiH z 1 W f u 4 Cd
function GetPagenameq M v($dd){
$sql = "select pagename fr| \ R l { ]om dede_archives where id = '$dd'";
$dsql = new DedeSql(fc ^ w y `alse);
$row = $dsql->GetOne($sql);
$pagD v `enu c { m B Z name = $row["pagename1 x H"];
if($pagename!=x l e""){
$pagename = $pagename;
}else{
$page9 U ) G $ v l @ ename = $dd;
}
return $pagename;
}
5、修改文章添加和修改页面,在里面加入 pagc # i e $ename 的 input
(1)修改文件:dede/templetL J 7 %s/article_add.htm
在:
<tr>
<td height="24" class="bline">
<table width="800" border="0" cellspacing="0" cellpadding="0">
<tr&W ( ? m , m ! U ;gt;
<td width="90"> Tag标签:</td>
<td>
<input name="tag" type="text" id="tag" value="">
(用空格或','分开)
</td>
</tr>
</table>
</td>
</tr># ) !;
前加上:
&lv w Ct;!-- 自定义文件名开始 -->
<tr>
<td height="24" class="bline">W P @ n `
<table width="800" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="100"> 自定义文件名:v n \ + ` m = L 9&I Y I H P Ilt;/td>
&N b w C _lt;td width="650">&1 O = v ; N ilt;input name="pagename" type="text" id="pagename" maxlength="100" /></td>
</tr>
</table>
</td>
</tr>
<!-- 自定义o l - z文件名结束 -->
(2)修改文件:dede/templets/article_edit.htm
在:
<tr>
<td height="24" class="bline">B b 5 ~ 5 m F ]
<table widX X { _ L # _ I Uth="800" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="90"&gU 4 - wt; Tag标签:</td>
<td>
<input name="oldtag" type="hidden" id="oldtag" value="<?pC ) + V a \ Ahp echo $taW j i r L , # L Ggs; ?>" />
<inputs ! x s : 4 name="tag" type="text" id="tag" value="<?php echo $tags; ?>" />
(用空格或','分开)
</td= : N X # R n>
</tr>
</table>
</td>9 r !;
</tu R % = x f s [ `r>
前加上:
<!-- 自定义文件名开始 -->
&lX ] 3 :t;tr>
<td height="24" class="bline">
<table width="89 t z o + B h00" border="0" cellspacing="0" cellpadding="0"&gg } N S 1 ft;9 ~ -
<tr>
&d } W 5 x p \ , \lt;td width="100"> 自定义文件名:</td>
<td width="650"><input name="pagename" typeG ` \ ~ w O * ] i="text" id="pagename" maxlength="100" value="<?php echo $arcRow["pagename"]?>" /></td>
</tr>
</m d U 6 B M K $table>
</td>
</tr>
<!-- 自定义文件名结束 -->
6、修改文章! L U x ? & [ 3 %添加和修改| ! |的处理页面,对 form 里提交的 pagZ i 9 @ x w Iena2 } T / Pme 进行处理
(1)修改文件: dede/action/article_add_action.php
A、在 $title = cn_substr($title,80); 下面增加一行 $pagename = trim($pagename);
B、) g J q J ) _ ( j在下面增加以下红色部分(看准颜色)。
//加入数据库的SQL语句
//----------r $ h b / 9 # y------------} ~ o i v------------
$inQuery = "INSERT INTO `{$cts['maintable']}`(
ID,typeid,tyc % J K A Lpeid2,sortrank,iscommend,ismake,channel,
arcrank,click,money,title,shorttitle,color,writer,source,reader,litpic,
pubdate,senddate,arcatt,adminID,memberID,d[ T w v |escription,keywords,templet,redirectuC Z C @ nrl,l1 ? 4 A ` H M o 7ikeid,pagename)
VALUES ('$arcID','$typeid','$tyk J \ \ ? 0 n O zpeid2','$sortc & : C 8 . x Urank','$iscommend','$ismake','$cy * M 8hannelid',
'$arcrank','0','$money','$titJ B ! v R Nlm & h v k Ge','$shorttitle','$color','$writer','$s9 ! t K x U s xource','$rx = d R e ^ O * ?eader','$litpic',
'$pubdate','$senddate','$arcatt','$admi? z P l ? ? 7 &nID','0','$description','$keywords','$templet','$redirecturl','$likeid','$pagename');";
(2)修改文件: dede/action/article_eidt_action.php
A、在 $title = cn_substr(Q M d a W 3$title,80); 下面6 K ! a m e增加一行 $pagename = trim($pagename);
B、在下面增加以下红色部分(看准颜色)。
//更新数据库的SQL语句
//---------------------z K C h t s-------------
$inQuery = "
update `{$aTables['maintable']}` s9 p 6 T c |et
typeid='$t! j 8 c Xypeid',
typeid2='$typeid2',
sortrank='$sortrank',
redirecturl='z _ j 2 1 x |$red; X @i2 x F R x X S F ~recturl',
iscommend='$iscommend',
ismake='$ismake',
arcrank='@ F g b $ 5 R c$arcrann 5 * w m B L s @k',
money='$money',
title='$@ ? / b x s 4title',
color='$color',
wrZ . g / Y @ hiter='$writel K m _ @ ) g ! jr',
source='$source',
readerP H + q a B d n='$reader',
litpic='$litpic',
pubda& V s P 2 N dte='$pubdate',
description='$description',
keyw} = q X ^ [ ,ords='$keywords',
templh , b N ( 8et='$templet',
shorttitle='$shorttitle',
arcatt='$ar] C Xcatt',
likeid=C c l'$likeid',
pagename =w t q l ) R S Y 0 '$pagename'
where ID='$ID'; ";
7、测试发文章,生成html,大功告成。