本文目录
最近由于工作调动,开始从事一些针对百度的中文优化工作。国内用的比较多的内容管理系统是DedeCMS。今天跟大家分享一下如何修改一个DedeCMS来让它更适合SEO,同时更符合用户体验。
下面我以Dede默认的模板为例,来说明一下。
1. DedeCMS标题title修改
Dede最大的问题在于它的页面标题和文章标题默认是一样的。这样,就使得页面在用户体验和SEO不能两全。因为很多我们刻意优化的页面title,并不希望用户在阅读文章的时候看到。所以,修改文章模板的title是第一步。我采用的办法是在后台添加或修改文章的时候,标题作为文章的标题,短标题作为页面的标题。下面是修改办法。打开文章模板article_article.htm,修改title标签为<title>{dede:field name=’array’ runphp=’yes’} @me=(@me[‘shorttitle’]?@me[‘shorttitle’]:@me[‘title’]);{/dede:field}_{dede:global.cfg_webname/}</title>,意思就是如果有shorttitle字段,title标签就显示shorttitle,没有的话就显示title字段。但是shorttitle默认是有长度限制的,所以需要修改长度限制。首先修改数据库中archives表中shorttitle字段的长度,然后修改管理后台文件夹下archives_add.php,archives_edit.php,archive_add.php,archive_edit.php中的$shorttitle = cn_substrR($shorttitle,36),将36改为你需要的title的最大长度。这样,DedeCMS的title问题就解决了。
2. DedeCMS面包屑导航修改
DedeCMS默认的面包屑导航跟搜索引擎能够识别的面包屑导航也是不一致的,需要修改。如前文所述,面包屑导航应该是一排内部链接,Google给出的例子是用“ > ”隔开各个链接的,最后一个是具体页面的名称,不加链接。而DedeCMS默认的导航是一排链接,最后一个也不是具体页面,而且还加着链接。这是需要修改的。首先来看文章页模板article_article.htm,默认的在面包屑导航位置的代码是<div> <strong>当前位置:</strong> {dede:field name=’position’/}</div>,我们需要在后面加入本页的标题,即修改为:<div> <strong>当前位置:</strong> {dede:field name=’position’/}<b>{dede:field.title/}</b></div>。再来看列表页模板list_article.htm。列表页修改比较复杂,默认的面包屑把当前列表页加上了链接,我们首先需要去掉当前页上的a标签,然后去掉最后面带的“>”号。代码修改如下:
<div> <strong>当前位置:</strong>
{dede:field name=’position’ runphp=’yes’}
$a=mb_strlen(@me);
$str=mb_substr(@me,0,$a-2);
$a=mb_strripos($str,” > “);
$str2=mb_substr($str,0,$a);
$name = strip_tags(mb_substr($str, $a+3));
$str2 = $str2.” > <b>”.$name.”</b>”;
@me = str_ireplace(“<b><b>”, “<b>”, $str2);
{/dede:field}
</div>
3. DedeCMS Tag页面实现伪静态。
DedeCMS默认的tag页面的url路径是“tags.php?/tagname”,这种tag页面地址对于SEO是不利的,我们需要将它改成“tags/tagname”的形式。修改方式如下:
- dede后台开启伪静态
- 找到文件 /include/taglib/tag.lib.php 搜索以下代码:
$row[‘link’] = $cfg_cmsurl.”/tags.php?/”.urlencode($row[‘keyword’]).”/”;
改成
$row[‘link’] = $cfg_cmsurl.”/tags/”.urlencode($row[‘keyword’]).”.html”; - 找到模板文件 templets/default/taglist.htm 搜索以下代码:
<strong>当前位置:</strong>:<a href=”{dede:global.cfg_cmsurl/}/”>主页</a> > <a href=’tags.php’>TAG标签</a> > {dede:field.title /}
修改为
<strong>当前位置:</strong>:<a href=”{dede:global.cfg_cmsurl/}/”>主页</a> > <a href=’/tags.php’>TAG标签</a> > {dede:field.title /} - 在根目录下添加.htaccess文件
RewriteEngine on
RewriteRule ^tags/?(\S+).html tags\.php\?$1
4. 给DedeCMS文章加入相关文章模块。
默认的DedeCMS的文章模板是没有相关文章模块的,而相关文章对于seo和用户体验都是很有用的,所以我们要添加相关文章模块。在article_article.htm中需要添加相关文章的位置加入如下代码便可以实现相关文章了。但需要注意的是,DedeCMS的相关文章是通过tag标签来实现相关的,所以添加文章的时候,要认真添加tag属性,这样才能得到优质的相关文章列表。
<div>
<dl>
<dt><strong>相关文章</strong></dt>
<dd>
<ul>
{dede:likearticle row=’10’ col=’2′ titlelen=’50’}
<li><a href='[field:arcurl/]’>[field:title/]</a></li>
{/dede:likearticle}
</ul>
</dd>
</dl>
</div>
上面添加的相关文章有一定的局限性,就是一篇文章只能与在同一目录下的文章进行相关,不能与其他目录下的文章相关,所以,我们需要修改相关文章的函数。在\include\taglib\likearticle.lib.php找到代码arc.typeid IN($typeid),它的意思就是相关文章的typeid要与当前的一致,将这段代码去掉,就可以实现dedecms调用全站相关文章了。
5. DedeCMS去掉默认的“织梦链”。
模板中默认的“织梦链”是个非常讨厌的东西,而且在后台的链接管理模块是去不掉的,必须通过修改模板来实现。具体方法如下:\include\taglib\flinktype.lib.php的第61行,if($type == ‘dedecms’) $row[] = $dedecms; 把’dedecms’随便改一下就可以去掉默认的“织梦链”了。
6. DedeCMS导航下拉菜单的修改。
默认的DEDE的主菜单是不带下拉功能的,但是可以通过添加代码的方式来实现下拉菜单功能。即当鼠标滑过主菜单时,其子菜单就下拉出来。具体的修改方式是在footer.htm文件中添加如下代码:
<script type=’text/javascript’ src='{dede:global.cfg_cmsurl/}/images/js/dropdown.js’></script>
{dede:channelartlist typeid=’top’ cacheid=’channelsonlist’}<ul id=”dropmenu{dede:field.typeid/}”>
{dede:channel type=’son’ noself=’yes’} <li><a href=”[field:typelink/]”>[field:typename/]</a></li>
{/dede:channel}
</ul>
{/dede:channelartlist}
<script type=”text/javascript”>cssdropdown.startchrome(“navMenu”)</script>
当然,模板的修改远不止这些,我只是挑选了一些与SEO相关的进行了一些阐述。如果你对DedeCMs有更深的研究的话,欢迎给我留言。