リッチエディタ内で画像の配置(左寄せ、右寄せ、中央寄せなど)を直接設定することはできません。
リッチエディタ内で画像の配置(左寄せ、右寄せ、中央寄せなど)を直接設定することはできません。
しかし、繰り返しフィールドとカスタムフィールドを利用して、サイト側の実装で画像の配置を調整することは可能です。
実装例
1. カスタムフィールドの設定
まず、以下のようにカスタムフィールドを設定します。
content
にはリッチエディタのみ設定します。imageCenter
、imageRight
には画像フィールドのみ設定します。
※左寄せの画像についてはcontent
のリッチエディタ内で設定できるため省略しています。
2. APIスキーマの設定
次に、以下のようにAPIスキーマを設定します。
title
には記事のタイトルを入力するためのテキストフィールドを設定します。body
には繰り返しフィールドを設定し、先ほど作成したcontent
とimageCenter
、imageRight
を選択します。
コンテンツを入稿し、リクエストすると以下のようなレスポンスになります。
"title": "記事のタイトルが入ります",
"body": [
{
"fieldId": "content",
"richEditor": "<h2 id=\"hfe9adf551f\">見出しが入ります</h2><p>テストテキストテストテキストテストテキストテストテキストテストテキストテストテキスト</p><p>テストテキストテストテキストテストテキストテストテキストテストテキストテストテキスト</p><p></p>"
},
{
"fieldId": "imageCenter",
"image": {
"url": "https://images.microcms-assets.io/assets/xxxxxx/yyyyyy/1200x800.png",
"height": 800,
"width": 1200
}
},
{
"fieldId": "imageRight",
"image": {
"url": "https://images.microcms-assets.io/assets/xxxxxx/yyyyyy/1200x800.png",
"height": 800,
"width": 1200
}
}
]
}
3. フロントエンドの実装
fieldId
の値を使用して、各コンポーネントを条件に応じて出し分けます。
具体的には、body
内の各項目のfieldId
の値に応じて、適切なコンポーネント(リッチエディタ、中央寄せ画像、右寄せ画像)を表示します。
Next.jsとTailwind CSSを利用した実装例
export default async function NewsDetail() {
const data = await client.getListDetail({
endpoint: 'news',
contentId:'contentId'
})
const { title, body } = data
return (
<div>
<h1>{title}</h1>
<div className="grid gap-4">
{body.map((item, i) =>
item.fieldId === 'content' ? (
<RichEditor key={i} content={item.richEditor} />
) : item.fieldId === 'imageCenter' ? (
<ImageCenter key={i} image={item.image} />
) : item.fieldId === 'imageRight' ? (
<ImageRight key={i} image={item.image} />
) : null
)}
</div>
</div>
)
}
/* 中央寄せの画像を返却するコンポーネント */
function ImageCenter({ image }) {
return (
<figure className="m-auto">
<Image src={image.url} width={image.width} height={image.height} alt="" />
</figure>
)
}
/* 右寄せの画像を返却するコンポーネント */
function ImageRight({ image }) {
return (
<figure className="ml-auto">
<Image src={image.url} width={image.width} height={image.height} alt="" />
</figure>
)
}
function RichEditor({ content }) {
return <div dangerouslySetInnerHTML= />
}
このように、繰り返しフィールドとカスタムフィールドを利用し、fieldId
の値に応じてコンポーネントを切り替えることで、画像の配置を調整できます。