2016-06-30 18 views
0

Ich entwickle eine Website mit DjangoCMS, komplett mit CustomPlugins bearbeitbar.Caching django cms CustomPlugin

Ich frage mich, ob es eine Problemumgehung gibt, Plugins, die sich in bestimmten Platzhaltern befinden, nicht zu cachen.

Lassen Sie uns sagen, dass ich ein CustomPlugin haben, und ich möchte dieses Plugin außer im Cache überall werden, wenn es in einem {% static_placeholder 'special_placeholder' %}
Die cache = False Flagge in der Definition meines CustomPlugin ist nicht tut, was ich will (ich dieses Plugin wollen zwischengespeichert werden oder nicht, abhängig von dem Platzhalter, in dem es enthalten ist). Die globalen Einstellungen CMS_PLUGIN_CACHE und CMS_PLACEHOLDER_CACHE passen wegen meiner Ähnlichkeit nicht zu meinen Bedürfnissen.

Ich wäre wirklich dankbar, wenn Sie mir ein paar Tipps dazu geben könnten.

Antwort

0

können Sie diese direkt steuern in Ihrem Plugin-Klasse

class YourPlugin(CMSPluginBase): 
    model = YourCustomPluginModel 
    render_template = 'yourapp/yourtemplate.html' 

    def render(self, context, instance, placeholder): 
     # you can cache "your_data" depending on 'placeholder' here 

     context.update({ 
      'instance': instance, 
      'placeholder': placeholder, 
      'your_data': your_data 
     }) 
     return context 

plugin_pool.register_plugin (YourPlugin)

+0

Vielen Dank für Ihre Antwort. Die Methode "render" wird jedoch nicht aufgerufen, wenn das Plugin zwischengespeichert wird. Ich habe schon einige Kontextvariablen im 'render' festgelegt, aber da das Plugin zwischengespeichert wird, werden diese nicht gespeichert, abhängig davon, ob das Plugin im Cache ist oder nicht. – alamasfu10

+0

@ ÁlvaroLamasFuente ist es nicht möglich. Sie können entweder das gesamte Plugin zwischenspeichern oder das Caching entfernen und den Kontext in "render" zwischenspeichern – doniyor