写一个简单的hexo-tag-plugin:quote

news/2025/2/26 17:28:08/文章来源:https://www.cnblogs.com/zlli/p/18739069

前置教程

[Akilarの糖果屋 - Akilar.top](https://akilar.top/posts/e2bf861f/)

为啥想写一个quote的标签外挂

我最近在写博客的时候,发现好多时候原生的Hexo标签不是很好用,效果如下。

{% tabs Hexo Block Quote, -1 %}

  1. 没有提供参数,则只输出普通的 blockquote

{% blockquote %}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque hendrerit lacus ut purus iaculis feugiat. Sed nec tempor elit, quis aliquam neque. Curabitur sed diam eget dolor fermentum semper at eu lorem.

  1. 引用书上的句子

{% blockquote David Levithan, Wide Awake %}
Do not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy.

  1. 引用 Twitter

{% blockquote @DevDocs https://twitter.com/devdocs/status/356095192085962752 %}
NEW: DevDocs now comes with syntax highlighting. http://devdocs.io

  1. 引用网络上的文章

{% blockquote Seth Godin http://sethgodin.typepad.com/seths_blog/2009/07/welcome-to-island-marketing.html Welcome to Island Marketing %}
Every interaction is both precious and an opportunity to delight.

1. 没有提供参数,则只输出普通的 blockquote{% blockquote %}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque hendrerit lacus ut purus iaculis feugiat. Sed nec tempor elit, quis aliquam neque. Curabitur sed diam eget dolor fermentum semper at eu lorem.
{% endblockquote %}2. 引用书上的句子{% blockquote David Levithan, Wide Awake %}
Do not just seek happiness for yourself. Seek happiness for all. Through kindness. Through mercy.
{% endblockquote %}3. 引用 Twitter{% blockquote @DevDocs https://twitter.com/devdocs/status/356095192085962752 %}
NEW: DevDocs now comes with syntax highlighting. http://devdocs.io
{% endblockquote %}4. 引用网络上的文章{% blockquote Seth Godin http://sethgodin.typepad.com/seths_blog/2009/07/welcome-to-island-marketing.html Welcome to Island Marketing %}
Every interaction is both precious and an opportunity to delight.
{% endblockquote %}

{% endtabs %}

我更希望引用的作者和作品在底部右侧,并且用不同的颜色高亮引用的作者和作品,如下图所示。

image-20230318164704846

具体实现

  1. [Blogroot]\themes\butterfly\scripts\tag\下新建一个quote.js
  2. 写入如下内容:
//判断是否为空function isEmpty(v) {switch (typeof v) {case 'undefined':return true;case 'string':if (v.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true;break;case 'boolean':if (!v) return true;break;case 'number':if (0 === v || isNaN(v)) return true;break;case 'object':if (null === v || v.length === 0) return true;for (var i in v) {return false;}return true;}return false;
}//参数处理函数
function quote (args, content) {args = args.join(' ').split(';')let author = args[0]let work = args[1]?args[1]:''if (!isEmpty(work)) {work = "《" + work + "》"}else {work = work}let color = args[2]?args[2]:'green'return `<blockquote>${hexo.render.renderSync({ text: content, engine: 'markdown' })}<p align="right"><font color=${color} size="3" face="仿宋">${author}${work}</font></p></blockquote>`
}
//标签注册函数
hexo.extend.tag.register('quote',quote,{ ends: true });

参数释义:

  • args 指标签接受的参数,content指标签的内容。
  • args = args.join(' ').split(';')会将args;切割并添加到同名数组args中。
  • let work = args[1]?args[1]:''javascript的三元运算符来保证work不存在时候用空代替。
  • return 的内容就是插入html的内容,${ author}接受上面的变量值。

quote标签语法

{% tabs Pull Quote, 1 %}

{% quote [author];[work];[color] %}
content
{% endpquote %}

author: 作者

work: 作品

color: 颜色

content: 引用的内容

{% quote 伊坂幸太郎;一首小夜曲;red%}

一想到为人父母居然不用经过考试,就觉得真是太可怕了。

{% endquote %}

{% quote 伊坂幸太郎;一首小夜曲;red %}一想到为人父母居然不用经过考试,就觉得真是太可怕了。{% endquote %}

{% endtabs %}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/890194.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建DeepSeek-R1平台

前言 大家用到 DeepSeek-R1 时应该会经常出现下面的情况。但凡多问两个问题,不但缓慢,而且容易出现服务器繁忙的问题:今天教大家一种通过API部署的方式,可以体验满血版的DeepSeek-R1,不仅回答快速,而且不会出现服务器繁忙的情况。 注册账号 首先大家要通过下面的方式,先…

No.16 CSS--背景属性

一、CSS常见的背景属性 background-color: aqua; 设置背景颜色background-image: none; 设置背景图片background-position: 0%; 设置背景图片位置background-repeat: no-repeat; 设置背景图片如何重复填充background-size: 0%; …

Mybatis基础06

动态SQL 介绍 什么是动态SQL:动态SQL指的是根据不同的查询条件 , 生成不同的Sql语句. 官网描述: MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,…

Spring5基础01

Spring概述简介Spring : 春天 --->给软件行业带来了春天 2002年,Rod Jahnson首次推出了Spring框架雏形interface21框架。 2004年3月24日,Spring框架以interface21框架为基础,经过重新设计,发布了1.0正式版。 很难想象Rod Johnson的学历 , 他是悉尼大学的博士,然而他的专…

P2375 [NOI2014] 动物园

P2375 [NOI2014] 动物园 题目描述 近日,园长发现动物园中好吃懒做的动物越来越多了。例如企鹅,只会卖萌向游客要吃的。为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习算法。 某天,园长给动物们讲解 KMP 算法。 园长:“…

KUKA库卡机器人KR210维修与保养秘籍

在工业自动化领域,KUKA库卡机器人凭借其性能和稳定的运行,成为众多企业的不二选择。然而,再先进的设备也需要定期的进行KUKA库卡机器人KR210维修和KUKA机械手保养,以确保其高效运行。 一、KUKA库卡机器人KR210维修方法包含了定期检查、润滑保养、更换损坏部件、控制柜维护等…

以下是使用:empty 搭配before实现表格中数据为空时的默认展示

以下是使用:empty 搭配before实现表格中数据为空时的默认展示// 在文件.vue中的table<template><!-- 省略其他代码 --><el-table-column prop="title" label="标题"></el-table-column><el-table-column prop="desc"…

07 常用优化器简介

模型能否准确地预测数据,是通过损失函数来衡量的。如何调整权重和偏差参数,从而最小化神经网络的损失函数,这是一类特定的优化算法。我们称它们为优化器(optimizer)。 为什么需要优化器? 因为损失函数参数众多且结构复杂,其导数置零的方程无法得到解析解或计算非常复杂。…

github-emoji-list

Github-emoji-list转载自https://github.com/caiyongji/emoji-list。emoji-list具体效果如下所示。人物:bowtie: :bowtie: 😄 :smile: 😆 :laughing:😊 :blush: 😃 :smiley: ☺️ :relaxed:😏 :smirk: 😍 :heart_eyes: 😘 :kissing_heart:😚 :kissing_closed_e…

2024年我读过的10本技术书籍(Java、架构、SRE运维)

什么是一本好书? 首先,我们需要定义什么是一本有价值的书籍。个人认为,一本好书应该具备以下特点:它能让我理解其中的一半+内容,引发共鸣,而剩下的部分内容则需要我反复阅读才能逐渐领会。如果我读完后发现完全理解了,那么这本书对我来说意义不大,因为它没有挑战我的思…

如何在WEB前端页面嵌入桌面程序EXE运行窗口?

在数字化转型浪潮中,企业常面临WEB与本地桌面应用割裂的痛点:‌复杂文档编辑需频繁切换系统,专属行业软件无法融入B/S架构‌……如何在WEB页面中直接调用并嵌入EXE程序窗口,实现真正的“云端+本地”一体化体验?猿大师中间件自从2019年发布以来,已经发布了三个重要产品:猿…

探索2025年客户管理新方向,看这家企业如何成功落地

某企业近年来销售业绩一直停滞不前,尽管产品质量过硬,企业的销售业绩却始终未能实现预期的突破。企业内部对销售策略进行了深入分析,发现销售业绩不佳的主要原因在于重复购买率低。 在管理层进一步分析后,发现是企业的销售和市场推广手段过于单一,缺乏有效的客户留存策略。…