Magento は、構成値を設定および取得するための API を提供します。config からのデータのフェッチに関する記事を書きました。以下の用語で混乱する場合は、確認してください。
変数の設定に関しては、「design/header/logo_src」変数を「この値に設定したい」と言うほど単純ではありません。また、値を保存する Web サイトと、値を保存するストアを指定する必要があります。
ここで注意することが重要です。Magento がバックエンド/リソース レベルで、または UI レベルでのみ、構成値の「ウェブサイトの表示、サイトの表示」の粒度を適用しているかどうかを確認するために、システムを詳しく調べていません。私の本能は後者だと言います。つまり、ウェブサイト/ストア レベルで保存できるように意図されていない値を保存してしまう可能性があり、それが恐ろしい未定義の動作につながる可能性があります。
1.4 コミュニティ エディションでは、Magento が次の場所に設定値を保存している場所を確認できます。
File: app/code/core/Mage/Adminhtml/controllers/System/ConfigController.php
//around line 126
Mage::getModel('adminhtml/config_data')
->setSection($section)
->setWebsite($website)
->setStore($store)
->setGroups($groups)
->save();
邪魔にならないように注意してください。最上位のストア/ウェブサイト構成のロゴだけを更新するためのコードは次のようになります。
//create a groups array that has the value we want at the rigth location
$groups_value = array();
$groups_value['header']['fields']['logo_src']['value'] = 'images/logo.gif';
Mage::getModel('adminhtml/config_data')
->setSection('design')
->setWebsite(null)
->setStore(null)
->setGroups($groups_value)
->save();
この線
Mage::getModel('adminhtml/config_data')
Magento モデルをインスタンス化します。
メソッド'design'
内のおよび文字列は、構成 URI に対応します。setSection
'header'
'logo_src'
design/header/logo_src
null
s が渡されたsetWebsite
と確信しておりsetStore
、この値をトップレベルで保存していることをオブジェクトに伝えます。ストア ID と Web サイト ID を渡すこともできます。(私はそれについて少し不安定ですが、ロゴを通常どおりに保存すると、それがシステムが行っていることです)
'fields'
とは'values'
ハードコードされています。オブジェクトの目的は、セクション内のすべてのグループから一度に複数の構成値を保存することです。
興味がある場合は、上記のコントローラーのsaveAction
メソッドを確認してください。