之前介绍过本站点进行的一些美化操作,最近开始搭建Typecho
博客,在这里记录一些Plug-and-Play
的函数或者模块,以便于其他博客的复用。
5 统计文章总数、分类总数、评论总数、页面总数
1 2 3 4 5 |
<?php Typecho_Widget::widget('Widget_Stat')->to($stat); ?> <li>文章总数:<?php $stat->publishedPostsNum() ?>篇</li> <li>分类总数:<?php $stat->categoriesNum() ?>个</li> <li>评论总数:<?php $stat->publishedCommentsNum() ?>条</li> <li>页面总数:<?php $stat->publishedPagesNum() ?>个</li> |
4 获取指定文章
如文章cid
已知,那么可以这样:
$post = $this->widget('Widget_Archive@post', 'type=post', 'cid=1');
$post->title();
3 隐藏边栏某一类的文章
比如我想隐藏want_to_watch
分类下的文章:
1 2 3 4 5 6 7 8 9 |
<?php $this->widget('Widget_Contents_Post_Recent','pageSize=15')->to($recent); ?> <?php while($recent->next()): ?> <?php if("$recent->category" != "want_to_watch"): ?> <li><i class="fa fa-file-o fa-fw"></i><a href="<?php $recent->permalink();?>" title="<?php $recent->title();?>"><?php $recent->title();?></a></li> <?php endif;?> <?php endwhile; ?> |
2 使用自定义字段
Typecho
中的自定义字段使用非常方便,只需要在文章发布页面中填入字段以及相应的值,在想要使用的地方直接输入:
<?php $this->fields->字段名();?>
即可。
如果是在模版中加入自定义字段,需要在主题的function.php中,找到themeFields函数,然后类似下面这样:
1 2 3 4 5 6 7 8 9 10 11 |
function themeFields($layout) { $thumb = new Typecho_Widget_Helper_Form_Element_Text('thumb', NULL, NULL, _t('自定义缩略图'), _t('在这里填入一个图片 URL 地址, 以添加本文的缩略图,若填入纯数字,例如 <b>3</b> ,则使用文章第三张图片作为缩略图(对应位置无图则不显示缩略图),留空则默认不显示缩略图')); $thumb->input->setAttribute('class', 'w-100'); $layout->addItem($thumb); $catalog = new Typecho_Widget_Helper_Form_Element_Radio('catalog', array(true => _t('启用'), false => _t('关闭')), false, _t('文章目录'), _t('默认关闭,启用则会在文章内显示“文章目录”(若文章内无任何标题,则不显示目录)')); $layout->addItem($catalog); } |
具体见:
1 获取指定类别的文章列表信息
目前正在搭建瀑布流页面,想把<movie>
类别下的文章拿出来,用的字段有“标题
”、“链接
”、“缩略图
”、“描述
”
第一种方式:
1 |
<?php $this->widget('Widget_Archive@index', 'pageSize=50&type=category', 'mid=3')->parse(' html code'); ?> |
此时会循环读取某一类的文章,其中pageSize
表示取的文章数量,mid
表示某个类别,比如我这里movie
是3。在写html
时,如果我们想取该文章的某个字段,可以直接使用{字段名}
即可。比如年份{year}
,具体的字段见:
不过第一种方式我没找到调用自定义字段的方式,遂放弃第一种,改用第二种。
第二种方式:
1 2 3 4 |
<?php $this->widget('Widget_Archive@index', 'pageSize=100&type=category', 'mid=3')->to($categoryPosts); ?> <?php while($categoryPosts->next()): ?> html code <?php endwhile; ?> |
这里注意一下,Widget_Archive@index
中@
后面的index
需要指定一个没有使用过的名字才可以。其他同第一种方法。
如果我们想要统计某个年份的数量,不能直接使用$yearss=$categoryPosts->year();
,而是需要用$yearss="$categoryPosts->year"
代替。下面是实现效果: