2016-07-04 2 views
4

Я работаю над настройкой Plone 5.0, и я хочу изменить его таким образом, чтобы пользователи, желающие создавать новую страницу, имели текст по умолчанию в своем редакторе TinyMCE.Добавить содержимое по умолчанию в tinyMCE в Plone 5.0

Я совершенно новый для Plone и немного перегружен количеством разных языков и тем, как они соединяются друг с другом. Поэтому вместо того, чтобы работать с некоторыми файлами быстро и грязно, я хотел бы получить несколько советов, как правильно и эффективно работать над проблемой.

Любые предложения, как работать над этим, приветствуются.

ответ

4

Внешний интерфейс (в данном случае TinyMCE) не несет ответственности за значение по умолчанию, это форма внизу.

Plone 5 использует типы ловкости с формами z3c.


EDIT: Это как ваш делать это старый школьный путь - я имею в виду директивы Plone способ - SRY для вас в заблуждение. Я все еще использую plone.directives, который поддерживает этот адаптер по умолчанию.

Тип контента по умолчанию Document из plone.app.contenttypes использует plone.supermodel. Это имеет другую концепцию.

Если вы по-прежнему готовы создать свое собственное Richtext поведения, вы можете следовать этим инструкциям: http://docs.plone.org/external/plone.app.dexterity/docs/advanced/defaults.html

В вашем случае:

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') 

Вы можете добавить defaultFactory в текстовом поле.

Если вы взломаете эти линии на яйце, это сработает.


Вот некоторые сведения о настройке значения по умолчанию программно:

Так что в вашем случае это может выглядеть примерно так:

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>') 

Вы можете продлить DEFAULT_VALUE декоратор по context параметру, чтобы быть более точными: @default_value(field = IRichText['text'], context=my.package.content.interfaces.IMyType)

, но так как у нас есть понятие поведения он может быть лучше реализовать свое собственное Richtext поведения со значением по умолчанию:

  1. Создание поведения ->http://docs.plone.org/external/plone.app.dexterity/docs/behaviors/creating-and-registering-behaviors.html И поведение богатого текста по умолчанию в качестве шаблона для вашего собственного ->https://github.com/plone/plone.app.contenttypes/blob/1.2.16/plone/app/contenttypes/behaviors/richtext.py
  2. Удалите'plone.app.contenttypes.behaviors.richtext.IRichText` Поведение от вашего типа контента (Документ) через ZMI (portal_types -> Document)
  3. Добавьте свое собственное поведение Richtext, это может быть что-то вроде my.package.behaviors.richtext.IRichtextWithDefaultValue.
+0

Благодарим за полезное предложение. Я хотел протестировать ваше решение, вставив его в мой «richtext.py» в моей папке с поведением. Это, похоже, не вступает в силу. Но я не уверен, что я все время в правильной папке. Это '.egg' папка в' buildout-cache'. Неужели я ошибаюсь? – Waynebird

+0

@Waynebir: можете ли вы опубликовать свой код в Интернете (например, github repo)? Кроме того, я предлагаю вам пройти обучение на http://training.plone.org/5, чтобы вы могли понять, где что. –

+1

Я обновил свой ответ с некоторой информацией о plone.supermodel и другим способом реализации значения по умолчанию для текстового поля. – Mathias

Смежные вопросы