Come ottenere Config Store all'interno di un modello di tema
-
29-09-2020 - |
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
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');