20140504更新
刚刚过去的双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
标签了。
沙发?呵呵,先抢在说。
再来一个板凳,继续关注。
来个三连发吧,typecho是个不错的博客程序,当初有在用,现在没用,不折腾了,还是wordpress更新比较频繁,功能比较强大些。
有人喜欢强大,有人喜欢简洁 😆
暂时没用到 😀
一直没搞明白自定义字段会在哪里应用。。
我是不是给你恍然大悟 😎
木有,还是没搞明白。。
没用过…有空装个玩玩
😎
我也在用,0.9出来马上升级了,爱的就是tp的简洁
➡ 不懂
😎 😎 感觉keywords不怎么管用了…..
有总比没有好吧 😆
❗ 感谢分享,学会了哈。
不错呢,这样有利于SEO
久闻这个博客程序,一直没有机会试用
判断用的有点多 不知道会不会影响速度 🙁
PHP的效率,这几个判断完全无视啊
我是搭建在SAE上面,不支持自定义字段~~ ❓
谁说不支持?
是typecho 0.9么?
解决了,不知原因。不管了
字段这个东西还是不是很理解,哈哈,暂时没用这个功能~
相当炫酷啊,我也写了个typecho主题,官方文档真是垃圾,基本没有任何帮助
西门,你的网站模板哪里有下载啊?可以发给我一份吗?还有评论的插件
版权看网站右下角。
其实可以更简单就2句代码
<pre><code>
<?php
if ( $this -> is('index') ) {
$this -> header();
}
if ( $this -> is('post') ) {
$this -> header( 'keywords=' . $this -> fields -> keywords );
}
?>
</code></pre>
http://www.blogzhong.com/2014/03/01/1.html
感谢,已经综合改进了 😆
mark一下,马上的新主题考虑靠自定义字段来判断文章类型
我想要把首页的副标题跟描述分开设置,应该怎么弄?
(我不会PHP,求现成代码 😀 )
首页的副标题是啥? 😕
请教博主,如何在实现这个需求的前提下屏蔽其他不需要的meta呢?屏蔽代码应该怎么加?不会PHP ❓ ❓
<?php $this->header(Content::exportGeneratorRules($this)); ?>
我用的typecho1.2 handsome主题
里面的描述和关键词都用这一句调用了
应该怎么修改
打开主题文件夹里的header.php,编辑,找到
<?php $this->header(); ?>
按照官方文档的说法,我们先把关键字和描述禁掉。所以把上面一段改成
<?php $this->header('keywords=&description='); ?>
然后把下面这段加在<?php $this->header('keywords=&description='); ?>前面
<?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.php,编辑,找到
<?php $this->header(); ?>
按照官方文档的说法,我们先把关键字和描述禁掉。所以把上面一段改成
<?php $this->header('keywords=&description='); ?>
然后把下面这段加在<?php $this->header('keywords=&description='); ?>前面
<?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();
} ?>