В чем разница между IPloneSiteRoot и ISiteRoot в Plone? - PullRequest
4 голосов
/ 01 июня 2011

Я работаю в Plone 4.1, и мне просто интересно узнать разницу между Products.CMFPlone.interfaces.IPloneSiteRoot и Products.CMFCore.interfaces.ISiteRoot.Если я хочу зарегистрировать представление в стиле zope-3, для чего мне его зарегистрировать?

Ответы [ 2 ]

7 голосов
/ 01 июня 2011

Всякий раз, когда я хочу использовать корень сайта, обычно вместо этого я использую INavigationRoot из plone.app.layout.navigation.interfaces.INavigationRoot.

INavigationRoot предоставляется объектом сайта Plone, но он также будет предоставляться корневым каталогом навигации любого дочернего сайта или папками верхнего уровня на многоязычном сайте. В особенности на многоязычных сайтах пользователи никогда не будут перемещаться или видеть сам фактический корень сайта, поэтому любые функции, связанные с ним, не будут им доступны.

ISiteRoot имеет смысл только для таких вещей, как обработчики импорта экспорта или другая внутренняя логика, но не для каких-либо видимых функций конечного пользователя.

6 голосов
/ 01 июня 2011

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

Честно говоря, я обычно использую ISiteRoot только потому, что он короче, чтобы печатать. :)

...