【问题标题】:Plugins for pyramid (themes, views etc)金字塔插件(主题、视图等)
【发布时间】:2011-11-20 10:42:25
【问题描述】:

好的,这就是简单的问题。我确实有一个金字塔设置,它确实开始看起来像一个 cms。 我有基本模型:[帐户、页面、错误、菜单、配置]

它工作得很好,但我确实有一些问题。目前我正在使用 git,在某些分支上我确实有不同的模板,在主分支上我对核心进行了更改。

我希望能够安装主题。主题将是模板文件/静态文件(css/js)的集合。

这可以通过 entry_points 来实现,我的配置视图可以查找它们并显示已安装主题的列表。到目前为止是可以做到的。

能够动态切换不同的主题将是一个很好的开始,这样我就不必只为新主题分叉我的项目。

第二个问题是这些网站需要不同的内容。例如,一个需要“问题”,另一个需要“产品”

所以我有这个想法

class TemplatePlugin(PyramidPlugin):
    template_path = ''
    static_path = ''

    def register(self, config, app):
        '''Inject the plugin in the application... how I'm not sure yet'''

    def unregister(self):
        '''unregister the plugin if something is needed'''

    def (before/after)_(request/newapp...)(self,...):
        '''do some stuff for some events most are optional'''

还有一个不同的模型插件

class PyramidPlugin(pyramid_plugin):
    def register(self, config, app):
         '''add routes,
            add view handlers (view_config)
            add models acl to the acl list
         '''

    # other functions similar to the above class to handle events

我最大的问题是它如何找到文件。我将不得不做一些测试,但我担心翻译和文件路径。

它如何通过入口点工作对我来说仍然是一个谜。插件会使用 babel 翻译...我可以在模板插件中使用我的 babel 翻译吗?加载入口点时..当前目录是项目的目录还是入口点的目录?我相信我可以很容易地通过分发获得路径,但我不确定做这一切的正确方法是什么......我觉得我正在进入一个充满地雷的全新土地。

【问题讨论】:

    标签: python plugins pyramid entry-point


    【解决方案1】:

    在 Pyramid 中,您可以使用 render_to_reponse 函数在运行时选择模板。但是,如果您想要一个更成熟的解决方案,您可能会受到Kotti 的启发,这是一个已经支持插件的 Pyramid CMS 和带有“Babel”以实现国际化的look and feel customization。为了使用另一个“主题”,您必须按照 Kotti 使用的约定编写包含一些模板和静态资产的另一个包,然后在 .ini 配置文件中激活该包。

    要了解 Kotti 是如何实现这一点的,您应该从 this line 开始遵循代码路径

    无论如何,Kotti 对 Pyramid 应用程序的配置方式做出了一些假设,例如用于存储的 SQLAlchemy、用于生成表单的 formencode 或将视图映射到资源的遍历,因此 YMMV。 Pyramid 本身对您执行此操作的方式没有意见。

    【讨论】:

      猜你喜欢
      • 2012-11-18
      • 1970-01-01
      • 2017-07-03
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 2016-08-20
      • 1970-01-01
      相关资源
      最近更新 更多