Using an Editor Config Contributor Client Extension
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

CKEditor 4とAlloy Editorの設定

Liferay DXP 2026.Q1+

サンプルワークスペースの liferay-sample-editor-config-contributor-1 クライアント拡張機能は、Liferay の従来のテキストエディタを設定します。このMODは、Alloy Editorのフローティングツールバーに「ビデオを挿入」ボタンを、CKEditor 4のツールバーに「AIコンテンツを作成」ボタンを追加します。お使いの環境でこれらのエディタがまだ動作している場合は、サンプルをテンプレートとして使用して、独自のツールバーを変更できます。このクライアント拡張機能の種類について詳しくは、 エディター設定コントリビュータークライアント拡張機能の使用 を参照してください。

重要

Alloy EditorとCKEditor 4はLiferayの従来型テキストエディタであり、Alloy EditorはCKEditor 4をベースに構築されています。これらのエディタは Liferay DXP 2026.Q2 で非推奨となり、CKEditor 5 にアップグレードする必要があります。

LPD-11235機能フラグの動作は、バージョンによって異なります。 Liferay DXP 2026.Q1 では、 リリース機能フラグ は Enhanced Rich Text Editor という名前で、これを有効にすると CKEditor 5 に切り替わります。 Liferay DXP 2026.Q2+ では、CKEditor 5 がデフォルトであり、LPD-11235 は 非推奨機能フラグなので、これを有効にすると、アップグレードを計画している間は CKEditor 4 に戻ります。

詳細については、 CKEditor 5 へのアップグレード および 2026.Q2 メンテナンス モードと非推奨 を参照してください。

前提条件

Editor Config Contributorクライアント拡張機能を使用するには、以下の手順に従ってください。

  1. サポートされているバージョンの Java をインストールしてください。

    注記

    サポートされているJDK、データベース、および環境については、互換性マトリックスをご確認ください。推奨される JVM 設定については、 JVM 構成 を参照してください。

  2. サンプルワークスペースをダウンロードして解凍してください。

    curl -o com.liferay.sample.workspace-latest.zip https://repository.liferay.com/nexus/service/local/artifact/maven/content\?r\=liferay-public-releases\&g\=com.liferay.workspace\&a\=com.liferay.sample.workspace\&\v\=LATEST\&p\=zip
    
    unzip com.liferay.sample.workspace-latest.zip
    

これで、サンプルのエディター設定コントリビュータークライアント拡張機能を調べたり、変更したりできるようになりました。

クライアント拡張定義を確認する

エディター設定コントリビューターの例は、サンプルワークスペースの client-extensions/liferay-sample-editor-config-contributor-1/ フォルダーにあります。その client-extension.yaml ファイルには、以下の詳細が定義されています。

assemble:
    -   from: build
        into: static
liferay-sample-editor-config-contributor-1:
    editorConfigKeys:
        -   description
        -   fragmentEntryLinkRichTextEditor
        -   sampleAlloyEditor
        -   sampleClassicEditor
        -   sampleLegacyEditor
        -   sampleReactClassicEditor
    name: Liferay Sample Editor Config Contributor 1
    type: editorConfigContributor
    url: index.js

クライアント拡張機能は、その ID (liferay-sample-editor-config-contributor-1)、そのタイプ (editorConfigContributor)、およびそれが適用するエディター (editorConfigKeys ) を宣言します。その url プロパティは、ビルドによって生成されるバンドルされた JavaScript ファイルである index.jsを指しています。 assemble ブロックは、 build/ フォルダ全体を、 index.js ファイルを含む静的リソースとしてクライアント拡張機能の .zip ファイルにパッケージ化します。詳細については、 エディター設定コントリビューター YAML 設定リファレンス を参照してください。

注記

このサンプルは、ページフラグメント内のリッチテキスト要素のエディター (fragmentEntryLinkRichTextEditor) と、標準では含まれていないいくつかのサンプルエディターアプリケーションを対象としています。

サンプルの唯一の依存関係は @liferay/js-api バージョン 0.8.0であり、これはエディターのトランスフォーマー型を提供します。ビルドでは、1つのesbuildコマンドを実行するだけで、src/index.tsが build/index.jsにバンドルされます:

esbuild src/index.ts --outdir=build --bundle --format=esm

変圧器コードを調べる

src/index.ts ファイルは、 editorConfigTransformer 関数を定義し、それを EditorTransformer オブジェクトでラップし、そのオブジェクトをモジュールのデフォルトエクスポートとしてエクスポートします。

import {
	EditorConfigTransformer,
	EditorTransformer,
} from '@liferay/js-api/editor';

const editorConfigTransformer: EditorConfigTransformer<any> = (config) => {
	// ...
};

const editorTransformer: EditorTransformer<any> = {
	editorConfigTransformer,
};

export default editorTransformer;

Liferay は editorConfigTransformer を呼び出し、拡張機能の editorConfigKeys に一致する各エディターの構成オブジェクトを使用して、返された構成を適用します。これらのキーはCKEditor 5のインスタンスにも一致するため、関数本体はAlloy Editor、CKEditor 5、CKEditor 4の順に3種類のエディタを処理します。

合金エディター

この関数はまず、Alloy Editor を処理し、その ツールバー 設定オブジェクトによって識別します。

// Alloy Editor

const toolbars: any = config.toolbars;

