帝国CMS栏目名称与别名调用 如何兼顾SEO与浏览者用户体验

来自:互联网
时间:2019-03-13
阅读:
免费资源网 - https://freexyz.cn/

帝国CMS后台,在添加栏目时,有栏目名称和栏目别名两个选项,默认情况下,这二者填的内容是一样的。

但站在SEO的角度来看,很想让它们不一样。

帝国CMS栏目名称与别名调用 如何兼顾SEO与浏览者用户体验

如上所示,栏目名称叫作:儿童房,华哥希望在网页的内容显示中,就是儿童房三字,因为它简短、清晰,浏览者第一眼看到,就能明白这是个什么主题的栏目。

那要是站在SEO的角度来看,儿童房三个字有些短了,特别是对基于PC的SEO来说,关键词能长尾就尽量长尾一些,因为,华哥弄的是一个新网站,像儿童房这样的词,要等做上排名获得流量,恐怕要到下辈子才行。

但同时,考虑到移动的SEO,栏目别名也不要弄得太长。因为华哥这个网站是响应式,PC和移动是同一套后台。见:移动seo关键词长点好还是短点好?

如上所示:栏目别名叫作:儿童房装修效果图,这个名称是放置在网页标题<title>中,主要是给搜索引擎参考和识别。

(其他情况:如果移动站和PC站不是同一套后台,则另当别论,或者移动站可以调整模板,只提取栏目名称作为网页的标题,忽略掉别名不用。)

后台栏目名称和别名添加好后,接下来要做的,就是模板代码了。

如果只是调用栏目名称,那很简单。把[!–class.name–]放到模板中要放置的位置即可。

如果要调用栏目别名作为标题,那要麻烦一些,不过,好在网上有答案。

帝国CMS调用栏目别名的两种方法!

第一种:在最终栏目调用

<?=$class_r[$GLOBALS[navclassid]][bname]?>

第二种:万能的,哪里都行,应为是直接查询数据库输出的!

<?php
$cr=$empire->fetch1(“select bname from phome_enewsclass where
classid='”.$GLOBALS[navclassid].”‘ limit 1″);
echo $cr[‘bname’];
?>

如法炮制,在终极栏目对应的栏目列表模板中,华哥用<?=$class_r[$GLOBALS[navclassid]][bname]?>去试验,成功!参考代码如下:

<title><?=$class_r[$GLOBALS[navclassid]][bname]?>-<?=$public_r[sitename]?></title>

即:栏目别名-网站名称 这样的格式。

但终极栏目以外属性的栏目页或频道页列表模板中,华哥发现套入这个代码没有结果。

那就用第二种,万能的。

不过第一遍实践下来,发现没有生效,不起作用,不过也没有提示什么错误。

还是出现了小问题:在更新栏目生成HTML操作后,帝国CMS没有什么提示更新成功的信息,页面变为空白。

把这行代码去掉,再去更新,又回到正确的轨道。

难道是这行代码格式不对,又在网上寻找答案,发现这“万能代码”大体是一致的,看来这代码没有什么错误,是自己用得不正确吧。

再一检查,好好仔细地看了一下代码。好歹华哥还是懂点程序的。发现了玄机。

原来问题出在这:select bname from phome_enewsclass

网上提供的代码,大部分都是用默认的帝国CMS后端MySQL数据库表前缀(即phome_)来做实例的。可是我网站用的数据库前缀,在安装帝国CMS时已经修改过了。

帝国CMS栏目名称与别名调用 如何兼顾SEO与浏览者用户体验

提示:帝国安装成功后,可打开e/config/config.php来查看数据库的前缀是什么。

于是我修改代码,将phome_enewsclass的phome换为有过修改的前缀名称。上传模板代码至后台,再生成栏目页,发现OK。参考代码如下:

<title><?php $cr=$empire->fetch1(“select bname from ww2345678_enewsclass where classid='”.$GLOBALS[navclassid].”‘ limit 1″);echo $cr[‘bname’];?>-<?=$public_r[sitename]?></title>

像我这种操作,业界称之为硬编码,一板一眼,通用性不强。经搜索,发现还有更好的。

代码中用{$dbtbpre}这个变量来替换任何数据库表前缀,如上述代码中,可改为:select bname from {$dbtbpre}enewsclass……于是,我把上面的代码换成:

<title><?php $cr=$empire->fetch1(“select bname from {$dbtbpre}enewsclass where classid='”.$GLOBALS[navclassid].”‘ limit 1″);echo $cr[‘bname’];?>-<?=$public_r[sitename]?></title>

很完美,这才算得上是万能的通用代码:不管你网站的数据库前缀是什么,此代码都将自动匹配对应的前缀名称,这才是万能的,灵活的实现方式。最终,实现了想要达成的结果。如图所示(不过图示中的栏目名称已由儿童房换成了贺卡制作)。

帝国CMS栏目名称与别名调用 如何兼顾SEO与浏览者用户体验

免费资源网 - https://freexyz.cn/
返回顶部
顶部