# 画面設計書 63-サイトマップ設定

## 概要

本ドキュメントは、Shopware 6 管理画面（Administration）におけるサイトマップ設定画面の設計を記述したものです。XMLサイトマップの生成に関する設定を管理するための管理者向け設定画面です。

### 本画面の処理概要

サイトマップ設定画面は、検索エンジン向けのXMLサイトマップの生成方法をカスタマイズするための画面です。サイトマップに含めるコンテンツの種類や更新頻度、優先度などを設定できます。

**業務上の目的・背景**：XMLサイトマップは検索エンジンがWebサイトの構造を理解し、効率的にクロールするために重要な役割を果たします。適切なサイトマップ設定により、新しいページや更新されたページを検索エンジンに素早く認識させ、SEOパフォーマンスを向上させることができます。

**画面へのアクセス方法**：管理画面にログイン後、左メニューの「設定」 > 「コンテンツ」セクション > 「サイトマップ」をクリックしてアクセスします。URL パスは `#/sw/settings/sitemap/index` です。

**主要な操作・処理内容**：
1. **サイトマップ生成設定**：core.sitemap ドメインの各種システム設定を変更
2. **販売チャネル別設定**：販売チャネルごとに異なるサイトマップ設定を適用
3. **設定の保存**：変更した設定を一括保存

**画面遷移**：
- 遷移元：設定一覧画面（sw-settings-index）
- 遷移先：なし（設定画面のため）

**権限による表示制御**：
- `system.system_config`：サイトマップ設定へのアクセスおよび編集が可能

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| 64 | サイトマップ表示 | 主機能 | サイトマップ生成の設定 |

## 画面種別

設定

## URL/ルーティング

| 項目 | 値 |
|------|---|
| モジュール名 | sw-settings-sitemap |
| メインルート | sw.settings.sitemap.index |
| URLパス | #/sw/settings/sitemap/index |

## 入出力項目

### システム設定（core.sitemap ドメイン）

| 項目名 | 設定キー | 型 | 説明 |
|--------|---------|-----|------|
| サイトマップ設定 | core.sitemap.* | 各種 | sw-system-config コンポーネントで自動表示 |

## 表示項目

### システム設定カード

| セクション | 表示項目 | 説明 |
|------------|----------|------|
| ヘッダー | 販売チャネル選択 | ドロップダウンで販売チャネルを選択（sales-channel-switchable） |
| 設定項目 | 各種設定フィールド | core.sitemap ドメインの設定項目（sw-system-config で自動生成） |

## イベント仕様

### 1-保存ボタン押下

**トリガー**: 「保存」ボタンクリック

**処理フロー**:
1. `onSave` メソッドが実行される
2. `systemConfig.saveAll()` でシステム設定を保存
3. 成功時: ボタンが成功状態に変化
4. 失敗時: エラー通知を表示

**データフロー**:
```
ユーザー入力 → sw-system-config → SystemConfigService → API → system_config テーブル
```

### 2-販売チャネル変更

**トリガー**: 販売チャネルドロップダウンの値変更

**処理フロー**:
1. sw-system-config コンポーネントが自動的に対象販売チャネルの設定を取得
2. 画面を再描画

### 3-ローディング状態変更

**トリガー**: sw-system-config からの loading-changed イベント

**処理フロー**:
1. `onLoadingChanged` が実行される
2. ページ全体のローディング状態を更新

## データベース更新仕様

### 操作別データベース影響一覧

| 操作（イベント） | 対象テーブル | 操作種別 | 概要 |
|----------------|-------------|---------|------|
| システム設定保存 | system_config | UPDATE/INSERT | core.sitemap.* 設定の保存 |

### テーブル別更新項目詳細

#### system_config

| 操作 | 項目（カラム名） | 更新値・取得条件 | 備考 |
|-----|-----------------|-----------------|------|
| UPDATE/INSERT | configuration_key | core.sitemap.* | 設定キー |
| UPDATE/INSERT | configuration_value | 各種設定値 | JSON形式 |
| UPDATE/INSERT | sales_channel_id | UUID | 対象販売チャネル（nullの場合はデフォルト） |

