Пользовательское поле Liferay из веб-контента в шаблоне скорости

Мне нужно установить некоторый пользовательский тег в portal_normal.vm, который определяется в каждом веб-контенте.

Мое дело:

  1. Перейдите в Панель управления --> пользовательское поле --> веб-контент.
  2. Создайте новое настраиваемое поле с именем «custom_metas».
  3. Поместите этот код в portal_normal.vm <meta property="og:title" content="$themeDisplay.getScopeGroup().getExpandoBridge().getAttribute('custom_metas')" />

Этот код работает, только если пользовательское поле создано на сайте (не в веб-контенте). Когда я создаю веб-контент, он отображается как обычный текст.

В моем портале-ext.properties введите:

journal.template.velocity.restricted.variables=

Ничего не меняется.

Наконец, я попробовал это решение, данное на форумах liferay, но оно не работает. Примечание: $reserved-article-id.data ничего не печатает.

#set ($journalArticleLocalService = $serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleLocalService"))
#set ($ja = $journalArticleLocalService.getArticle($getterUtil.getLong($groupId),$getterUtil.getString($reserved-article-id.data)))
#set ($resourceprimKey = $ja.getResourcePrimKey())

#set ($assetEntryLocalService = $serviceLocator.findService("com.liferay.portlet.asset.service.AssetEntryLocalService"))
#set ($assetEntry = $assetEntryLocalService.getEntry("com.liferay.portlet.journal.model.JournalArticle", $resourceprimKey))

#set($JournalArticleResourceLocalService = $serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleResourceLocalService"))

#set ($journalArticleResource = $JournalArticleResourceLocalService.getArticleResource($assetEntry.getClassPK()))

#set($JournalArticleLocalService = $serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleLocalService"))

#set ($journalArticle = $JournalArticleLocalService.getArticle($getterUtil.getLong($groupId), "$journalArticleResource.getArticleId()"))

#set ($custom = $journalArticle.getExpandoBridge().getAttribute("custom_metas"))

$custom отображать как обычный текст


person Albertogf    schedule 09.09.2015    source источник
comment
Вы путаете шаблоны тем с шаблонами веб-контента. В шаблоне темы у вас нет ни одной прикрепленной статьи веб-контента, и у вас нет доступа к какой-либо конкретной переменной веб-контента, такой как $reserved-article-id. Вы хотите показать теги всех статей веб-контента или одной конкретной статьи веб-контента?   -  person Tobias Liefke    schedule 09.09.2015
comment
Мне нужно показать пользовательский тег загруженной статьи. Моя проблема в том, что веб-контент загружается в тело, и мне нужно добавить тег заголовка. Я читал на форумах liferay о настраиваемых полях, но можно ли загружать веб-контент в голову   -  person Albertogf    schedule 09.09.2015


Ответы (1)


Вы путаете шаблоны тем с шаблонами веб-контента. В шаблоне темы у вас нет ни одной прикрепленной статьи веб-контента, и у вас нет доступа к какой-либо конкретной переменной веб-контента, такой как $reserved-article-id.

И вы путаете страницы и портлеты. Ваша статья с веб-материалами прикреплена к портлету на вашей странице, а поскольку на странице может быть несколько портлетов со статьей с веб-материалами, у вас не будет загружаемой статьи.

Но если вы прикрепите к своему веб-контенту тег (не настраиваемое поле, а просто тег в разделе Категоризация), этот тег будет автоматически добавлен в <meta name="keywords"> в заголовке.

Если теги нужны где-то еще - они хранятся в атрибуте запроса WebKeys.PAGE_KEYWORDS (= "LIFERAY_SHARED_PAGE_KEYWORDS").

person Tobias Liefke    schedule 09.09.2015