Hallo,
ich plage mich jetzt schon seit einigen Stunden mit Plone und Templates herum. Ich weiß, wie ich Templates erstellen kann (über Add Page Template) und diese Testen kann (über Test). Mein Problem ist jetzt, wie kann man die Templates in Plone nutzen? D.h. ich erstelle z.B. eine Seite index_html und diese soll unter anderem auch ein Template nutzen können. Ich konnte dazu auch noch nichts im Netz finden.
Nutzen von Templates in Plone
-
-
Hallo,
es scheint so, als wenn du auf dem richtigen Weg bist, jedoch 1-2 Sachen noch nicht realisiert hast. Dazu Folgendes:
Wenn du ein PT erstellst und testest, so wirst du von der Plone-Ansicht vermutlich nichts mehr sehen, weil du das PT pure erstellt hast. Um deine index_html in der Ploneseite zu sehen ist zu beachten, dass der Inhalt nicht direnkt, sondern in einem METAL-Tag steht.
z.B.HTML
Alles anzeigen<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US" i18n:domain="plone" metal:use-macro="here/main_template/macros/master"> <body> <div metal:fill-slot="main"> </div> </body> </html>
Dadurch wird alles was dein PT-Code anstellt in den Slot "main" gepackt. Dieser Slot ist quasi der Contentbereich der Ploneseite. Wenn du es so testest, wirdst du sehen, was ich meine.
good Luck
-
Danke, es funktioniert jetzt endlich. Kannst du mir vielleicht auch sagen, wie ich folgendes Problem lösen kann:
Ich habe eine Seite und ein Teil dieser Seite soll durch ein Template erzeugt werden, dass sich ein paar Daten aus der DB holt und diese zusammenbastelt. Der andere Teil der Seite soll direkt über das Plone editierbar sein.
D.h. wenn ich mir die Seite mit Plone anschaue, dann soll er alles komplett anzeigen, aber wenn man die Seite Bearbeitet, dann soll man nur den Teil bearbeiten können, der nicht durch das Template erstellt worden ist.
Momentan ist es so, dass man mit Bearbeiten gar nichts editieren kann. Das Eingabefeld dafür fehlt komplett. -
zum Ausblenden:
Es kommt drauf an, welche Inhalte nicht angezeigt werden sollen und wie diese in der Site "liegen". Dann könnte man bsp.weise per CSS hingehen und diese einfach ausblenden. Eine andere Möglichkeit ist es, zentral das Adminrecht des aktuellen Users abzufragen. Danach kann man die Teile die nicht im Backend angezeigt werden sollen per tal:condition deaktivieren.Nehmen wir an du willst den Footer nicht in der Adminansicht angezeigt bekommen. Das geht dann in etwa so:
HTML
Alles anzeigen... <html ... tal:define="isManager python: conatiner.checkManager();"> ... ... <div id="footer" tal:condition="not: isManager"> </div> </div> </body> </html>
Das Script checkManager ist ein Script(Python) welches prüft, ob der User das Managerrecht inne hat. Sie liefert True oder False zurück.
zum Editier-Modus:
Jooh, also mit diesem Problem wollte ich mich schon des öfteren beschäftigen, jedoch fehlte mir bisher die Zeit dafür.Ich denke dass sich nur die Inhalte per Kupu ändern lassen, die von der Klasse ATContent abgeleitet sind. Das heißt dein Inhaltstyp müsste ein eigener Archetypes-CT sein, der dann über die Seite angezeigt wird und per Adminansicht editiert werden kann.
Mit der Thematik Archetypes für Plone lohnt es sich auf jeden Fall zu beschäftigen, da viele Sachen sich fast schon spielend dadurch erledigen lassen.
Leider gehört der Einstieg in die Archetypes nicht dazu. Dies bedeutet erhöhten Lernaufwand, der sich aber definitiv lohnt.Versuch also dich damit anzufreunden und beurteile danach, welcher Weg für dein Problem am ehesten geeignet scheint.
Torty
-
Kann mir jemand sagen warum das bei mir nicht funktioniert?
ich habe mir diesen tal-tagtal:define="isManager python: conatiner.checkManager()
genommen um damit die manager rechte abzufragen um einen link in einem template auszublenden, aber er gibt mir immer den Fehler, dass er container nicht kenne.
Warum?
bei euch scheints doch auch zu funktionieren. -
Du hast was übersehen:
ZitatDas Script checkManager ist ein Script(Python) welches prüft, ob der User das Managerrecht inne hat. Sie liefert True oder False zurück.
Und ich habs leider nicht mit angehangen. Dies hol ich hiermit nach.
Pack das Script also in dein portal_skins/custom als Script(Python)Python
Alles anzeigen## Script (Python) "checkManager_py" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters= ##title= # # Version: 0.1 # Author : --- # # function-parameters # # return values # boolean - True if user has the Manager-role # ########################################################### # Documentation # ------------- # This script check if the user has the Manager-role. # ########################################################### #------ # init #------ from AccessControl import getSecurityManager user = getSecurityManager().getUser(); userRoles = user.getRoles() #-------- # return #-------- return 'Manager' in userRoles
Torty