## メッセージ仕様

| 種別 | メッセージキー | メッセージ内容 | 表示条件 |
|------|--------------|--------------|---------|
| エラー | （動的） | API エラーメッセージ | 保存失敗時 |

## 例外処理

| 例外状態 | 対応処理 | 画面表示 |
|---------|---------|---------|
| 権限不足 | 画面アクセス不可 | 設定メニューに表示されない |
| API通信エラー | エラー通知表示 | エラーメッセージを通知で表示 |

## 備考

- サイトマップ設定は販売チャネルごとに独立して管理できます
- sw-system-config コンポーネントにより、設定項目は自動的に表示されます
- 実際のサイトマップ生成はバッチ処理またはコンソールコマンドで実行されます
- サイトマップはキャッシュと連動して更新される場合があります

---

## コードリーディングガイド

本画面を理解するために参照すべきファイルと、推奨する読み解き順序を以下に示す。

### 推奨読解順序

#### Step 1: データ構造を理解する

サイトマップ設定は system_config テーブルを使用します。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | SystemConfigDefinition | `src/Core/System/SystemConfig/SystemConfigDefinition.php` | システム設定エンティティの定義 |

**読解のコツ**: Shopware 6 の設定管理は SystemConfig を通じて行われ、ドメイン（core.sitemap.*）でグループ化されます。

#### Step 2: エントリーポイントを理解する

処理の起点となるモジュール登録とルーティングを確認します。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | index.js | `src/Administration/Resources/app/administration/src/module/sw-settings-sitemap/index.js` | モジュール登録とルート定義 |

**主要処理フロー**:
1. **6行目**: コンポーネントの遅延ロード登録
2. **11-39行目**: `Module.register` でモジュールを登録
3. **22-31行目**: ルート定義（index）
4. **33-38行目**: 設定メニューへの項目追加（contentグループ）

#### Step 3: ページコンポーネントを理解する

メインページコンポーネントの構造を確認します。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | sw-settings-sitemap/index.js | `src/Administration/Resources/app/administration/src/module/sw-settings-sitemap/page/sw-settings-sitemap/index.js` | ページのメインロジック |
| 3-2 | sw-settings-sitemap.html.twig | `src/Administration/Resources/app/administration/src/module/sw-settings-sitemap/page/sw-settings-sitemap/sw-settings-sitemap.html.twig` | テンプレート構造 |

**主要処理フロー**:
- **35-51行目**: `onSave` で保存処理
- **53-55行目**: `onLoadingChanged` でローディング状態管理
- **51-57行目（テンプレート）**: `sw-system-config` で core.sitemap ドメインの設定表示
- **54行目（テンプレート）**: `sales-channel-switchable` 属性で販売チャネル切り替え有効

### プログラム呼び出し階層図

```
sw-settings-sitemap (Page)
    │
    └─ sw-system-config (Component)
           │
           ├─ SystemConfigService
           │      └─ core.sitemap ドメインの設定
           │
           └─ SalesChannelRepository
                  └─ 販売チャネル一覧取得
```

### データフロー図

```
[入力]                      [処理]                         [出力]

販売チャネル選択    ───▶   sw-system-config           ───▶  設定値表示
                           (sales-channel-switchable)

設定値入力          ───▶   sw-system-config           ───▶  system_config
                           .saveAll()                       (core.sitemap.*)
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| index.js | `src/Administration/Resources/app/administration/src/module/sw-settings-sitemap/index.js` | ソース | モジュール登録・ルート定義 |
| sw-settings-sitemap/index.js | `src/Administration/Resources/app/administration/src/module/sw-settings-sitemap/page/sw-settings-sitemap/index.js` | ソース | ページメインロジック |
| sw-settings-sitemap.html.twig | `src/Administration/Resources/app/administration/src/module/sw-settings-sitemap/page/sw-settings-sitemap/sw-settings-sitemap.html.twig` | テンプレート | ページテンプレート |
