Domanda

Sto cercando di aggiungere la configurazione del numero di telefono del negozio in Negozi> Configurazione> Generale> Generale> Informazioni sul negozio per l'intestazione nel mio tema.In un modulo penso che questo potrebbe essere fatto usando getValue() in \Magento\Framework\App\Config\ScopeConfigInterface ma non riesco a vedere un modo come usare questo all'interno di un tema.Finora ho aggiunto questo a default.xml

 <referenceContainer name="header-wrapper">
      <block class="Magento\Framework\View\Element\Template" name="store.phone.number" template="Magento_Theme::phone.phtml" />
 </referenceContainer>
.

Ma non so come ottenere il numero di telefono all'interno phone.phtml

È stato utile?

Soluzione

Ti suggerisco di creare il proprio blocco, il che estenderà la classe Magento\Framework\View\Element\Template.

Poiché il Magento\Framework\App\Config\ScopeConfigInterface è parte di Magento\Framework\View\Element\AbstractBlock (il genitore della classe Template) dichiarato in $_scopeConfig, è possibile aggiungere la seguente funzione al blocco personalizzato:

public function getConfig()
{
    return $this->_scopeConfig;
}
.

Poi nel tuo modello puoi fare:

$block->getConfig()->getValue('value/you/need');
.

Non dimenticare di aggiornare il tuo layout come questo:

<referenceContainer name="header-wrapper">
      <block class="Vendor\Module\Block\View\Element\Template" name="store.phone.number" template="Magento_Theme::phone.phtml" />
</referenceContainer>
.

Altri suggerimenti

Possiamo ricevere direttamente un negozio di configurazione nel modello ottenendo un'istanza di Magento\Framework\App\Config\ScopeConfig:

 \Magento\Framework\App\ObjectManager::getInstance()
  ->get('Magento\Framework\App\Config\ScopeConfigInterface')
  ->getValue('value/you/need');
.

Tecnicamente, quando qualcuno richiede un'istanza di Magento\Framework\App\Config\ScopeConfigInterface, daremo un'istanza del Magento\Framework\App\Config\ScopeConfig. Ad esempio, possiamo ottenere l'impostazione predefinita per la modalità Grid o Elenco:

$productListMode = \Magento\Framework\App\ObjectManager::getInstance()
   ->get('Magento\Framework\App\Config\ScopeConfigInterface')
   ->getValue('catalog/frontend/list_mode');
.

Nota: Evitando l'uso di Gestione oggetto direttamente .Dovremmo mantenere i nostri modelli puliti.Prova ad aggiungere configurazione al blocco.Dovrebbe seguire la risposta @raphael.

Prova questo sul blocco, sta funzionando per me dopo molte ricerche

.

$ ISENABLED=Magento \ Framework \ app \ ObjectManager :: GetInstance ()
-> Get ('magento \ framework \ app \ config \ scopeconfiginterface') -> GetValue ('Sezione / Gruppo / Campo');

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top