问题原由

Typecho博客在新建文章,上传附件成功后,如果未保存文章直接关闭,文件的所属文章会显示未归档。如下图

文件管理上没有设置其所属文章的选项,要想修改只能去数据库更改。

Typecho使用富文本编辑器 及 Markdown 编辑器 都是支持直接粘贴图片上传,但在附件页不显示,也就是说你发布文章后,其粘贴上传的图片没有设置所属文章的属性,默认为0,即未归档。也就是parent这个字段。

关键问题是,你这篇文章发布后,再新建的话,之前的附件将会显示在下一篇上。最后导致缩略图等等异常。

解决方法一: 手动修改parent

然后鉴于本博主的不懂这个,就只能另想办法了。就是手动更改parent的值。为了避免老是去数据库操作,就直接在其编辑文件页上增加了选项,如下图

具体方法

打开var/Widget/Contents/Attachment/Edit.php 进行编辑

  • 在第123行加入
1
2
3
/** 文件归属 */
$parent = new Typecho_Widget_Helper_Form_Element_Text('parent', NULL, $this->parent, _t('文件归属_(填写文章CID)'));
$form->addInput($parent);

  • 在第175行替换一下代码
1
2
3
4
5
6
/** 取出数据 */
$input = $this->request->from('name', 'slug', 'description','parent');
$input['slug'] = Typecho_Common::slugName(empty($input['slug']) ? $input['name'] : $input['slug']);
$attachment['parent'] = $input['parent'];
$attachment['title'] = $input['name'];
$attachment['slug'] = $input['slug'];

  • 然后保存文件即可。

解决方法二: 自动找到parent

文件归档错乱的的原因是没有parent值,即没有这篇新建文章的cid,如果有了cid就不会错乱了。

新建文章之后输入标题先保存草稿,就会生成cid,再上传保存,文件就会出现在附件中。

本文摘自: Typecho:后台文件管理设置归档所属