legacy-knowledge-base
公開されました Jul. 2, 2025

$reserved-article-url-title.data は i18n 対応の URL を提供しません

投稿者

Jorge García Jiménez

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 が表示されます。

環境

  • Liferay DXP 7.2

解像度

  • 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

legacy-knowledge-base