$reserved-article-url-title.data は i18n 対応の URL を提供しません
knowledge-article-header-disclaimer-how-to
knowledge-article-header-disclaimer
legacy-article
learn-legacy-article-disclaimer-text
問題
- 言語ごとに異なるフレンドリー URL を持つコンテンツがある場合、速度テンプレートを介してそれらのフレンドリー URL を取得しようとすると、
$reserved-article-url-title.data
国際化された URL を提供しません。
- たとえば、スペイン語 (ES) と英語 (EN) の以下の URL を持つ Web コンテンツがあるとします。
- わかりやすい URL ES: http://localhost:8080/es/web/test-page/-/testcontentes
- フレンドリ URL EN: http://localhost:8080/en/web/test-page/-/testcontenten
- URL を取得するために
$reserved-article-url-title.data
で Web コンテンツ テンプレートを作成すると、ロケールごとに異なる URL は表示されません。デフォルト ロケールの URL が表示されます。
- Web コンテンツ テンプレートでロケールごとに異なる URL を表示するには、 FriendlyUrlEntryLocalizationに基づいてフレンドリー URL を取得する必要があります。
- 以下は、速度テンプレートに使用できる例です。
#set ($longGroupId = $getterUtil.getLong($groupId))
#set ($journalArticleResourceService = $serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService"))
#set($articleResource = $journalArticleResourceService.fetchArticleResource($longGroupId,$reserved-article-id.data))
#set ($articleResourcePK = $articleResource.getResourcePrimKey())
#set ($classNameLocalService = $serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService"))
#set ($friendlyUrlEntryService = $serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService"))
#set ($classnameId = $classNameLocalService.getClassNameId("com.liferay.journal.model.JournalArticle"))
#set($entries = $friendlyUrlEntryService.getFriendlyURLEntries($longGroupId,$getterUtil.getLong($classnameId),$getterUtil.getLong($articleResourcePK)))
#set($url-title = "")
#foreach( $entry in $entries )
#set($entryLocalization = $friendlyUrlEntryService.getFriendlyURLEntryLocalization($entry.friendlyURLEntryId,$locale.toString()))
#set($url-title = $entryLocalization.urlTitle)
#end
$url-title
did-this-article-resolve-your-issue