Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2009-10-03

Plone viewlets, практика

English.
Так сложилось, что сегодня я осознал, что такое есть вьювлеты плона. На весомой и грубой практике.
А было это так.

Заказчику надо многоязычный сайт. Первая моя попытка сделать это в стиле "поставьте в плон продукт и радуйтесь" не удалась. Потому я подготовил (как альтернативу) простое решение, сколько языков, столько и сайтов. На каждом сайте материалы только на нативном (для этого сайта) языке. Благо, сам интерфейс плона интернационализирован по самое небалуйся, в настройках нужный язык выбрал, и гуляй. Редакторы контент будут забивать, я тут не при чем, разве только тестовые странички для показухи сделать пришлось.

А потом я споткнулся о задачу создания кросс-ссылок между языковыми версиями. Хорошо бы, подумал я, каждая страница была со ссылками на другие языковые версии этой страницы. Одна из проблем в том, что не каждая страница имеет переводы на другие языки. Да и разделы, в общем случае, могут не отражаться один на другой. Ручная работа?
Пока решил сделать просто и изячно - через site_actions сделать ссылки на корни сайтов, с флажками стран для разных языков.
В параметрах экшена есть некий Icon, видимо картинка. Забил я пару экшенов, подготовил картинки. Проверяю - нет картинок в результате, только текст. Тегом <img ... даже и не пахнет. Что за засада? Почему атрибут Icon в экшене есть а картинки на сайте нет? Захотел я посмотреть код, который рендерит мои экшены.

И тут на арену выходят вьювлеты. Сайт-экшены рендерятся вьювлетом. Он расположен в файле
Plone\buildout-cache\eggs\plone.app.layout-1.1.8-py2.4.egg\plone\app\layout\viewlets\site_actions.pt
а если в ZMI смотреть, то в узле
Plone/portal_view_customizations
в строке
plone.site_actions (zope.publisher.interfaces.browser.IDefaultBrowserLayer)
Открывши его и щелканув на кастомайзе, можно мальца переделать вьювлет.

И я его переделал. Теперь он иконки кажет за милую душу. Если в экшене иконка не указана (как обычно) то работает как раньше, выводит текст.




Сцылки дня:

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)