Лоскутное одеяло, или раскрась свой портал в различные цвета
как сделать для каждой страницы портала отдельное цветовое решение. Авторы Д. Баранов, Е. Рябошлык
Если вы хотите, чтобы различные папки вашего сайта представали в различных цветах, мы объясним вам как это сделать на примере изменения свойства 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.
Любуйтесь результатом!