虽然Typecho确实很好用,但是有些细节方面还是欠缺的。
当需要批量修改文章公开度的时候,那么问题来了,Typecho居然只有一个功能,就是批量删除……
manage-posts.php
这个文件位于/admin目录下
找到
<div class="row typecho-page-main" role="main">
...
<ul class="dropdown-menu">
在其中新增4个项目
<li><a lang="<?php _e('你确认要标记这些文章为公开吗?');?>" href="<?php $security->index('/action/contents-post-edit?do=ediVisibility-publish');?>"><?php _e('公开');?></a></li>
<li><a lang="<?php _e('你确认要标记这些文章为隐藏吗?');?>" href="<?php $security->index('/action/contents-post-edit?do=ediVisibility-hidden');?>"><?php _e('隐藏');?></a></li>
<li><a lang="<?php _e('你确认要标记这些文章为私密吗?');?>" href="<?php $security->index('/action/contents-post-edit?do=ediVisibility-private');?>"><?php _e('私密');?></a></li>
<li><a lang="<?php _e('你确认要标记这些文章为待审核吗?');?>" href="<?php $security->index('/action/contents-post-edit?do=ediVisibility-waiting');?>"><?php _e('待审核');?></a></li>
Edit.php
这个文件位于/var/Widget/Contents/Post目录下
首先在文件末尾,绑定动作中增加对应manage-posts.php中的动作
public function action() {
···
/* 新增的一些Action */
$this->on($this->request->is('do=ediVisibility-publish'))->ediVisibility('publish');
$this->on($this->request->is('do=ediVisibility-hidden'))->ediVisibility('hidden');
$this->on($this->request->is('do=ediVisibility-private'))->ediVisibility('private');
$this->on($this->request->is('do=ediVisibility-waiting'))->ediVisibility('waiting');
$this->response->redirect($this->options->adminUrl);
}
接下来在该方法上面新增一个方法
/**
* 设置公开度的方法(新增)
*
* @author Aria
* @access public
* @return void
*/
public function ediVisibility($status = 'publish') {
// 状态
// publish 公开
// hidden 隐藏
// private 私密
// waiting 待审核
// 获取Action涉及的文章cid的Array
$posts = $this->request->filter('int')->getArray('cid');
$deleteCount = 0;
foreach ($posts as $post) {
$contents['status'] = $status;
$this->update($contents, $this->db->sql()->where('cid = ?', $post));
$deleteCount++;
}
/** 设置提示信息 */
$this->widget('Widget_Notice')->set($deleteCount > 0 ? _t('操作成功') : _t('没有操作'),
$deleteCount > 0 ? 'success' : 'notice');
/** 返回原网页 */
$this->response->goBack();
}
保存覆盖这两个文件即可。