引言

每次写博客的时候,都感觉这个“自定义字段”太碍事了。

尤其是我的习惯,怕丢文件,就会经常点击保存草稿。

每次点击保存草稿的时候,都会打开自定义字段,还得我手动折叠起来。

我用的笔记本屏幕不大,每次打开都贼头疼,滚动条被拉得贼长,强迫症都要犯了。

实现效果

想着能不能找到这个代码当中的部分,把它改成默认折叠起来

但是真要设置自定义字段的话,也可以点击展开,这就要求原先的功能不能少。

最终效果

实现

1. 确定修改范围

1.1 找到当前文件

根据链接地址,找到目录的文件。

文章修改页面的地址

很明显,这里是博客的根目录下的/admin文件夹,找到这个write-post.php文件。

确定有这个文件之后,执行命令查看这个文件信息:

vim ./admin/write-post.php

/admin/write-post.php文件内容

我在这个文件里翻找了一通

整个文件都没有自定义字段的东西

1.2 找到自定义字段相关代码段

但是划拉到底部,看到一串代码:

include 'custom-fields-js.php';

吸引了我的注意,看起来有点像自定义字段的东西?

引入custom-fields-js.php文件

/admin/目录下翻找,这个文件名相关的有两个文件:

custom-fields-js.php

custom-fields.php

很明显的猜测,一个是DOM结构,一个是js文件

打开一看custom-fields.php文件,果然是,写着自定义字段的中文,那就没错了。

1.3 确定展开折叠的元素

翻找了一下这个文件,有两个ID选择器是比较特殊的名字,看起来像是控制展开折叠的。

custom-fields.php文件内容

按钮的元素当中,有一个ID选择器的名字叫:id="custom-field-expand"

expand:展开

看起来像是JavaScriptID来选择元素实现点击后展开折叠的。

2. 确定展开折叠原理及逻辑

翻找一下custom-fields-js.php文件,发现了几行语句:

custom-fields-js.php文件的关键代码

发现只要点击了这个按钮,不管if还是else,都会执行这一句:

$(this).parent().toggleClass('fold');

也就是说,每次点击这个“自定义属性”的标签,都会去控制标签的父元素增或减这个fold

3. 修改默认折叠状态

那就简单了,这个JQuery的代码完全不用动

只要把DOM元素当中原先给增加或者删除这个fold类名就可以起到修改默认值的作用。

找到custom-fields.php文件的第7行,这里有一行嵌入的php代码,我们看一下:

class="typecho-post-option<?php if (empty($defaultFields) && empty($fields)): ?> fold<?php endif; ?>"

PHP判断了个空值并且默认字段都是空的时候输出这个fold类名

那就可以推断出,有这个类名就代表了整个自定义字段菜单是收起状态的。

那我们要默认隐藏的话,就直接把php代码删掉,直接输出一个fold类名就行了!

也就是改为这样:

<?php if (!defined('__TYPECHO_ADMIN__')) exit; ?>
<?php
$fields = isset($post) ? $post->getFieldItems() : $page->getFieldItems();
$defaultFields = isset($post) ? $post->getDefaultFieldItems() : $page->getDefaultFieldItems();
?>
<section id="custom-field"
         class="typecho-post-option fold">
    <label id="custom-field-expand" class="typecho-label"><a href="##"><i
                class="i-caret-right"></i> <?php _e('自定义字段'); ?></a></label>

怕你们看不清楚,特意截了一张截图,只在第7行修改就行。

请输入图片描述

这就可以了。wq!保存这个编辑器,并退出

测试

保存后刷新一下这个/admin/write-post.php页面,发现已经可以实现效果了

最终效果


欢迎关注拓行公众号,分享各种技术博客文章

拓行——奋勇进取,开拓未来,砥砺前行

最后修改:2023 年 12 月 21 日
如果您对各种技术博客文章感兴趣,欢迎关注拓行公众号,分享各种专业技术知识~