Loï*_*oix 2 python plugins entry-point pyramid
好的,这是问题的简要说明.我确实有一个金字塔设置,开始看起来像一个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'''
Run Code Online (Sandbox Code Playgroud)
还有一个不同的模型插件
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
Run Code Online (Sandbox Code Playgroud)
我最大的问题是它是如何找到文件的.我将不得不做一些测试,但我担心翻译和文件路径.
通过参赛作品如何运作对我来说仍然是个谜.插件是否会使用babel翻译...我可以在模板插件中使用我的babel翻译吗?加载入口点时..当前目录是项目的目录还是入口点的目录?我相信我可以轻松地获得分配的路径,但我不确定这样做的正确方法是什么......我觉得我正在进入一个充满地雷的全新土地.
在Pyramid中,您可以使用render_to_reponse函数在运行时选择模板.但是,如果你想有一个更熟的解决方案,你可能会启发Kotti,已经有插件的支持金字塔CMS和外观定制与"巴别塔"的国际化.为了使用另一个'主题',您必须按照Kotti使用的约定编写另一个包含一些模板和静态资源的包,然后在.ini配置文件中激活包.
要了解Kotti如何实现这一点,您应该从这一行开始遵循代码路径
无论如何,Kotti对如何配置Pyramid应用程序做了一些假设,例如SQLAlchemy用于存储,formencode用于表单生成或遍历将视图映射到资源,所以YMMV.金字塔本身对你这样做的方式不感兴趣.
| 归档时间: |
|
| 查看次数: |
1528 次 |
| 最近记录: |