Appearance
SC-002 機種インデックスショートコード
概要
- 各日別記事で取り上げた機種の一覧(日付・機種名・ホール別導入台数)をテーブル形式で表示する
- 機種名と日別記事へのリンクも提供する
- 全日別記事の機種名リスト取得・DailyLink からの記事 URL 取得・ホール別導入台数算出を行い、Twig によるテーブル HTML を生成する。属性なし。
- 表示するホールは、アイランド秋葉原/エスパス秋葉原/ビッグアップル秋葉原
ワイヤーフレーム
ブロック一覧
| ブロックID | ブロック名 | 表示内容 | 初期値 | ユーザー操作 | アクション |
|---|---|---|---|---|---|
B-0 | 一覧コンテナ | 見出し+導入台数テーブルの論理コンテナ(本番マークアップにラッパーなし) | 常時表示 | なし | - |
B-1 | 見出し | h2「導入台数一覧」 | 常時表示 | なし | - |
B-2 | 導入台数テーブル | 列: 日付 / 機種名 / 3 ホール(icon ヘッダー)。行は日付×機種の組み合わせ | 常時表示 | なし(リンク遷移のみ) | - |
表示条件・注記
- 属性: なし(ショートコード単体で全件表示)。
- ホール列:
HallEnum::get_kishu_index_display_halls()の 3 ホール(island/espasu/bigapple)。ヘッダーは icon 表示(ホール名はaria-label)、台数セルはtitleにホール名を付与。 - 日付セル: 各行に日付を表示。
article_linkがあれば日別記事へのリンク、なければプレーンテキスト(本番 Twig と同じ)。 - 機種名セル:
urlがあれば機種ページリンク、なければテキスト。 - 台数: DailyData が無い機種・ホールは
0。 - 空機種名: 本番は counts に計上しない(スキップ)。ワイヤーフレームのサンプルには含めない。
- ワイヤーフレームの見た目:
.ki-wireframe__containerの白カードは docs 用。本番はh2+tableのみ(ラッパークラスなし)。
外部インターフェース
ショートコードタグ
- タグ名:
[CustomCode_CreateKishuIndex] - 入力例:
[CustomCode_CreateKishuIndex]
属性一覧
| 属性 | 役割 | 必須 |
|---|---|---|
| - | - | - |
エラー・境界条件
| 条件 | ユーザー向け挙動 | メッセージ / ログ |
|---|---|---|
KishuIndexService で例外発生 | ErrorHandler::handle_error() の HTML | ErrorHandler の実装による |
DailyLink なし($daily_link_dto_list 空) | 機種日付側をベースに表示 | - |
機種名が空文字(entity->get_kishu() が '') | counts_map に計上しない(スキップ) | - |
| 機種に対応する DailyData が存在しない | counts が 0 表示 | - |
今後の更新で崩してはいけないところ(互換性契約)
公開契約(Breaking change 扱い)
- ショートコード名
CustomCode_CreateKishuIndexを変更しない- 理由: 過去の投稿本文にショートコード文字列が直書きされているため
内部実装(本ショートコードのコード・Twig・設計書の範囲)
- Twig 変数名(
dates/hall_columns、およびtitles配下の構造)、countsのキー文字列は、実装の都度HallEnum(HallEnum::get_kishu_index_display_halls()のvalue)とテンプレートを整合させる。Twig 内で enum は参照できないため、列定義はHallEnum::get_kishu_index_table_columns()から渡し、キー名の単体テストでHallEnum変更を検知する。 - 表示対象ホールは現状 3 ホール固定(
ISLAND/ESPASU/BIGAPPLE)。ホール追加・変更時はHallEnum、サービス、Twig、テストを合わせて更新する。