Как получить данные из конфигурации системы Magento - PullRequest
60 голосов
/ 05 мая 2011

Я просто бродил о том, как я могу получить данные конфигурации для моего пользовательского модуля. Конфигурация может быть установлена ​​от администратора system->configuration и как вытащить его в веб-интерфейсе?

Ответы [ 4 ]

150 голосов
/ 05 мая 2011
$configValue = Mage::getStoreConfig('sectionName/groupName/fieldName');

sectionName , groupName и fieldName присутствуют в etc / system.xml файле вашего модуля.

Приведенный выше код автоматически получит значение конфигурации текущего просматриваемого магазина.

Если вы хотите получить значение конфигурации любого другого магазина, кроме текущего, то вы можете указать идентификатор магазина в качестве второго параметра функции getStoreConfig, как показано ниже:

$store = Mage::app()->getStore(); // store info
$configValue = Mage::getStoreConfig('sectionName/groupName/fieldName', $store);
23 голосов
/ 19 февраля 2013

вы должны использовать следующий код

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

Mage::app()->getStore() это добавит код магазина в значения выборки, чтобы вы могли получить правильные значения конфигурации для текущего магазина, это позволит избежать неправильных значений магазина, потому что magento также используется для нескольких хранилищ / представлений, поэтому необходимо добавить код магазина для извлечения чего-либо в Magento.

если у нас настроено более одного хранилища или несколько представлений, это обеспечит получение значений для текущего хранилища

19 голосов
/ 30 июня 2014

Magento 1.x

(пример magento 2 представлен ниже)

sectionName , groupName и 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'));
?>

Замена идентификатора / name соответствующими значениями для загружаемой модели, а field на имя атрибута, который вы хотите вывести, который может содержать {{...}} вхождений, которые необходимо проанализировать.

Magento 2.x

Из любого класса Block, который распространяется \ Magento \ Framework \ View \ Element \ AbstractBlock

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

Любой другой класс PHP:

Если класс (и ни один из его родителей) не внедряет \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/generation & var/di

2 голосов
/ 14 октября 2016

, например, если вы хотите получить адрес электронной почты из config-> store 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...