7

デフォルト値を変更せずに Magento の設定を上書きする良い解決策を探しています。

たとえば、既存の値を削除せずに、core_config_data テーブルの「web/unsecure/base_skin_url」項目をオーバーライドしたいと考えています。したがって、コード内のどこかで、この正確なコードが呼び出された場合:

Mage::getStoreConfig('web/unsecure/base_skin_url');

デフォルトのものではなく、設定した構成オプションが見つかります...

前もって感謝します!

チャック

4

3 に答える 3

10

Magento は実行時に構成オブジェクトのツリー構造から構成値を直接読み取るため、構成オブジェクトのネイティブsetNodeメソッドを使用して値を変更する必要があります。ただし、Magentoがスコープ設定(セルフ リンク) でロードする方法のため、見た目ほど簡単ではありません。

現在のバージョンの Magento (古いバージョンではテストしていないと思いますが、テストはしていません) では、現在のstore.

ステップ 1 は、現在設定されているストアのコードを取得することです。次のようにプログラムでこれを行うことができます

$store = Mage::app()->getStore();
$code  = $store->getCode();

次に、次の呼び出しで構成値を設定できます

$config = Mage::getConfig();
$config->setNode("stores/$code/web/unsecure/base_skin_url", 'value_to_set');

これはすべて、 Magento が構成オブジェクトをブートストラップした後に行う必要があることに注意してください。また、Magento に構成が読み込まれる期間がありますが、ストア オブジェクトは読み込まれないことに注意してください。この場合、ストア オブジェクトからストア コードを読み込むことができません。

Pulse Storm Chaos モジュールで同様のことを行いました。作業コードに興味がある場合は、Githubにあります。

于 2012-10-10T23:05:03.933 に答える
7

アランの答えは正しいですが、構成キャッシュは気にしません。たとえば、Mage::getStoreConfig('web/unsecure/base_skin_url')2 回呼び出してその間に値を変更しても、変更は効果がありません。この問題を回避するには、 を使用する必要があります$store->setConfig('web/unsecure/base_skin_url', 'value_to_set')。構成キャッシュを更新し、Alan の方法で構成ノードを設定します。

于 2014-04-30T09:36:47.030 に答える
1

特別な設定データを上書きしたい場合は、それを app/etc/local.xml に入れることができます。しかし、それはあなた自身のショップにのみ有用であり、公開モジュールには有用ではありません.

base_urlデータベースを変更せずに開発目的で上書きする方法を次に示します。

<config>
...
    <stores>
        <default>
            <web>
                <unsecure>
                    <base_url>http://dev.myshop.com/</base_url>
                </unsecure>
                <secure>
                    <base_url>http://dev.myshop.com/</base_url>
                </secure>
            </web>
        </default>
        <admin>
            <web>
                <unsecure>
                    <base_url>http://dev.myshop.com/</base_url>
                </unsecure>
                <secure>
                    <base_url>http://dev.myshop.com/</base_url>
                </secure>
            </web>
        </admin>
    </stores>
...
</config>
于 2012-10-11T06:36:44.797 に答える