ここで問題を簡単に説明します。cms のように見えるピラミッドのセットアップがあります。私は基本モデルとして持っています: [アカウント、ページ、エラー、メニュー、構成]
それはかなりうまく機能しますが、私は何かに少し問題があります。現在、私はgitを使用しており、いくつかのブランチでは異なるテンプレートを使用しており、マスターブランチではコアに変更を加えています。
代わりにテーマをインストールできるようにしたいと思います。テーマは、テンプレート ファイル/静的ファイル (css/js) のコレクションになります。
これは entry_points で実現でき、構成ビューでそれらを検索して、インストールされているテーマのリストを表示できます。ここまではできる。
その場でさまざまなテーマを切り替えることができれば、非常に良いスタートになるので、新しいテーマのためだけにプロジェクトをフォークする必要はありません。
2 つ目の問題は、これらのサイトが異なるコンテンツを必要とすることです。たとえば、一方には「質問」が必要で、もう一方には「製品」が必要です。
だから私はこの考えを念頭に置いています
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
私の最大の問題は、ファイルをどのように見つけるかです。テストを行う必要がありますが、翻訳とファイルパスが心配です。
エントリポイントでどのように機能するのかは、まだ私には謎です. プラグインはバベル翻訳を使用しますか? テンプレート プラグインでバベル翻訳を使用できますか? エントリ ポイントが読み込まれると、現在のディレクトリはプロジェクトのディレクトリですか、それともエントリ ポイントのディレクトリですか? ディストリビューションで簡単にパスを取得できると思いますが、これをすべて行う正しい方法がわかりません... 鉱山で満たされたまったく新しい土地に入っているような気がします。