"Олег Бройтман. Zope - The Object Publishing Environment" - читать интересную книгу автораЕще есть класс Folder - папка. В ней хранятся другие объекты.
Пусть, скажем, Документ my.html начинается со стандартного заголовка, и заканчивается стандартным подвалом. На языке DTML это выражается как dtml-var standard_html_header> и dtml-var standard_html_footer>. Разместим эти объекты на небольшом абстрактном (то есть существующим только в наших головах) сайте. Пусть есть корень (корень в ZODB есть всегда), в нем несколько папок, скажем, Razdel1 и Razdel2, 2 Метода - header и footer, и в Razdel2 - наш my.html. / standard_html_header standard_html_footer Razdel1 Razdel2 my.html Итак, браузер обращается к http://www.server/Razdel2/my.html. ZPublsiher строит контекст [/, /Razdel2, /Razdel2/my.html] и вызывает рендеринг my.html. Тот начинает рендерится, и в самом начале встречает dtml-var standard_html_header>. Запрашивается значение заголовка. В my.html такого объекта нет, в Razdel2 нет, поиск переходит в корень - там такой есть. Он выполняется (рендерится), потом выполнение возвращается в my.html, потом footer - все. Возьмем и добавим в Razdel2 другой header: / standard_html_header standard_html_footer Razdel2 standard_html_header my.html И опять обратимся к http://www.server/Razdel2/my.html. Теперь my.html позаимствует другой header, и выглядеть будет по-другому! Добавим в корень новый раздел, с другими header/footer: / standard_html_header standard_html_footer Razdel1 Razdel2 standard_html_header my.html NewLook standard_html_header standard_html_header И обратимся к http://www.server/Razdel2/NewLook/my.html. Будет ли my.html использовать header из NewLook? Нет! my.html - DTML Document, и всегда использует статический контекст. Его acquisition path всегда [/, /Razdel2, /Razdel2/my.html]. Добавим в Razdel1 объект DTML Method index.html / standard_html_header standard_html_footer |
|
|