Update plugin.py

master
zxc 4 months ago
parent b130e7f44e
commit f83339d3eb

@ -4,29 +4,37 @@ from djangoblog.plugin_manage.hook_constants import ARTICLE_CONTENT_HOOK_NAME
class ArticleCopyrightPlugin(BasePlugin):
PLUGIN_NAME = '文章结尾版权声明'
PLUGIN_DESCRIPTION = '一个在文章正文末尾添加版权声明的插件。'
PLUGIN_VERSION = '0.2.0'
PLUGIN_AUTHOR = 'liangliangyy'
# 插件基本信息定义
PLUGIN_NAME = '文章结尾版权声明' # 插件名称,用于在管理界面显示
PLUGIN_DESCRIPTION = '一个在文章正文末尾添加版权声明的插件。' # 插件功能描述
PLUGIN_VERSION = '0.2.0' # 插件版本号
PLUGIN_AUTHOR = 'liangliangyy' # 插件作者
# 2. 实现 register_hooks 方法,专门用于注册钩子
# 2. 实现钩子注册方法,用于将插件功能绑定到系统钩子
def register_hooks(self):
# 在这里将插件的方法注册到指定的钩子上
# 将当前插件的add_copyright_to_content方法注册到文章内容钩子
# 当系统触发ARTICLE_CONTENT_HOOK_NAME钩子时会自动执行该方法
hooks.register(ARTICLE_CONTENT_HOOK_NAME, self.add_copyright_to_content)
def add_copyright_to_content(self, content, *args, **kwargs):
"""
这个方法会被注册到 'the_content' 过滤器钩子上
它接收原始内容并返回添加了版权信息的新内容
具体的插件功能实现在文章内容末尾添加版权声明
该方法会被注册到文章内容处理的钩子上接收原始内容并返回处理后的内容
"""
# 从关键字参数中获取当前文章对象
article = kwargs.get('article')
# 如果没有文章对象(如非文章场景),直接返回原始内容
if not article:
return content
# 构造版权声明内容,包含文章作者信息
copyright_info = f"\n<hr><p>本文由 {article.author.username} 原创,转载请注明出处。</p>"
# 将版权声明追加到原始内容末尾并返回
return content + copyright_info
# 3. 实例化插件。
# 这会自动调用 BasePlugin.__init__然后 BasePlugin.__init__ 会调用我们上面定义的 register_hooks 方法。
# 3. 实例化插件
# 实例化时会自动调用父类BasePlugin的__init__方法
# 父类初始化过程中会调用当前类的register_hooks方法完成钩子注册
# 从而使插件功能生效
plugin = ArticleCopyrightPlugin()

Loading…
Cancel
Save