問題
- 表示ページテンプレートを使用して、ページにウェブコンテンツデータを表示している場合、「https://localhost_or_domain:port/w/WCTitle」のようなURLが生成されます。
-
SEOに配慮したURLにするために、既存のURL(https://localhost_or_domain:port/w/WCTitle)から /w を削除する必要がある場合があります。
再現するための手順
- デザイン--> ページテンプレート--> ディスプレイページテンプレートにアクセスし、ディスプレイページテンプレートを追加します:テンプレートのサンプル名を指定し、コンテンツの種類を選択します:ウェブコンテンツ記事」を選択します。 サブタイプです:基本的なウェブコンテンツです。
- Webコンテンツ表示ウィジェットを追加し、表示ページを公開します。
- コンテンツ & データ --> ウェブコンテンツ --> にアクセスし、基本ウェブコンテンツ「WC1」を追加します。 右サイドパネルから表示ページテンプレートが表示ページとして設定されていることを確認し、コンテンツを公開する。
- 作成したWebコンテンツにアクセスし、コンテンツの3つの楕円形のドットオプションからコンテンツを表示するをクリックします。 そのフレンドリーなURLをコピーする
- 観察された行動: http://localhost:8080/w/WC1
- 期待される動作【URLの修正】: http://localhost:8080/XYZ/WC_sample_text
Environment
- Liferay DXP 7.4 U31
解決策
- Liferayのソースコードに記述された定数値である"/w "は、ポータルの意図した動作となるため、"/w "を含むURLを変更することはOOTB構成では不可能です。
-
表示ページテンプレートで表示されるWebコンテンツのURL区切りに定義される定数値として、"/w "を使用します。 これは、"FriendlyURLResolverConstants" クラスで、以下のコード行で定義されています。 修正する場合は、コードを適宜カスタマイズすることで、ニーズに合わせて上書きすることができます。
また、URLの中で、定数値"/w "の後に、 $WC_Titleが付加されています。 これは、特定のウェブコンテンツのためにOOTB機能を使用してUI設定から変更することができ、一意性を確保することができます。 詳しくはこちらをご覧ください:https://learn.liferay.com/dxp/latest/en/site-building/displaying-content/using-display-page-templates/publishing-content-with-display-pages.htmlpackage com.liferay.portal.kernel.portlet.constants;
import com.liferay.portal.kernel.util.Portal;
public class FriendlyURLResolverConstants {
............
public static final String URL_SEPARATOR_JOURNAL_ARTICLE = "/w/";
.............
public static final String URL_SEPARATOR_Y_PORTAL_RESERVED =
URL_SEPARATOR_X_PORTAL_RESERVED.substring(1);
}
- 既存のウェブコンテンツを編集する、フレンドリーなURLのセクションは、それを変更することができます設定の基本的な情報の下に用意されています。