diff --git a/src/DjangoBlog-master/plugins/article_copyright/plugin.py b/src/DjangoBlog-master/plugins/article_copyright/plugin.py index 317fed2..ded3891 100644 --- a/src/DjangoBlog-master/plugins/article_copyright/plugin.py +++ b/src/DjangoBlog-master/plugins/article_copyright/plugin.py @@ -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

本文由 {article.author.username} 原创,转载请注明出处。

" + # 将版权声明追加到原始内容末尾并返回 return content + copyright_info -# 3. 实例化插件。 -# 这会自动调用 BasePlugin.__init__,然后 BasePlugin.__init__ 会调用我们上面定义的 register_hooks 方法。 +# 3. 实例化插件 +# 实例化时会自动调用父类BasePlugin的__init__方法, +# 父类初始化过程中会调用当前类的register_hooks方法完成钩子注册, +# 从而使插件功能生效 plugin = ArticleCopyrightPlugin()