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

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top