Typecho 0.8的时候,除了首页,其他页面是无法自定义关键字和描述的。首页的关键字和描述是在后台基本设置里,关键词和站点描述来控制。文章页自动生成这两个标签,关键字是自动调用文章标签,描述是自动调用文章第一段。这个问题一直困扰着我,而Typecho 0.9终于有了自定义字段,所以就琢磨着用这个来手动实现。
在论坛搜到管理员回答自定义字段调用的回复:
用以下代码就可以取到:$field = $this->fields->fieldName;
输出可以用:$this->fields->fieldName();
按照他说的,加上之前我写过WordPress关键字描述的方法,综合如下:
打开主题文件夹里的header.php,编辑,找到
代码: 全选
<?php $this->header(); ?>
按照官方文档的说法,我们先把关键字和描述禁掉。所以把上面一段改成
代码: 全选
<?php $this->header('keywords=&description='); ?>
下面是本文重点,加代码。切记,这段代码应该加在head标签里面,别加错了。
代码: 全选
<?php
if($this->is('index')){
$keywords = "这里填首页的关键字";
$description = "这里填首页的描述";
}else{
if(isset($this->fields->keywords)){
$keywords = $this->fields->keywords;
}
if(isset($this->fields->description)){
$description = $this->fields->description;
}
}
?>
<meta name="keywords" content="<?php echo $keywords; ?>" />
<meta name="description" content="<?php echo $description; ?>" />
首页的关键字和描述在上面代码里改即可,文章页和独立页面,需要在编辑文章的时候,在下面“自定义字段”里添加,如下图:
图压得有点厉害,将就着看哈。keywords和description两个不分前后顺序。当然,如果你英文不好,也可以把这2个都换掉,不过也得稍微修改下上面的代码了。
注:因为一开始就把网站自带的关键字和描述给禁掉了,所以首页的需要在代码里填写,后台基本设置里的无效。
20140504更新:
今天正好有个需求,加上评论有网友反馈,所以就又改进了下。
需求是首页的关键字和描述,依旧用后台设置的,其他页面还是默认的。文章页和独立页面,如果设置自定义字段,就用自定义字段,如果没设置,依旧用默认的。因为SEO这东西不能随便改以前文章的关键字和描述,所以这种改动影响是最小的,几乎为零。
代码: 全选
<?php
if(($this->is('single') || $this->is('post')) && (isset($this->fields->keywords) || isset($this->fields->description))){
$this->header('keywords='.$this->fields->keywords.'&description='.$this->fields->description);
} else {
$this->header();
} ?>
主要改进是官方函数header()里是可以拼接的,直接把自定义字段拼接一下,这样就不需要像我上面那样定义,然后插入link标签了。
>>原创文章,欢迎转载。转载请注明:转载自西门的后花园,谢谢!
>>原文链接地址:http://ons.me/459.html