misha111
Июнь 25, 2010 10:32:05
Здравствуйте.
Возможно кто либо сталкивался со следующей сдожностью, или сможет что нибудь подсказать:
есть большой проект в zope 3 (спасибо, больше не буду.), в котором используются несколько публикуемых объектов.
пользователи делают запросы к обектам вида, вида xxx/y1/page1.html, xxx/y2/page2.html, xxx/y3/page3.html,
где y1, y2, y3 - несколько публикуемых объектов.
Можно ли сделать так, чтоб ничего (или не много) не меняя в исходном коде объектов, сделать запросы вида
xxx/y/page1.html, xxx/y/page2.html, xxx/y/page3.html
то есть чтоб было что -то вроде аналога индексного файла с перенаправлением в xxx/y1/page1.html, xxx/y2/page2.html, xxx/y3/page3.html
где уже эти запросы будут обслуживаться разными публикуемыми объектами как и ранее.
Вот, надеюсь, понятно изложил свои мысли.
regall
Июнь 25, 2010 11:05:32
Можно переписать траверсинг для контейнера xxx.
Почитать можете здесь:
http://mg.pov.lt/blog/zope3-custom-traversal.htmlP.S.
И не пишите “зоуп3”, как то некрасиво =).
misha111
Июль 2, 2010 16:18:14
спасибо regall, хорошя ссылка. Для полного комплекта ещё не помешала бы ссылка, на пояснение, как сделать
модификации url в отрендеренной странице.
вроде б это надо делать переопределением IBrowserRequestFactory, а именно Request и Response, и там уже модифицировать url в ссылках и action в формах, но я не уверен.
regall
Июль 2, 2010 18:50:07
misha111
как сделать
модификации url в отрендеренной странице.
Не совсем понял, что вы имеете в виду. Я так понимаю, вы хотите чтобы мультиадаптер @@absolute_url в TAL возвращал правильную ссылку на объект, для которого переопределен механизм траверсинга. Для этого просто нужно написать свой адаптер к
zope.traversing.browser.interfaces.IAbsoluteURL
misha111
Июль 5, 2010 14:04:16
у меня на генерируемой странице ссылки вида /xxx/yyy_aa/zzzz
мне надо просто исправлять “_” на “/” чтоб было везде /xxx/yyy/aa/zzzz
механизи траверсинга я решил не менять, там по другому сделал.
осталось только менять ссылки в контенте страници и на формах, при определённых условиях.
Может есть где-нибудь ещё описание, как добраться до контента сгенерённой страници?
regall
Июль 5, 2010 16:14:58
misha111
механизи траверсинга я решил не менять, там по другому сделал.
А если не секрет, то как вы сделали?
misha111
Июль 5, 2010 16:42:56
не секрет.
там решили просто поставить прокси через апач с mod_rewrite
вот и появилась проблема, когда надо вправлять все url на сгенерённой странице в виде, который я указывал.
regall
Июль 5, 2010 17:19:24
misha111
там решили просто поставить прокси через апач с mod_rewrite
вот и появилась проблема, когда надо вправлять все url на сгенерённой странице в виде, который я указывал.
Так почему из-за прокси URL'ы поменялись? Может плохо настроили? Все должно работать одинаково, как при прокси так и с runzope. Прописывать URL'ы в шаблонах вручную - это очень плохой подход, используйте absoluteURL.
P.S.
Делаю перевод доки по BlueBream (а-ля Zope 3.5, просто название сменили), посмотрите раздел FAQ, много вопросов сразу для вас прояснится:
http://wiki.python.su/%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D0%B8/Bluebream
misha111
Июль 5, 2010 17:33:24
нет нет, там совсем в другом дело, там старая проблема из-за разнобоя с классами и basic авторизацией
из-за этого и меняем, там просто классы так называются
xxx_yy
xxx_zz
и по постановке от этого нужно уйти, чтоб в url было
xxx/zz
misha111
Июль 5, 2010 18:16:33
пока задавал вопрос - сам всё решил
помогло чтение тут
http://svn.zope.org/hurry.zoperesource/trunk/src/hurry/zoperesource/zopesupport.py?rev=91843&view=markupи разбор текста zc.resourcelibrary-1.3.1
что по суте похоже, но, почему-то, разбирая тексты отдельно результата не было :-)