Отключить границы в отображении веб-контента с помощью шаблона

Я создаю набор пользовательских структур (и соответствующих шаблонов) для отображения веб-контента на сайте Liferay.

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

Я нашел в Интернете документацию и примеры, показывающие, как отключить границы для портлетов, встроенных в тему, но мне не удалось применить эти методы в шаблоне WCD.

Вот код, который я видел встроенным в тему:

#set ($VOID = $velocityPortletPreferences.setValue("portlet-setup-show-borders", "false"))
#set ($VOID = $theme.runtime("customportletname_WAR_pluginname", "", $velocityPortletPreferences.toString()))
$velocityPortletPreferences.reset()

Вот как я применил его к своему шаблону:

#set ($VOID = $velocityPortletPreferences.setValue("portlet-setup-show-borders", "false"))
<div class="custom-wcd wcdnormal">
    <h2>$title.getData()</h2>
    $content.getData()
</div>
$velocityPortletPreferences.reset()

Я не удивлен, что это не сработало — нет ничего аналогичного вызову $theme.runtime, который применяет настройки к портлету, но я также не знаю, подходит ли $theme.runtime на этом уровне, и если да, то какое значение указать в качестве первого аргумента. Я подозреваю, что последний вариант является наиболее вероятной альтернативой, но я не знаю, как идентифицировать портлет WCD для $theme.runtime, а также не знаю, как отследить эту информацию (я ни в коей мере не являюсь разработчиком Java) .

И просто поясню: не приемлемо отключить границы для всех портлетов по умолчанию, и я не могу модифицировать контроллер Java, который использует компоненты журнальных статей во время рендеринга.

Любые советы приветствуются.


person Tom    schedule 20.08.2012    source источник


Ответы (2)


Просто и прямо:

$velocityPortletPreferences.setValue("portletSetupShowBorders", "false") 
$velocityPortletPreferences.setValue("languageIds", "pt_BR,en_US")
$velocityPortletPreferences.setValue("displayStyle", "1")
$theme.runtime("82", "", $velocityPortletPreferences.toString())
$velocityPortletPreferences.reset()

Этот пример предназначен для встраивания языкового портлета (идентификатор портлета = 82) непосредственно в один из файлов темы .vm, в моем случае этот код находится в файле navigation.vm.

person Feco Linhares    schedule 19.12.2012
comment
Наконец-то появилась возможность протестировать это. Оно работает! Большое спасибо! - person Tom; 25.06.2013

Названия свойств/предпочтений Liferay имеют тенденцию иногда меняться. На этой неделе я создал хук, чтобы создать сайт, заполнить его страницами, содержащими портлеты, а также предоставить CMS стандартный набор структур, шаблонов и статей. Мне тоже пришлось отключить границы для моих портлетов, и для этого мне нужно было установить для следующего имени предпочтения значение false: portletSetupShowBorders

Я java-код сделал это следующим образом:

PortletPreferences prefs = PortletPreferencesFactoryUtil.getLayoutPortletSetup(page, portletInstanceId);
prefs.setValue("groupId", String.valueOf(page.getGroupId()));
prefs.setValue("articleId", article.name());
prefs.setValue("portletSetupShowBorders", "false");
prefs.store();

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

#set ($portletPreferencesService = $serviceLocator.findService('com.liferay.portal.service.PortletPreferencesLocalService'))
#set ($companyId = $getterUtil.getLong($companyId))
#set ($ownerId = 0) ## PortletKeys.PREFS_OWNER_ID_DEFAULT
#set ($ownerType = 3) ## PortletKeys.PREFS_OWNER_TYPE_LAYOUT
#set ($plid = $getterUtil.getLong($request.theme-display.plid))
#set ($portletId = $request.theme-display.portlet-display.id)
#set ($portletPreferences = $portletPreferencesService.getPreferences($companyId, $ownerId, $ownerType, $plid, $portletId))
#set ($VOID = $portletPreferences.setValue('portlet-setup-show-borders', 'false'))
#set ($VOID = $portletPreferences.store())

Просто помните, что вам также нужно добавить следующую строку в ваш portal-ext.properties:

journal.template.velocity.restricted.variables=
person fimez    schedule 21.08.2012
comment
Спасибо за ваш вдумчивый ответ, но это решение не удовлетворяет моим критериям. Я пытаюсь выяснить, есть ли способ сделать это с помощью кода виртуальной машины, доступного внутри пользовательского шаблона, а не с помощью java (будь то в контроллере или пользовательском крючке). Все еще голосую, на случай, если кто-то еще сочтет это полезным. - person Tom; 23.08.2012
comment
Кажется, я не полностью понял ваш вопрос, но с вашим дополнительным комментарием я снова рассмотрел проблему и смог создать некоторый код скорости, который удаляет границы из портлета, отображающего статью на основе шаблона с этим кодом. Я надеюсь, что это полностью отвечает на ваш вопрос. - person fimez; 24.08.2012
comment
Вот это да. Очень обстоятельный ответ. Я еще не знаю, есть ли у меня возможность настроить файл свойств, поэтому, возможно, я не смогу это сделать, но, похоже, это работает на моей локальной рабочей станции. Очень красиво сделано. - person Tom; 25.08.2012