REC

在 Typecho 中实现通过输入“#标签”自动填充标签功能

教主
3天前发布 /正在检测是否收录...

在 Typecho 中使用 Joe 编辑器时,实现通过输入“#标签”自动填充标签功能,可以通过以下几种方法实现:

方法一:使用 AutoTags 插件

AutoTags 是一款专为 Typecho 设计的开源插件,能够自动提取文章中的关键词并生成标签。虽然它不是直接通过“#标签”来实现自动填充,但它可以根据文章内容智能生成相关标签,非常实用。

安装步骤:

1. 克隆仓库:通过 Git 将 AutoTags 项目下载到你的 Typecho 插件目录下:

git clone https://github.com/DT27/AutoTags.git

2. 启用插件:登录你的 Typecho 管理后台,进入“控制台”->“插件”,找到名为“AutoTags”的插件并点击启用。
3. 配置插件(可选):进入插件设置页面调整默认生成标签的数量等选项。

方法二:使用 TagSelector 插件

TagSelector 是一款增强后台标签功能的插件,支持标签展示和选择。虽然它不能直接实现通过“#标签”自动填充,但它可以让你在后台编辑文章时更方便地选择已有的标签。

安装步骤:

  1. 下载插件:从 Typecho 插件库下载 TagSelector 插件。
  2. 上传插件:将下载的插件文件夹 TagSelector 上传到 Typecho 的插件目录(usr/plugins/)。
  3. 启用插件:在 Typecho 后台插件管理页面启用 TagSelector 插件。

方法三:自定义代码实现

如果你希望直接通过输入“#标签”来实现自动填充,可以通过自定义代码的方式实现。以下是一个简单的实现方法:

实现步骤:

1. 编辑主题文件:在你的主题文件夹中找到 functions.php 文件,如果没有则创建一个。
2. 添加代码:在 functions.php 文件中添加以下代码:

function autoTags($content)
{
    preg_match_all('/#(\w+)/', $content, $matches);
    $tags = array_unique($matches[1]);
    return implode(',', $tags);
}

3. 修改文章发布逻辑:在 admin/write-post.php 文件中找到标签输入框的代码:

<p><input id="tags" name="tags" type="text" value="<?php $post->tags(',', false); ?>" class="w-100 text" /></p>

在其下方添加以下代码:

<script>
    document.getElementById('text').addEventListener('input', function() {
        var content = this.value;
        var xhr = new XMLHttpRequest();
        xhr.open('POST', '<?php echo Typecho_Common::url('action/write-post.php', Typecho_Common::getOptions()->index); ?>', true);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xhr.send('do=autoTags&content=' + encodeURIComponent(content));
        xhr.onload = function() {
            if (xhr.status === 200) {
                document.getElementById('tags').value = xhr.responseText;
            }
        };
    });
</script>

4. 处理自动标签逻辑:在 admin/write-post.php 文件中找到 do=autoTags 的处理逻辑,添加以下代码:

if (isset($_POST['do']) && $_POST['do'] == 'autoTags') {
    header('Content-Type: text/plain');
    echo autoTags($_POST['content']);
    exit;
}

博客:6v6.ren

通过以上方法,你可以实现通过输入“#标签”自动填充标签的功能,提升你的写作体验。

© 版权声明
本站用户发帖仅代表本站用户个人观点,并不代表本站赞同其观点和对其真实性负责。
转载本网站任何内容,请按照转载方式正确书写本站原文地址。
THE END
喜欢就支持一下吧
点赞 0 分享 赞赏
评论 抢沙发
取消 登录评论