Typecho 0.9版自定义文章页、独立页面的关键字和描述

插件开发及发布

版主: woniou

回复
头像
qq1745745
帖子: 74
注册时间: 2011年 3月 1日 13:40
来自: 西门的后花园
联系:

Typecho 0.9版自定义文章页、独立页面的关键字和描述

帖子 qq1745745 »

刚刚过去的双12,Typecho发布了最新版0.9,时隔3年重新出发。我『主机格调』那边一直都是Typecho,打算升级到最新版,所以就研究了一下关键字和描述。

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
上次由 qq1745745 在 2014年 5月 4日 22:44,总共编辑 1 次。
头像
zyzzc
帖子: 648
注册时间: 2009年 9月 25日 20:11
联系:

Re: Typecho 0.9版自定义文章页、独立页面的关键字和描述

帖子 zyzzc »

顶西门,格调东京主机用得很不错:)
头像
terminator1988
帖子: 2
注册时间: 2014年 3月 1日 01:52
来自: 福建厦门
联系:

Re: Typecho 0.9版自定义文章页、独立页面的关键字和描述

帖子 terminator1988 »

太麻烦了,其实可以更简单点,只要2句代码就可以了

代码: 全选

<?php
if ( $this -> is('index') ) {
    $this -> header();
}
if ( $this -> is('post') ) {
    $this -> header( 'keywords=' . $this -> fields -> keywords );
}
?>

参考文章出处:http://www.blogzhong.com/2014/03/01/1.html
asd44g
帖子: 4
注册时间: 2014年 3月 3日 10:58
联系:

Re: Typecho 0.9版自定义文章页、独立页面的关键字和描述

帖子 asd44g »

好插件就是不错呀!
LJ
帖子: 37
注册时间: 2007年 7月 25日 06:49

Re: Typecho 0.9版自定义文章页、独立页面的关键字和描述

帖子 LJ »

terminator1988 写了:太麻烦了,其实可以更简单点,只要2句代码就可以了

代码: 全选

<?php
if ( $this -> is('index') ) {
    $this -> header();
}
if ( $this -> is('post') ) {
    $this -> header( 'keywords=' . $this -> fields -> keywords );
}
?>

参考文章出处:http://www.blogzhong.com/2014/03/01/1.html



再加个page

代码: 全选

        if (
        $this -> is('page') ) {
        $this -> header( 'keywords=' . $this -> fields -> keywords );}
fengter
帖子: 34
注册时间: 2014年 3月 5日 23:16

Re: Typecho 0.9版自定义文章页、独立页面的关键字和描述

帖子 fengter »

LJ 写了:
terminator1988 写了:太麻烦了,其实可以更简单点,只要2句代码就可以了

代码: 全选

<?php
if ( $this -> is('index') ) {
    $this -> header();
}
if ( $this -> is('post') ) {
    $this -> header( 'keywords=' . $this -> fields -> keywords );
}
?>

参考文章出处:http://www.blogzhong.com/2014/03/01/1.html



再加个page

代码: 全选

        if (
        $this -> is('page') ) {
        $this -> header( 'keywords=' . $this -> fields -> keywords );}

这个只是keywords,那么如何来写描述呢?
xazzz
帖子: 8
注册时间: 2010年 11月 5日 08:51
联系:

Re: Typecho 0.9版自定义文章页、独立页面的关键字和描述

帖子 xazzz »

fengter 写了:
LJ 写了:
terminator1988 写了:太麻烦了,其实可以更简单点,只要2句代码就可以了

代码: 全选

<?php
if ( $this -> is('index') ) {
    $this -> header();
}
if ( $this -> is('post') ) {
    $this -> header( 'keywords=' . $this -> fields -> keywords );
}
?>

参考文章出处:http://www.blogzhong.com/2014/03/01/1.html



再加个page

代码: 全选

        if (
        $this -> is('page') ) {
        $this -> header( 'keywords=' . $this -> fields -> keywords );}

这个只是keywords,那么如何来写描述呢?


代码: 全选

        if (
        $this -> is('page') ) {
        $this -> header( 'keywords=' . $this -> fields -> keywords )
        $this -> header( 'description=' . $this -> fields -> description)
;}
头像
linfeiyu
帖子: 39
注册时间: 2011年 12月 25日 13:24
联系:

Re: Typecho 0.9版自定义文章页、独立页面的关键字和描述

帖子 linfeiyu »

这个可以有哈!mark
typechouser
帖子: 5
注册时间: 2014年 4月 8日 09:12

Re: Typecho 0.9版自定义文章页、独立页面的关键字和描述

帖子 typechouser »

这个自定义字段很麻烦,每次新文章都要写一次字段,不能选择已有的字段。我直接修改了源码,把描述这些加进去。
qqcmr
帖子: 24
注册时间: 2010年 9月 23日 09:47
联系:

Re: Typecho 0.9版自定义文章页、独立页面的关键字和描述

帖子 qqcmr »

楼上的,改法说一下看。
回复