So erhalten Sie die Store-Konfiguration in einer Theme-Vorlage
-
29-09-2020 - |
Frage
Ich versuche, die Telefonnummerneinrichtung des Shops hinzuzufügen Stores > Konfiguration > Allgemein > Allgemein > Store-Informationen zum Header in meinem Theme.In einem Modul könnte dies meiner Meinung nach mithilfe von erfolgen getValue()
In \Magento\Framework\App\Config\ScopeConfigInterface
aber ich sehe keine Möglichkeit, dies innerhalb eines Themas zu verwenden.Bisher habe ich dies zu default.xml hinzugefügt
<referenceContainer name="header-wrapper">
<block class="Magento\Framework\View\Element\Template" name="store.phone.number" template="Magento_Theme::phone.phtml" />
</referenceContainer>
aber ich weiß nicht, wie ich die Telefonnummer hineinbekomme phone.phtml
Lösung
Ich schlage vor, dass Sie Ihren eigenen Block erstellen, der das erweitert Magento\Framework\View\Element\Template
Klasse.
Als die Magento\Framework\App\Config\ScopeConfigInterface
ist ein Teil von Magento\Framework\View\Element\AbstractBlock
(der Elternteil der Template
Klasse) deklariert in $_scopeConfig
, können Sie Ihrem benutzerdefinierten Block die folgende Funktion hinzufügen:
public function getConfig()
{
return $this->_scopeConfig;
}
Dann können Sie in Ihrer Vorlage Folgendes tun:
$block->getConfig()->getValue('value/you/need');
Vergessen Sie nicht, Ihr Layout wie folgt zu aktualisieren:
<referenceContainer name="header-wrapper">
<block class="Vendor\Module\Block\View\Element\Template" name="store.phone.number" template="Magento_Theme::phone.phtml" />
</referenceContainer>
Andere Tipps
Wir können eine Store-Konfiguration direkt in der Vorlage abrufen, indem wir eine Instanz von abrufen Magento\Framework\App\Config\ScopeConfig
:
\Magento\Framework\App\ObjectManager::getInstance()
->get('Magento\Framework\App\Config\ScopeConfigInterface')
->getValue('value/you/need');
Technisch gesehen, wenn jemand nach einer Instanz fragt Magento\Framework\App\Config\ScopeConfigInterface
, wir werden ihm eine Instanz von geben Magento\Framework\App\Config\ScopeConfig
.Beispielsweise können wir die Standardeinstellung für den Raster- oder Listenmodus erhalten:
$productListMode = \Magento\Framework\App\ObjectManager::getInstance()
->get('Magento\Framework\App\Config\ScopeConfigInterface')
->getValue('catalog/frontend/list_mode');
Notiz: Vermeiden Sie die direkte Verwendung des Objektmanagers.Wir sollten unsere Vorlagen sauber halten.Versuchen Sie, dem Block eine Konfiguration hinzuzufügen.Sollte der Antwort von @Raphael folgen.
Versuchen Sie es mit Block, es funktioniert bei mir nach vielen Suchanfragen
$isEnabled = \Magento\Framework\App\ObjectManager::getInstance()
->get('Magento\Framework\App\Config\ScopeConfigInterface') ->getValue('section/group/field');