Лоскутное одеяло, или раскрась свой портал в различные цвета

как сделать для каждой страницы портала отдельное цветовое решение. Авторы Д. Баранов, Е. Рябошлык

Если вы хотите, чтобы различные папки вашего сайта представали в различных цветах, мы объясним вам как это сделать на примере изменения свойства globalBackgroundColor. Допустим, что вы хотите сделать цвет globalBackgroundColor папки под названием /Trava — зеленым, а папки под названием /Nebo — голубым.

Последовательность действий следующая:1. Откройте папку plone_styles.2. Выберите папку base_properties. Кастомизируйте ее, нажав на кнопку Custom.Эти действия имею смысл если папка base_properties еще не кастомизирована. В противном случае идите сразу в папку /portal_skins/custom/base_properties3. На вкладке Properties папки base_properties найдите строку globalBackgroundColor, отметьте ее в галочкой, внизу формы нажмите Удалить.4. Перейдите на вкладку Contecst.5. Из списка Select type to add… выберите Script(Python).6. Дайте ему id: globalBackgroundColor. Будьте внимательны, id скрипта должен повторять название удаленного элемента, поэтому необходимо соблюдать регистр букв! Жмите Add and edit.7. Внутренность скрипта следующая:

pa=str(context.REQUEST.URL)#пользователь хочет получить эту страницу if pa.find('/Trava')>0:#если она в папке, id которой Trava - цвет зеленый   return 'green'elif pa.find('/Nebo')>0:#в папке, id которой Nebo - голубой   return 'blue' else:#в других случаях - белый 
return 'white'

Если вы хотите добавить другие параметры для других папок, например, в папке Solnce сделать globalBackgroundColor -желтый (yellow), а в папке Ground — коричневый (braun). Добавлейте строки сколько пожелаете:

pa=str(context.REQUEST.URL)#пользователь хочет получить эту страницу if pa.find('/Trava')>0:#если она в папке, id которой Trava - цвет зеленый   return 'green'elif pa.find('/Nebo')>0:#в папке, id которой Nebo - голубой   return 'blue' elif pa.find('/Solnce')>0:#в папке, id которой Solnce - желтый   return 'yellow' elif pa.find('/Ground')>0:#в папке, id которой Ground - коричневый   return 'braun' else:#в других случаях - белый 
return 'white'

8. Сохраняйте скрипт. Любуйтесь результатом.
В случае, если никаких изменений не произошло или возвращается белый цвет, идите в portal_css и для base.css, public.css, ploneCustome.css и других, где используется наша переменная (некоторые установки зависят от вашей конфигурации Zope), выставляем Render type — inline.

NB. Трюк с portal_css — только для счастливых обладателей 2.1 и выше, ниже придется мудрить в css_slot’e.

Любуйтесь результатом!