typecho是一款不错的php博客系统,轻便而功能完备,也有许多的支持者;但博客除了后台功能外,最重要的应该算得上是博客外观了,可是别人所作的模版一般都不大可能完全符合自己的使用习惯、或是品味。那么我们有必要自己制作、或者至少:能够对已有的模版进行一些个性化的定制,那么,下面的这些小小的技巧也就是必不可少的了。你可以用它们对typecho模版进行一些人性化、个性化的改进。
1,文章title设置,使得对搜索引擎足够友好
示例一:
【博客首页】-- 博客名称 - 博客描述【归档页面】--XXXX/XX - 博客名称
【文章页面】--文章标题 - 博客名称【独立页面】---页面标题 - 博客名称
【分类页面】-- 分类名称 - 博客名称【标签页面】-- 标签 - 博客名称

<?php if($this->is('index')): ?><?php $this->options->title(); ?>-<?php $this->options->description(); ?>
<?php elseif($this->is('archive')): ?><?php $this->archiveTitle('/','',' - '); ?><?php $this->options->title(); ?>
<?php else: ?><?php $this->archiveTitle('','',' - '); ?><?php $this->options->title(); ?><?php endif; ?>

示例二:
【博客首页】博客名称
【独立页面】页面标题 - 博客名称
【分类页面】分类名称 - 博客名称
【标签页面】Tag: 标签 - 博客名称
【存档页面】存档: XXXX年XX月 - 博客名称
【其它(日志页)】页面标题

<?php if ($this->is('index')){$this->options->title();}
elseif($this->is('page')){$this->archiveTitle('','',' - ');$this->options->title();}
elseif($this->is('category')){$this->archiveTitle('','',' - ');$this->options->title();}
elseif($this->is('tag')){$this->archiveTitle('','Tag: ',' - ');$this->options->title();}
elseif($this->is('archive')){$this->archiveTitle('年','存档: ','月 - ');$this->options->title();}
else{$this->archiveTitle('','','');}?>
或使用(默认):
<?php $this->archiveTitle('', '', ' - '); ?><?php $this->options->title(); ?>-<?php $this->options->description(); ?>

最后给出一个较全面的判断:

<?php if($this->is('index')){ ?>
    <?php $this->options->title(); ?><?php $this->options->description(); ?>
    <?php if($this->_currentPage>1) echo '第 '.$this->_currentPage.' 页 '; ?>
<?php }  else if($this->is('category')) { ?>
    Category: <?php $this->archiveTitle(' &lt; ','',''); ?><?php $this->options->title(); ?>
<?php } else if($this->is('tag')) { ?>
    Tag: <?php $this->archiveTitle(' &lt; ','',''); ?><?php $this->options->title(); ?>
<?php } else if($this->is('archive'))  { ?>
    Keyword: <?php $this->archiveTitle(' &lt; ','',''); ?><?php $this->options->title(); ?>
<?php } else if($this->is('attachment')) {?>
    Attachment: <?php $this->archiveTitle(' &lt; ','',''); ?><?php $this->options->title(); ?>
<?php } else  { ?>
    <?php $this->archiveTitle('', '', ''); ?><?php $this->options->title(); ?>
<?php } ?>

2、相关文章的调用:

<?php $this->related(5)->to($relatedPosts); ?>
<?php if ($relatedPosts->have()): ?>
<?php while ($relatedPosts->next()): ?><li>
<a href="<?php $relatedPosts->permalink(); ?>" title="<?php $relatedPosts->title(); ?>"><?php $relatedPosts->title(); ?></a> <small class="info"><strong><?php $relatedPosts->author(); ?></strong> post in<?php $this->date('Y-m-d H:i:s'); ?></small></li>
<?php endwhile; ?>
<?php else : ?><li>No Related Post</li>
<?php endif; ?>

3、输出Tags
输出所有(最好把它用在单独页面中):

    <?php $this->widget('Widget_Metas_Tag_Cloud') ->parse('<span class="tagcloud"><a href="{permalink}">{name}</span></a>'); ?>
或者使用(推荐)(使用于边栏):
<?php $this->widget('Widget_Metas_Tag_Cloud', array('sort' => 'count', 'ignoreZeroCount' => true, 'desc' => true, 'limit' => 20))->to($tags); ?>
<?php while($tags->next()): ?><li>
<a rel="tag" href="<?php $tags->permalink(); ?>" ><?php $tags->name(); ?></a></li>
<?php endwhile; ?>

