我如何知道我可以用Pelican信号做些什么?我正在尝试编写一个插件

时间:2016-04-10 23:08:34

标签: python pelican

这些信号是here所描述的,但那又是什么?

例如,其中一个信号被描述:

  在撰写每篇文章之前调用

,文章作为内容传递

如何更改该内容?我该如何访问它?有哪些功能?

我一直在看github上的pelican插件回购中的例子,但我仍然感到困惑。 (那些人甚至如何学习如何编写这些插件?)

我几乎不知道从哪里开始。

1 个答案:

答案 0 :(得分:2)

您必须查看pelican的{​​{3}}。我认为没有更好的方法。

例如,搜索您感兴趣的信号,例如article_generator_write_articlesource code

然后,查看搜索结果,例如generators.py并点击包含您信号的行号。当然,您也可以创建一个克隆并在本地完成所有这些操作。这取决于你的工作方式。

周围代码:

def generate_articles(self, write):
    """Generate the articles."""
    for article in chain(self.translations, self.articles):
        signals.article_generator_write_article.send(self, content=article)
        write(article.save_as, self.get_template(article.template),
              self.context, article=article, category=article.category,
              override_output=hasattr(article, 'override_save_as'), blog=True)

如您所见,信号调用为您提供了article个对象。你现在可以1)查看源代码,找到这个对象的相应python类,找出它的内部工作方式,方法和属性,或者2)去hacky路径并简单地打印对象的成员{{1 }}

我想,在没有查看代码的情况下,print(article.__dict__)有一个属性article,其中包含从源文件生成的HTML代码。这就是您所期望的变化所在。

请注意,如果您想在处理之前更改源代码 ,这并不容易。我刚写了一篇能够做到这一点的https://github.com/getpelican/pelican/search?utf8=%E2%9C%93&q=article_generator_write_article

在那里,您还可以看到信号API的运行情况。您只需要content处理函数来处理所需的信号。

我希望这会有所帮助:)