马春杰杰 Exit Reader Mode

Typecho美化汇总

之前介绍过本站点进行的一些美化操作,最近开始搭建Typecho博客,在这里记录一些Plug-and-Play的函数或者模块,以便于其他博客的复用。

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分类下的文章:

<?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函数,然后类似下面这样:

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>类别下的文章拿出来,用的字段有“标题”、“链接”、“缩略图”、“描述

第一种方式:

<?php $this->widget('Widget_Archive@index', 'pageSize=50&type=category', 'mid=3')->parse(' html code'); ?>

此时会循环读取某一类的文章,其中pageSize表示取的文章数量,mid表示某个类别,比如我这里movie是3。在写html时,如果我们想取该文章的某个字段,可以直接使用{字段名}即可。比如年份{year},具体的字段见:

不过第一种方式我没找到调用自定义字段的方式,遂放弃第一种,改用第二种。

第二种方式:

<?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"代替。下面是实现效果:

 

 

 

本文最后更新于2021年6月27日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!