2016-07-04 14 views
4

Ich arbeite an einem Plone 5.0-Setup und möchte es so ändern, dass Benutzer, die eine neue Seite erstellen möchten, einen Standardtext in ihrem TinyMCE-Editor haben.Standardinhalt zu tinyMCE in Plone 5.0 hinzufügen

Ich bin ziemlich neu in Plone und ein bisschen überwältigt von der Anzahl der verschiedenen Sprachen und wie sie miteinander verbunden sind. Anstatt einige Dateien schnell und unordentlich zu bearbeiten, möchte ich einige Vorschläge haben, wie Sie mit der richtigen und effizienten Bearbeitung des Problems beginnen können.

Alle Vorschläge, wie daran zu arbeiten, sind willkommen.

Antwort

4

Das Front-End (in diesem Fall TinyMCE) ist nicht für den Standardwert verantwortlich, es ist das Formular darunter.

Plone 5 verwendet Dexterity-Typen mit z3c-Formen.


EDIT: Dies ist, wie Sie dies die alte Schule Art und Weise zu tun - ich meine die plone Richtlinien Weg - Sry für Sie irreführend. Ich benutze immer noch plone.directives, die diese Art von Default-Adapter unterstützt.

Der Standardinhaltstyp Document von plone.app.contenttypes verwendet plone.supermodel. Dies hat ein anderes Konzept.

Wenn Sie immer noch bereit sind, Ihr eigenes Verhalten Rich-Text erstellen Sie diese Anweisungen folgen: http://docs.plone.org/external/plone.app.dexterity/docs/advanced/defaults.html

In Ihrem Fall:

def richtext_default_value(**kwargs): 
    return RichTextValue('<p>Some text</p>') 


@provider(IFormFieldProvider) 
class IRichText(model.Schema): 

    text = RichTextField(
     title=_(u'Text'), 
     description=u"", 
     required=False, 
     defaultFactory=richtext_default_value, 
    ) 
    model.primary('text') 

Sie können eine defaultFactory in das Textfeld hinzuzufügen.

Wenn Sie diese Linien auf Ihrem Ei hacken, wird es funktionieren.


Hier einige Informationen über programmatisch einen Standardwert festlegen:

from plone.directives.form import default_value 
from plone.app.contenttypes.behaviors.richtext import IRichText 
from plone.app.textfield.value import RichTextValue 

@default_value(field = IRichText['text']) 
def richtext_default_value(data): 
    return RichTextValue('<p>Some text</p>') 
:

Also in Ihrem Fall so etwas wie folgt aussehen

Sie können die default_value Dekorateur von context Parametern erweitern um genauer zu sein: @default_value(field = IRichText['text'], context=my.package.content.interfaces.IMyType)

aber da wir das Konzept der Verhaltensweisen kann es besser sein, Ihr eigenes Rich-Text-Verhalten mit einem Standardwert zu implementieren:

  1. Erstellen eines Verhaltens ->http://docs.plone.org/external/plone.app.dexterity/docs/behaviors/creating-and-registering-behaviors.html UND das plone Standard Richtext Verhalten als Vorlage für Ihre eigenen ->https://github.com/plone/plone.app.contenttypes/blob/1.2.16/plone/app/contenttypes/behaviors/richtext.py
  2. Entfernen Sie die 'plone.app.contenttypes.behaviors.richtext.IRichText` Verhalten von Ihrem Inhaltstyp (Dokument) durch ZMI (portal_types -> Dokument)
  3. Fügen Sie Ihr eigenes Richtext-Verhalten hinzu, das kann etwas wie my.package.behaviors.richtext.IRichtextWithDefaultValue sein.
+0

Danke für den nützlichen Vorschlag. Ich wollte Ihre Lösung testen, indem Sie sie in mein 'richtext.py' in meinem Verhaltensordner einfügen. Es scheint nicht zu wirken. Aber ich bin mir nicht sicher, ob ich die ganze Zeit im richtigen Ordner bin. Es ist ein '.egg'-Ordner in' Buildout-Cache'. Bin ich auf dem falschen Weg? – Waynebird

+0

@Waynebir: Könnten Sie Ihren Code online veröffentlichen (z. B. github Repo)? Außerdem schlage ich vor, dass Sie das Training bei http://training.plone.org/5 machen, damit Sie verstehen können, wo was ist. –

+1

Ich habe meine Antwort mit einigen Infos über plone.supermodel und einer anderen Möglichkeit, einen Standardwert für das Textfeld zu implementieren, aktualisiert. – Mathias