2012-02-20 2 views
3

Я ищу способ использовать несколько тем в одном приложении XPages, каждая из которых активна в другом разделе приложения. Например, для поддержки одного приложения .nsf как с открытым сайтом (пользовательская тема), так и с CMS с темой OneUI.Как использовать несколько тем одновременно

Вы можете установить, какая тема используется во всем приложении на вкладке Свойства XPage в Свойствах приложения. Кроме того, можно изменить тему для сеанса пользователя с этим кодом:

context.setSessionProperty("xsp.theme", <theme_id>) 

Но оба варианты установить тему для всех страниц в текущем .NSF, и я ищу способ, чтобы указать тему X для одной части приложения и темы Y для второй части.

Возможно ли это?

ответ

3

На любой странице, следует использовать альтернативную тему, используйте следующий синтаксис, чтобы применить свойство непосредственно к корню зрения:

<xp:view> 
<xp:this.properties> 
<xp:parameter name="xsp.theme" value="alternateThemeName" /> 
</xp:this.properties> 
</xp:view> 
+0

Вау, это здорово. Благодаря! –

+0

К сожалению, я приветствовал рано, я не могу заставить его работать. Это первые 9 строк XPage: <хр: вид \t XMLNS: хр = "http://www.ibm.com/xsp/core" \t XMLNS: хс = "http://www.ibm.com/xsp/custom"> \t <хр: this.properties> \t \t <хр: параметр \t \t \t имя = "xsp.theme" \t \t \t значение = "oneuiv2.1" /> \t Я не вижу разницы на странице. Что может быть, что я пропал? –

+0

Похоже, что это одно из свойств, которое невозможно установить непосредственно против корня представления. Я изучаю это и дам вам знать, что я нахожу. –

0

Я не знаю, что много о темах, но не могу вам проверить в вашей теме (с некоторыми ssjs), в которых viewroot (по id?) вы и в соответствии с этим включаете правильные стили, css и другие ресурсы?

1

Просто поговорил с коллегой Тони Макгукином.

Вы можете изменить тему на странице. Под всеми свойствами XPage выберите свойства данных и создайте новое свойство с именем «xsp.theme» и значением «yourThemeName».

+0

Привет, Никлас, спасибо за ответ. Если я прав, это то же самое, что и ответ Тима Tripcony, и я не мог заставить это работать. Я также пробовал этот подход (через графический интерфейс), но результатов не получал. –

+0

Я тоже не вижу этого рабочего 8.5.3 localhost – MarkyRoden

1

Хотя мне нравится идея создания тематических страниц на основе конкретного варианта использования, который вы описываете, «правильный» способ сделать это состоит в том, чтобы иметь два отдельных приложения XPage, привязанных к одному и тому же хранилищу данных , Это не только упрощает определение каждой темы для каждой из них, но и упрощает ACL (при условии, что у вас будут разные люди, обращающиеся к общедоступному сайту и CMS), упрощает настройку производительности за счет наличия разных параметров для каждого приложения , и даже без особых настроек для приложения, должно слегка повысить производительность только из-за поведения загрузчика класса Java: каждый NSF действует как отдельный ClassLoader, и каждый XPage или Custom Control в вашем NSF приводит к хранению отдельного файла класса. Итак, теоретически, если функции вашего общедоступного сайта требуют, чтобы вы создали 5 XPages, а функции CMS охватывали 10 XPages, просто разделение их на два отдельных приложения облегчает загрузчику класса загрузку класса для любой страницы, которую пользователь загружает , потому что он не должен игнорировать классы, которые ему никогда не понадобятся для этого пользователя, просто чтобы найти тот класс, который ему нужен в то время. Поэтому я все еще испытываю соблазн найти способ, чтобы темы, зависящие от страницы, работали только для «крутого» фактора, но для этой конкретной цели я бы рекомендовал использовать два разных приложения целиком, с другой темой, назначенной каждому ,

+0

Я понимаю вашу точку зрения и ценю это. Всегда есть выбор держать все в одной БД или разделить вещи. В этом случае выбор сохранить все в одной БД был простым. Простота обслуживания и настройки важнее конечной производительности или «правильной работы» (TM). В CMS всего 3 XPage, и это сайт action, который будет работать всего 3 месяца. После этого он будет архивирован и будет запущена новая копия. Так что это огромная возможность иметь его только на одной БД. –

+0

В этом случае я согласен: постепенное повышение производительности от сегрегации пользовательского интерфейса, вероятно, даже не будет заметно, если для функций CMS требуется только 3 элемента XPage. Я буду продолжать играть со страничной идеей темы, поскольку позволяет время только потому, что я согласен с тем, что было бы здорово работать. –

3

Я пробовал все вышеперечисленное, но никто из них не работал для меня. Но я нашел решение:

Вставьте это в beforeRenderResponse событие отображения вида:

context.setSessionProperty("xsp.theme", "yourAlternateThemeName") 

Существует одна проблема: как только вы использовали этот путь, вы должны использовать его всегда и на каждой странице, как это устанавливает свойство сеанса, которое сохраняется до тех пор, пока вы вошли в систему.

Смежные вопросы