Re: Frage zu BrowserViews in Plone 3
Carsten Senger <[email protected]>
| Newsgroups | gmane.comp.web.zope.german |
|---|---|
| Message-ID | <5195B018FE8FCF3209205EAF@dell> |
Hallo Nico, --On Dienstag, Juni 02, 2009 13:09:40 +0200 Nico Grubert <[email protected]> wrote: > vielen Dank für dein ausführliches und sehr erleuchtendes Feedback! > Jetzt ist mir vieles *viel* klarer. :-) > >> Der "default view" ist bei browserviews nicht das template, dessen name >> auch nicht wichtig ist. Der View ist Deine von BrowserView abgeleitete >> Klasse, die unter einem bestimmten Namen registriert ist. > >> Schreibe eine zweite Viewklasse >> >> class SimpleView(kontextnavigationView): >> """ Simple view of a kontextnavigation >> """ >> >> __call__ = ViewPageTemplateFile('simplenavigation_view.pt') >> Registriere SimpleView dann in browser/configure.zcml unter einem >> bestimmten Namen. > > Das finde ich allerdings im Vergleich zu den alten Plone2 Archetypes > basierten Contenttypen, wo man einfach der Klasse ein neues Attribut > (PageTemplate) unterschieben konnte, ganz schön viel Overhead. > Worin liegt denn der Vorteil dieser Methode? Das sind jetzt 2 verschiedene Änderungen. Ob Du weiterhin in Deiner archetypesbasierten Klasse ein Attribut für die späteren Einträge in portal_types verwenden kannst weiß ich nicht. Grundsätzlich wurden sehr viele "Konfigurationen" auf GenericSetup umgestellt (types (incl. der dazu gehörenden viewnamen), workflows, Katalog indizes, Allgemeine Plone Konfigurationen etc.). Deshalb sind einige Sachen aus der Archetypes Klasse herausgewandert. Ob Du ein Template in /skins verwendest oder einen BrowserView hat damit nichts zu tun. Der oben beschriebene Teil befasst sich nur damit, wie Du den BrowerView schreibst. Es gibt übrigens auch eine Möglichkeit, das bei einem BrowserView das Template mittels 'template="atemplate.pt"' in der zcml-Direktive anzugeben. Wahrscheinlich reichte es dazu, die definition von __call__ aus der Klasse heraus zu nehmen. Dann brauchst Du nur eine Klasse, die Du zweimal mit unterschiedlichen Templates registrierst. > Ich habe generell manchmal den Eindruck, dass durch die Zope 3 > Technologie in Plone 3 mehr Code und mehr Overhead entsteht. Aber > vielleicht habe ich die Vorteile einfach noch nicht erkannt. ;-) Der größte Vorteil ist, dass Du die Logik Deines Views aus dem Template in eine Pythonklasse verlagerst, während Du sie vorher in mehrere skripte oder Hilfsmethoden irgendwo in anderem Pythoncode ausgelagert hast, und der View wirklich nur für die Interfaces gefunden wird, für den Du ihn registriert hast. Mit Interfaces und Adaptern lassen sich noch viele andere Sachen machen, aber es ist viel komplexer als vorher und hat mehr overhead. Ein Teil des Overheads wird in Plone 4 oder 5 wegfallen. Aus einfachen zcml-Einträgen werden wahrscheinlich decorators wie bei grok. Aber irgendwo musst Du ja angeben, für welches Interface Dein View verwendet werden soll und ob bestimmte Rechte benötigt werden. > > (Im Gegensatz zu den Templates in /skins, > > bei denen man jedes Template überall aufrufen konnte.) > > Das fand ich früher auch immer unschön. > > > Nochmals vielen herzlichen Dank, Carsten. > ..Carsten _______________________________________________ zope mailing list [email protected] https://mail.dzug.org/mailman/listinfo/zope