if (typeof toolbars === 'object') {
	interface ISelection {
		buttons: Array<string>;
		name: string;
	}

	const textSelection: ISelection = toolbars.styles?.selections?.find(
		(selection: ISelection) => selection.name === 'text'
	);

	if (textSelection.buttons) {
		textSelection.buttons.push('video');

		return {
			...config,
			toolbars,
		};
	}
}

このブランチは、config.toolbars.styles.selections 内のテキスト選択部分を検出し、そのボタンリストに動画ボタンを追加します。 Alloy Editorのフィールドでテキストを選択すると、フローティングツールバーに「ビデオを挿入」ボタンが表示されます。

CKEditor 5

2番目のブランチはCKEditor 5を扱います。

// CKEditor 5

if (config.editorType === 'ckeditor5') {
	return {
		...config,
		toolbar: [
			'accessibilityHelp',
			'|',
			'undo',
			'redo',
			'|',
			'alignment',
		],
	};
}

config.editorType のチェックが重要なのは、トランスフォーマーが CKEditor 4 と CKEditor 5 の両方のエディターの構成を受け取るためです。タイプが ckeditor5の場合、このブランチはツールバーを accessibilityHelp、 undo、 redo、および alignment コントロールに置き換えてから、構成を返します。この分岐がないと、CKEditor 5 の設定が下の CKEditor 4 ハンドラーに到達し、フラグメント エディタがレンダリングできないツールバーが返ってきます。

CKEditor 4

以前の分岐で返されなかった設定はすべて、CKEditor 4 ハンドラに渡されます。

// CKEditor

const toolbar: string | [string[]] = config.toolbar;

const buttonName = 'AICreator';
let transformedConfig: any;

if (typeof toolbar === 'string') {
	const activeToolbar = config[`toolbar_${toolbar}`];

	activeToolbar.push([buttonName]);

	transformedConfig = {
		...config,
		[`toolbar_${toolbar}`]: activeToolbar,
	};
}
else if (Array.isArray(toolbar)) {
	toolbar.push([buttonName]);

	transformedConfig = {
		...config,
		toolbar,
	};
}

const extraPlugins: string = config.extraPlugins;

return {
	...transformedConfig,
	extraPlugins: extraPlugins ? `${extraPlugins},aicreator` : 'aicreator',
};

CKEditor 4 はツールバーを 2 つの形式で表現し、このブランチはその両方を処理します。 config.toolbar が文字列の場合、構成内の toolbar_<name> 配列に名前を付け、ブランチは AICreator ボタンをその配列に追加します。 config.toolbar が配列の場合、分岐はボタンを直接その配列にプッシュします。返された構成には、 aicreator から extraPluginsが追加され、既にリストされているプラグインは保持されます。エディターでは、ツールバーの一番最後に「AIコンテンツを作成」というボタンが表示されます。

クライアント拡張機能をデプロイする

Liferay DXP の新しいインスタンスを起動するには、以下を実行します。

docker run -it -m 8g -p 8080:8080 liferay/dxp:2026.q1.9-lts

http://localhost:8080 に、メールアドレス test@liferay.com とパスワード test を使用して Liferay にサインインします。プロンプトが表示されたら、パスワードを learn に変更してください。

Liferayが起動したら、新しいターミナルを開き、サンプルワークスペース内の client-extensions/liferay-sample-editor-config-contributor-1/ フォルダから次のコマンドを実行します。

../../gradlew clean deploy -Ddeploy.docker.container.id=$(docker ps -lq)

これによりクライアント拡張機能がビルドされ、zipファイルがLiferayの deploy/ フォルダにデプロイされます。 Liferay SaaSへのデプロイを含む完全なデプロイワークフローについては、 Liferayへのクライアント拡張機能のデプロイ を参照してください。

Liferayインスタンスのコンソールで、デプロイが成功したことを確認してください。

STARTED liferaysampleeditorconfigcontributor1_...

エディターの変更内容を確認する

変更が適用されていることを確認するには、フラグメントの リッチテキスト要素 の編集を開始します。このエディタは、クライアント拡張機能の editorConfigKeys 値 (fragmentEntryLinkRichTextEditor によって対象とされています。

CKEditor 5 がアクティブな場合、そのフィールドには CKEditor 5 のブランチが割り当てられ、そのツールバーには、ブランチが設定するアクセシビリティヘルプ、元に戻す、やり直し、および配置コントロールが表示されます。

CKEditor 5 が有効になっている場合、フラグメントリッチテキスト要素のツールバーには、アクセシビリティヘルプ、元に戻す、やり直し、および配置コントロールが表示されます。

LPD-11235 非推奨機能フラグを有効にすると、インスタンスが CKEditor 4 に切り替わります。 LiferayはこのフィールドをAlloy Editorでレンダリングするため、Alloy Editorブランチが代わりにこのフィールドを処理します。フィールド内のテキストを選択すると、フローティングツールバーに「ビデオを挿入」ボタンが表示されます。

LPD-11235フラグが有効になっている場合、Alloy Editorのフローティングツールバーに「ビデオを挿入」ボタンが表示されます。

CKEditor 4 ブランチの実行を確認するには、CKEditor 4 エディタの設定キーを editorConfigKeys にリストします。このブランチは、そのエディターのツールバーに「AIコンテンツを作成」ボタンを追加します。