web-dev-qa-db-ja.com

Magentoシステム構成からデータを取得する方法

カスタムモジュールの構成データを取得する方法を探しています。設定はadmin system->configurationおよびフロントエンドでのプル方法は?

60
Jorge
$configValue = Mage::getStoreConfig('sectionName/groupName/fieldName');

sectionNamegroupName、およびfieldNameは、モジュールのetc/system.xmlファイルに存在します。

上記のコードは、現在表示されているストアの設定値を自動的に取得します。

現在表示されているストア以外のストアの構成値を取得する場合は、次のようにgetStoreConfig関数の2番目のパラメーターとしてストアIDを指定できます。

$store = Mage::app()->getStore(); // store info
$configValue = Mage::getStoreConfig('sectionName/groupName/fieldName', $store);
151

次のコードを使用する必要があります

_$configValue = Mage::getStoreConfig(
                   'sectionName/groupName/fieldName',
                   Mage::app()->getStore()
               ); 
_

Mage::app()->getStore()これは、フェッチ値にストアコードを追加し、現在のストアの正しい構成値を取得できるようにします。これにより、magentoは複数のストア/ビューにも使用されるため、ストアコードを追加して何かをフェッチする必要がありますmagentoで。

複数のストアまたは複数のビューが構成されている場合、これにより現在のストアの値が取得されることが保証されます

23
user1645055

Magento 1.x

(以下に提供されるmagento 2の例)

sectionNamegroupName、およびfieldNameは、モジュールのetc/system.xmlファイルに存在します。

PHP構文:

Mage::getStoreConfig('sectionName/groupName/fieldName');

CMSページや静的ブロックのコンテンツなど、管理者のエディター内から。カタログカテゴリ、カタログ製品などの説明/短い説明.

{{config path="sectionName/groupName/fieldName"}}

「エディタ内」アプローチを機能させるには、{{...}}のコンテンツを解析するために、フィールド値をフィルターに渡す必要があります。箱から出してすぐに、Magentoはカテゴリと製品の説明、CMSページと静的ブロックに対してこれを行います。ただし、独自のカスタムビュースクリプト内でコンテンツを出力し、これらの変数を解析する場合は、次のようにできます。

<?php
    $example = Mage::getModel('identifier/name')->load(1);
    $filter  = Mage::getModel('cms/template_filter');
    echo $filter->filter($example->getData('field'));
?>

identifier/nameをロードするモデルの適切な値に置き換え、fieldを出力する属性の名前に置き換え、解析する必要がある{{...}}オカレンスが含まれる場合があります。

Magento 2.x

\ Magento\Framework\View\Element\AbstractBlockを拡張するブロッククラスから

$this->_scopeConfig->getValue('sectionName/groupName/fieldName');

その他のPHP class:

クラス(およびその親のいずれも)がコンストラクターを介して\Magento\Framework\App\Config\ScopeConfigInterfaceを注入しない場合、クラスに追加する必要があります。

// ... Remaining class definition above...

/**
 * @var \Magento\Framework\App\Config\ScopeConfigInterface
 */
protected $_scopeConfig;

/**
 * Constructor
 */
public function __construct(
    \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
    // ...any other injected classes the class depends on...
) {
  $this->_scopeConfig = $scopeConfig;
  // Remaining constructor logic...
}

// ...remaining class definition below...

それをクラスにインジェクトすると、ブロッククラスに対して上記で示したのと同じ構文例でストア構成値をフェッチできるようになります。

クラスの__construct()パラメータリストを変更した後、生成されたクラスと依存性注入ディレクトリをクリアする必要がある場合があることに注意してください:var/generationvar/di

19
Darren Felton

たとえば、config-> store emailアドレスからEMAIL ADDRESSを取得する場合。住所を指定するストアから指定できます。

$store=Mage::app()->getStore()->getStoreId(); 
/* Sender Name */
Mage::getStoreConfig('trans_email/ident_general/name',$store); 
/* Sender Email */
Mage::getStoreConfig('trans_email/ident_general/email',$store);
2
claudio