以前に XM Cloud で利用する Next.js のグリッドの仕組みに関して少し取り上げましたが、動作に関して紹介をしていませんでした。今回はこれを取り上げたいと思います。
標準で提供している Grid
Sitecore XM Cloud のサンプルで提供しているグリッドは以下のようになっています。この設定は、サイトの Settings の中で Grid として提供されています。
- Tailwind
- Bootstrap 5 (デフォルトの値)
- Bootstrap 4
- Bootstrap 3
- Foundation
- Grid 960
今回は Bootstrap 5 と tailwind の2つで動作検証をします。
Bootstrap 5 での動作
Basic site のコンテンツは Bootstrap 5 で作成されているため色々な値が入ってきますが、動作確認をするためにプレーンな状況でコードを確認していきたいと思います。まず、Title と RichText コンポーネントを配置します。
実際にページを表示した際には、以下のようなコードが出力されているのがわかります。
リッチテキストのコンポーネントのコードは以下のように記載されています。
<div class="component rich-text col-12">
<div class="component-content">
<div>
<p>RichText Sample</p>
</div>
</div>
</div>
リッチテキストの処理をしているコンポーネントは components/RichText.tsx に記載されており、一部のコードを参照すると以下のようになっています。
return (
<div
className={`component rich-text ${props.params.styles.trimEnd()}`}
id={id ? id : undefined}
>
<div className="component-content">{text}</div>
</div>
);
このコードを見ると以下のような動きをしているのがわかります。
- <div className={`component rich-text まではこのコンポーネント固有のコード
- ${props.params.styles.trimEnd() はコンポーネントに追加される追加の属性
- <div className="component-content"> の中にアイテムで持っている RichText のデータを表示する
アイテムを確認すると、RichText では以下のコードを格納しています。
Sitecore のアイテムからデータを取得して HTML に関して記載していることを確認することができました。
実際に作成したコンポーネントを削除して、次の Grid での動作確認をしていきます。
Tailwind.css での動作確認
改めて空っぽのページに対して同じようにコンポーネントを配置します。出力は以下のようになっています。
HTML のコードを確認すると、以下のようになっています。
<div class="component rich-text basis-full">
<div class="component-content">
<div>
<p>Sample RichText</p>
</div>
</div>
</div>
Bootstrap 5 の場合にはコンポーネントの class に col-12 が指定されていますが、この部分が basis-full に変わっていることがわかります。それぞれのフレームワークで全幅(横幅 100%)を利用する際の記述ができているのがわかります。
このように、コンポーネントを配置する際に、サイトで指定している Grid で必要となるコードが補完されているのが変わります。
ではこの値はどこで定義されているのでしょうか?実は、/sitecore/system/Settings/Feature/Experience Accelerator/GridTailwind/Tailwind Grid Definition に Tailwind を利用する際のグリッドの記述方法が定義されており、Mobile の 12 のサイズに対してアイテムで定義されています。
まとめ
今回は Grid の選択がどういう形でコードに反映されるのか?というのを確認することができました。次回は、Tailwind.css を利用していくにあたって、スタイルシートの記述方法を少しまとめていきます。