---
title: "コードによる設定の操作"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.cs-cart.jp/llms.txt
> Use this file to discover all available pages before exploring further.

# コードによる設定の操作

設定は`Registry`および`Settings`クラスを介してコードで管理されます。\
これらのクラスは、設定の値を追加、変更、取得するメソッドを提供します。

## Registry クラス

この`Registry`クラスには、アプリケーションの様々な設定を制御しています。\
このクラスは、設定のキャッシュも実行します（*var/cache/registry*ディレクトリを参照）。\
`Registry`クラスで設定を制御する方法は次のとおりです。

* コア設定またはアドオン設定の値の取得：

```php
<?php
Registry::get('settings.[セクション名].[設定名]');
Registry::get('addons.[アドオン名].[アドオンの設定名]');
```

* コア設定またはアドオン設定値の変更：

```php
<?php
Registry::set('settings.[セクション名].[設定名]', '[新しい設定値]');
Registry::set('addons.[アドオン名].[アドオンの設定名]', '[新しい設定値]');
```

## Settingsクラス

この`Settings`クラスは、データベースに保存されているCS-Cartの設定を操作するための拡張APIです。このクラスには多くのメソッドがあり、設定値の読み取り、変更、および削除などが可能です。

たとえば、`Settings`クラスで`elements_per_page`（1ページに表示するその他の要素数）（\[`基本設定`]→\[`表示設定`]）を管理する方法は次のとおりです。

* 設定（の存在）を確認する

```php
<?php
Settings::instance()->isExists('elements_per_page', 'Appearance');
```

* 設定の値を取得する

```php
<?php
Settings::instance()->getValue('elements_per_page', 'Appearance');
```

設定値の変更

```php
<?php
Settings::instance()->updateValue('elements_per_page', $new_value, 'Appearance');
```

## アドオン設定

## addon.xmlで設定を定義する

アドオン設定は、そのアドオンのディレクトリにある`addon.xml`ファイルで定義されています。\
設定のリストが`addon.xml`の`<settings>`セクションに追加されています。\
`<settings>`セクションの属性は次のとおりです。

* `layout`-アドオンの設定でウィンドウの外観を決定します。デフォルトでは、アドオンの設定はポップアップウィンドウに表示されます。`layout="separate"`を指定すると、設定は個別のページで表示されます。
* `edition_type` - CS-Cartのどのエディションで動作するかを指定します。

> **Note**
>
> これらのパラメーターは両方ともオプションです。

たとえば、`<settings layout="separate" edition_type="ROOT">`は、\
設定が別のページに表示され、「`すべてのショップモード`」や「`すべてのベンダーモード`」で使用できることを意味します。

## `<settings>`セクションの構造

```xml
<settings layout="separate" edition_type="ROOT,ULT:VENDOR">
        <sections> <!-- アドオンの設定セクション -->
            <section id="section1"> <!-- 設定パネルのセクション。設定のセクションには、次の属性があります。
                id—設定のセクションの識別子(setting_id):
                Registry::get('addons.[addon_id].[setting_id]')
                edition_type—利用できるエディションや権限を設定。複数の場合はカンマで区切る
                -->
                <items> <!-- 設定のアイテム -->
                    <item id="header"> <!-- The settings
                        id—設定の識別子
                        edition_type—利用できるエディションや権限を設定。複数の場合はカンマで区切る
                    　　　　　　-->
                        <type>header</type> <!-- 指定可能な値については別のページを参照:
                              input, textarea, password, checkbox, selectbox,
                              multiple select, multiple checkboxes,
                              countries list, states list,
                              file, info, header, template
                              -->
                        <default_value>radio_1</default_value> <!-- 設定のデフォルト値を指定できます -->
                        <variants> <!-- 次のタイプでは選択肢を設定できます:
                        selectbox, multiple select,
                        multiple checkboxes, combo select -->
                            <item id="radio_1"></item> <!-- id—選択肢の識別子-->
                        </variants>
                </items>
            </section>
</settings>
```

## 設定を操作するための関数

設定の値の選択肢は`variants.functions`および`actions.functions`の2種類の関数を使って変更・追加が可能です。

* `variant.functions`は、データベースにそれらの選択肢を記録せずに、選択肢のリストを生成します。設定の値の選択肢は、設定ページを開くたびに動的に生成されます。\
  これらの機能は、*\[addon\_name]/schemas/settings*ディレクトリの中の`variants.functions.post.php`ファイルに記述してください。\
  関数の名称は次のようにする必要があります\
  `fn_settings_variants_addons_[addon_name]_[setting_name]()`

例）\
`my_changes`アドオンに設定値`exampleID`が設定されていると仮定します。\
この設定の値の選択肢を生成するために、*my\_changes/schemas/settings*ディレクトリの`variants.functions.post.php`ファイルを作成します。このファイルには、`fn_settings_variants_addons_my_changes_example()`という関数が含まれている必要があります。

* `actions.functions`はアドオンがインストール／アンインストールされるときに呼び出されます。これらの関数は、アドオンのインストール中にデータベースにアドオンの設定を保存するフィールドを生成します。また、アドオンがアンインストールされるときにこれらのフィールドを削除します。

これらの関数は、`[addon_name]/schemas/settings`の`actions.functions.post.php`ファイルに配置する必要があります。関数の名前は次のように命名してください。

my\_changesアドオンにexampleID が設定されていると仮定します。この設定用の関数を作成するには、*my\_changes/schemas/settings*ディレクトリに`actions.functions.post.php`ファイルを作成します。このファイルには、`function fn_settings_actions_addons_my_changes_example()`という関数が含まれている必要があります。

Source: https://docs.cs-cart.jp/core/settings/code-operations/index.mdx
