Как получить данные из конфигурации системы Magento



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

375   4  
PHP

4 ответов:

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

sectionName,имя_группы и имя_поля находятся в etc / system.xml файл вашего модуля.

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

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

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

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

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

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

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

Magento 1.x

(пример magento 2 приведен ниже)

sectionName,имя_группы и имя_поля присутствуют в 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'));
?>

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

Magento 2.x

из любого класса блоков, который расширяет \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

например, если вы хотите получить адрес электронной почты из config->хранить адреса электронной почты. Вы можете указать из какого магазина вам понадобится адрес:

$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);

Comments

    Ничего не найдено.