it-swarm.com.de

So rufen Sie Daten aus der Magento-Systemkonfiguration ab

Ich frage mich nur, wie ich die Konfigurationsdaten für mein benutzerdefiniertes Modul erhalten kann. Die Konfiguration kann über den Admin system->configuration und wie man es im Frontend zieht?

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

sectionName, groupName und fieldName sind in der etc/system.xml -Datei Ihres Moduls enthalten.

Der obige Code ruft automatisch den Konfigurationswert des aktuell angezeigten Speichers ab.

Wenn Sie den Konfigurationswert eines anderen Geschäfts als des aktuell angezeigten Geschäfts abrufen möchten, können Sie die Geschäfts-ID als zweiten Parameter für die Funktion getStoreConfig wie folgt angeben:

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

sie sollten folgenden Code verwenden

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

Mage::app()->getStore() Dies fügt Geschäftscode in die Abrufwerte ein, so dass Sie die korrekten Konfigurationswerte für das aktuelle Geschäft abrufen können. Dadurch werden falsche Geschäftswerte vermieden, da Magento auch für mehrere Geschäfte/Ansichten verwendet wird. Sie müssen also Geschäftscode hinzufügen, um etwas abzurufen in magento.

wenn mehr als ein Geschäft oder mehrere Ansichten konfiguriert sind, wird sichergestellt, dass Werte für das aktuelle Geschäft abgerufen werden

23
user1645055

Magento 1.x

(Beispiel für Magento 2 unten)

sectionName, groupName und fieldName befinden sich in der Datei etc/system.xml des Moduls.

PHP-Syntax:

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

In einem Editor im Administrator, z. B. dem Inhalt einer CMS-Seite oder eines statischen Blocks. die Beschreibung/Kurzbeschreibung einer Katalogkategorie, eines Katalogprodukts usw.

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

Damit der Ansatz "Innerhalb eines Editors" funktioniert, muss der Feldwert durch einen Filter geleitet werden, damit der Inhalt von {{...}} analysiert wird. Magento erledigt dies standardmäßig für Kategorie- und Produktbeschreibungen sowie für CMS-Seiten und statische Blöcke. Wenn Sie den Inhalt jedoch in Ihrem eigenen benutzerdefinierten Ansichtsskript ausgeben und möchten, dass diese Variablen analysiert werden, können Sie dies folgendermaßen tun:

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

Ersetzen Sie Bezeichner/Name durch die entsprechenden Werte für das Modell, das Sie laden, und Feld durch den Namen des Attributs, das Sie ausgeben möchten. die möglicherweise {{...}} Vorkommen enthalten, die analysiert werden müssen.

Magento 2.x

Von jeder Block-Klasse, die\Magento\Framework\View\Element\AbstractBlock erweitert

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

Jede andere PHP class:

Wenn die Klasse (und keine der übergeordneten Klassen) \Magento\Framework\App\Config\ScopeConfigInterface Nicht über den Konstruktor einfügt, müssen Sie sie Ihrer Klasse hinzufügen.

// ... 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...

Nachdem Sie es in Ihre Klasse eingefügt haben, können Sie jetzt Konfigurationswerte mit demselben Syntaxbeispiel abrufen, das oben für Blockklassen angegeben wurde.

Beachten Sie, dass Sie nach dem Ändern der __construct () -Parameterliste einer Klasse möglicherweise Ihre generierten Klassen sowie das Abhängigkeitsinjektionsverzeichnis löschen müssen: var/generation & var/di

19
Darren Felton

zum Beispiel, wenn Sie E-MAIL-ADRESSE von config-> store email address erhalten möchten. Sie können angeben, von welchem ​​Geschäft aus Sie die Adresse erhalten möchten:

$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