star back image
people4
電飾 電飾
moon
men
shopify メタフィールドでテーブル表を作ろう(シンプル)

【shopify】メタフィールドでテーブル表を作ろう (simple)

BLOG shopify
読了約:10分

前にテーブル表を作成しました。
https://neo.astrowave.jp/blog/10184/

テキストの固定部分があったり、セルへのテキストを適用する登録も慣れないと、機能を仕込んだ本人も間違います。
少し複雑かもしれないと思いました。

簡単な表の作成はできないかな。

やっぱり単純なのがいいです。

作成したコードはもちろんAIさんに協力してもらいました。

テーブル表の完成図
完成図(数値を縦に積みたい)

【設置】メタフィールドを登録する

商品の登録の時に、表のための「メタフィールド」を入力する運用にしたいです。
今回は以下の2つです。

  • シンプル表のタイトル
  • シンプル表の数値

以下のようにシンプルに作成したいです。
作成方法は前回と同じです。

メタフィールドを2つ、追加したい図

「定義を追加する」ボタンを押して登録をしていきます。

liquidのコードで使用します「ネームスペースとキー」は、以下のようにしました。

シンプルタイトルのメタフィールドを入力中の図

タイトルはsimple_tableにしました。半角英字で好きな文言にします。

シンプル数値の図

数値はsimple_table_sizeに。

商品管理のページへ行ってください。
作成したメタフィールドが、商品管理にできているハズです。
以下のように登録しました。

タイトル分だけ数値を増やして、数字にコンマもつけて保存します

そうすると以下のようにテーブル表が。

完成です!

【共有】表のためのliquidのコードとcss

「カートボタン」のソースコードがあるliquidファイルを編集します。
「カートボタン」のソースがある場所の辺りで、以下のコードを貼り付けてください。

■ product-template.liquid

{% #### simple--表の育成 #### %}
{% if product.metafields.custom.simple_table and product.metafields.custom.simple_table_size %}
<div class="size-table-div-simple">
  <div class="size-table-row header">
      {% assign size_titles = product.metafields.custom.simple_table.value | remove: '"' | remove: '[' | remove: ']' | split: ',' %}
      {% for title in size_titles %}
        <div class="size-table-cell">{{ title | strip }}</div>
      {% endfor %}
  </div>
  {% assign sizes_list = product.metafields.custom.simple_table_size.value | remove: '"' | remove: '[' | remove: ']' | split: ' ' %}
  {% assign rows = sizes_list[0] | split: ',' %}
  {% for j in (0..rows.size) %}
    <div class="size-table-row">
      {% for i in (0..size_titles.size) %}
        {% assign values = sizes_list[i] | split: ',' %}
        {% if j < values.size %}
          <div class="size-table-cell">{{ values[j] }}</div>
        {% endif %}
      {% endfor %}
    </div>
  {% endfor %}
</div>
{% endif %}

※こんな感じでHTML出力してほしい。

<div class="size-table-div-simple">
<div class="size-table-row header">
<div class="size-table-cell">US</div>
<div class="size-table-cell">UK</div>
<div class="size-table-cell">JP</div>
<div class="size-table-cell">EU</div>
</div>
<div class="size-table-row">
<div class="size-table-cell">4</div>
<div class="size-table-cell">5</div>
<div class="size-table-cell">6</div>
<div class="size-table-cell">7</div>
</div>
<div class="size-table-row">
<div class="size-table-cell">3.5</div>
<div class="size-table-cell">4.5</div>
<div class="size-table-cell">5.5</div>
<div class="size-table-cell">6.5</div>
</div>
<div class="size-table-row">
<div class="size-table-cell">22</div>
<div class="size-table-cell">23</div>
<div class="size-table-cell">24</div>
<div class="size-table-cell">25</div>
</div>
<!-- 追加の行をここに挿入していきたい -->
</div>

テーブルの構造としてどうなのかな?

表としての表示の見た目が合っていれば合格でいいのでわぁ。

読み取りのSEO的な部分では、疑問が残ります。

■css

.size-table-div-simple {
  display: table;
  width: 100%;
  border-collapse: collapse;
  border-top: 1px solid #6c6c6c;
  border-bottom: 1px solid #6c6c6c;
  table-layout: fixed; /* 均等割にするために追加 */
}
.size-table-div-simple .size-table-row {
  display: table-row;
}
.size-table-div-simple .size-table-cell {
  display: table-cell;
  padding: 2px;
  text-align: center;
  border-right: 1px solid #6c6c6c;
  border-left: 1px solid #6c6c6c;
  margin: 0;
  box-sizing: border-box;
}
.size-table-div-simple .size-table-row.header {
  background-color: #E6E6E6;
  border-bottom: 1px solid #6c6c6c;
}
.size-table-div-simple .size-table-row.header .size-table-cell {
  font-weight: 400;
}
.size-table-div-simple .size-table-row:hover {
  background-color: #E6E6E6;
}
.size-table-div-simple .size-table-cell:hover {
}
.size-table-div-simple .size-table-row.header .size-table-cell {
  padding: 5px;
}

シンプル表の専用cssです。

以上になります。メモでした。