В чем разница между IPloneSiteRoot и ISiteRoot в Plone?
Я работаю в Plone 4.1, и мне просто интересно узнать разницу между Products.CMFPlone.interfaces.IPloneSiteRoot и Products.CMFCore.interfaces.ISiteRoot. Если я хочу зарегистрировать представление в стиле zope-3, к которому я должен его зарегистрировать?
2 ответа
IPloneSiteRoot - это особый вид ISiteRoot. IPloneSiteRoot предоставляется корнем сайта Plone, тогда как ISiteRoot предоставляется любым порталом CMF. Если ваш продукт предназначен только для работы в Plone, то не имеет значения, какой интерфейс вы используете. Если вы хотите, чтобы его можно было использовать с другими приложениями на основе CMF, используйте ISiteRoot.
Честно говоря, я обычно использую ISiteRoot только потому, что он короче, чтобы печатать.:)
Всякий раз, когда я хочу использовать корень сайта, я обычно использую вместо него INavigationRoot из plone.app.layout.navigation.interfaces.INavigationRoot.
INavigationRoot предоставляется объектом сайта Plone, но он также будет предоставляться корневым каталогом навигации любого дочернего сайта или папок верхнего уровня на многоязычном сайте. Особенно на многоязычных сайтах пользователи никогда не будут перемещаться или видеть сам фактический корень сайта, поэтому любая функциональность, прикрепленная к нему, не будет им доступна.
ISiteRoot имеет смысл только для таких вещей, как обработчики импорта экспорта или другая внутренняя логика, но не для каких-либо видимых функций конечного пользователя.