注:20控制输出数量
4、分页只显示新文章、旧文章

<?php $this->pageLink('? 新文章','prev'); ?>
<?php $this->pageLink('旧文章 ?','next'); ?>

5、测边栏每月归档后面显示文章数

<?php $this->widget('Widget_Contents_Post_Date', 'type=month&format=Y年m月')
->parse('<li><a href="{permalink}">{date}</a> <span id="ignore">({count})</span></li>'); ?>

6、复制文章时带版权(注意这是JS)

<script type="text/javascript">
    function copy_code(text) {
        if (window.clipboardData) {
        window.clipboardData.setData("Text", text)
            alert("已经成功复制到剪贴板!");
        } else {
        var x=prompt('你的浏览器可能不能正常复制\n请你手动进行:',text);
        }
        //return false;
    }
</script>

7,标签云

<?php $this->widget('Widget_Metas_Tag_Cloud', 'ignoreZeroCount=1&limit=20′)->to($tags); ?>
<?php while($tags->next()): ?>
<a href=”<?php $tags->permalink(); ?>”><?php $tags->name(); ?></a>
<?php endwhile; ?>

8,最新文章

<?php $this->widget('Widget_Contents_Post_Recent')->to($post); ?>
<?php while($post->next()): ?>
<a href=”<?php $post->permalink(); ?>” title=”<?php $post->title(); ?>”>
<?php $post->title(25, '…'); ?></a>
<?php endwhile; ?>

9,相关内容

<?php $this->related(5)->to($relatedPosts); ?>
<?php while ($relatedPosts->next()): ?>
<a href=”<?php $relatedPosts->permalink(); ?>” title=”<?php $relatedPosts->title(); ?>”><?php $relatedPosts->title(); ?></a>
<small><strong><?php $relatedPosts->author(); ?></strong> post in <?php $this->date('Y-m-d H:i:s'); ?></small>
<?php endwhile; ?>

10,日期归档显示统计数量

<?php $this->widget('Widget_Contents_Post_Date', 'type=month&format=F Y')->parse('<li><a href=”{permalink}”>{date}</a> ({count})</li>'); ?>

11,友情链接 要装插件

<?php PageToLinks::output('links', 'h3', 'ul'); ?>

12,头部关键信息

<?php $this->keywords('_'); ?> //关键词
<?php $this->options->title(); ?> //站点名称
<?php $this->options->description(); ?> //站点描述
<?php $this->archiveTitle(); ?> //标题
<?php $this->options->themeUrl('ie.css'); ?> //模板路径
<?php $this->options->siteUrl(); ?> //主页网址
<?php $this->options->feedUrl(); ?>
<?php $this->options->commentsFeedUrl(); ?>
<?php $this->pageNav(); ?> //分页
<?php $this->options->generator(); ?> //版本号

13,文章页面相关参数调用

<?php $this->title(); ?> //标题
<?php $this->category(','); ?> //分类
<?php $this->tags(', ', true, ''); ?> //标签
<?php $this->date('F jS, Y') ?> //时间
<?php $this->content(); ?> //内容
<?php $this->thePrev('&laquo; %s', ''); ?> //上一篇
<?php $this->theNext('%s &raquo;', ''); ?> //下一篇

14,全部文章列表代码,可以应用在任何地方:

<?php $this->widget('Widget_Contents_Post_Recent', 'pageSize=10000')->parse('<li>{year}-{month}-{day} : <a href="{permalink}">{title}</a></li>'); ?>

15,全部标签集列表

<?php $this->widget('Widget_Metas_Tag_Cloud')->to($taglist); ?><?php while($taglist->next()): ?><li><a href="<?php $taglist->permalink(); ?>" title="<?php $taglist->name(); ?>"><?php $taglist->name(); ?></a></li>
<?php endwhile; ?>

16,全部日志数量:

<?php $stat = Typecho_Widget::widget('Widget_Stat') ;echo ".$stat->PublishedPostsNum."; ?>

17,使用下面这个方法,可以自定义首页的文章显示条数,以及自定义分类文章显示:

function themeInit($archive) {
    if ($archive->is('index')) {
        $archive->parameter->pageSize = 10; // 自定义条数
    }
}

或者:

function themeInit($archive) {
    if ($archive->is('category', 'default')) {
        $archive->parameter->pageSize = 10; // 自定义条数
    }
}

18,调用某分类文章,pageSize是数量,mid是分类号:

<?php $this->widget('Widget_Archive@index', 'pageSize=6&type=category', 'mid=1') ->parse('<li><a href="{permalink}">{title}</a></li>'); ?>

19,侧栏评论忽略博主评论

<?php $this->widget('Widget_Comments_Recent','ignoreAuthor=true')->to($comments); ?>

20,typecho自动显示摘要,180为自动摘要的字数
<?php $this->excerpt(180); ?>

<p class="more"><a href="<?php $this->permalink() ?>" rel="bookmark" title="<?php $this->title() ?>">阅读全文</a></p>

在这里提醒大家一下:

<?php $this->excerpt(180,'ABC'); ?>

将其定义为空字符串,然后在【阅读全文】后面加上...我个人觉得这样好看一点。
Te多数调用语句都有类似的参数,随意组合一下,说不定会有惊喜呢。
21,评论输出:

<?php $comments->author(true); ?>//输出评论人昵称,参数true为带链接的,false为不带链接的;
//ps.其实还有一个参数,类型也是布尔,作用是是否带noFollow
<?php $comments->excerpt(18, '...'); ?>//输出评论摘要,第一个参数是要截取的长度,第二个是截取后的字符串;
<?php $comments->permalink(); ?>//获取当前评论链接,木有参数;
<?php $comments->title(); ?>//获取当前评论标题,同样木有参数;
<?php $comments->dateWord(); ?>//输出词义化日期,就是输出“3小时前”、“三天前”之内的;
<?php $comments->gravatar(); ?>//调用gravatar输出用户头像,有两个参数,第一个是头像尺寸,默认是32,第二个是默认输出的头像。

22,分离文章的评论和引用通告:
打开模板的 comments.php 文件,找到通篇的核心语句:

<?php $this->comments()->to($comments); ?>

这条语句控制着评论的类型,他的参数如下:

<?php $this→comments()→to($comments); ?>  显示全部(默认)
<?php $this→comments('comment')→to($comments); ?>  只显示 comment
<?php $this→comments('trackback')→to($trackbacks); ?>  只显示 trackback
<?php $this→comments('pingback')→to($pingbacks); ?>  只显示 pingback

为了分开,我们开始对 comments.php 做如下修改,首先只显示评论:

<?php $this->comments('comment')->to($comments); ?><!-- 关键 -->
<?php if ($comments->have()) : ?>

<ol>
 <?php while ($comments->next()) : ?>
 <li id="<?php $comments->theId() ?>">
  <div class="comment_data">
   <?php $comments->gravatar(32, '', '', 'avatar'); ?>
   <span><?php $comments->author() ?></span> Says:
   <?php $comments->date('F jS, Y'); ?> at <?php $comments->date('h:i a'); ?>
  </div>
  <div class="comment_text"><?php $comments->content() ?></div>
 </li>
 <?php endwhile; ?>
 </ol>

<p><?php endif; ?>然后输出 pingback,pingback 并不需要那么多的展示内容,假设只展示标题和日期:
<?php $this->comments('pingback')->to($pingbacks); ?><!-- 关键 -->
<?php if ($pingbacks->have()) : ?></p>

<h3>Pingbacks</h3>

<ol>
 <?php while ($pingbacks->next()) : ?>
  <li id="<?php $pingbacks->theId() ?>">
   <?php $pingbacks->author() ?> <?php $pingbacks->date('F jS, Y'); ?>
  </li>
 <?php endwhile; ?>
 </ol>

<p><?php endif; ?>如果你要显示 trackback,也可以按如上的修改。

23,Typecho文章标题字数限制

<?php $this->widget('Widget_Contents_Post_Recent')->to($post); ?>
<?php while($post->next()): ?><li><a href="<?php $post->permalink(); ?>"><?php $post->title(25, '...'); ?></a></li>
<?php endwhile; ?>

Typecho Captcha插件的<p><?php Captcha_Plugin::output(); ?></p>

<script type="text/javascript">
/76090,创建于2013-2-25*/
var cpro_id = "u1220226";
</script>
<script src="http://cpro.baidustatic.com/cpro/ui/c.js"; type="text/javascript"></script>