Cómo obtener la configuración de la tienda dentro de una plantilla de tema
-
29-09-2020 - |
Pregunta
Estoy intentando agregar la configuración del número de teléfono de la tienda en Tiendas > Configuración > General > General > Información de la tienda al encabezado de mi tema.En un módulo creo que esto podría hacerse usando getValue()
en \Magento\Framework\App\Config\ScopeConfigInterface
pero no veo la manera de utilizar esto dentro de un tema.Hasta ahora he agregado esto a default.xml
<referenceContainer name="header-wrapper">
<block class="Magento\Framework\View\Element\Template" name="store.phone.number" template="Magento_Theme::phone.phtml" />
</referenceContainer>
pero no se como meter el numero de telefono adentro phone.phtml
Solución
Te sugiero que crees tu propio bloque, que ampliará el Magento\Framework\View\Element\Template
clase.
como el Magento\Framework\App\Config\ScopeConfigInterface
es parte de Magento\Framework\View\Element\AbstractBlock
(el padre del Template
clase) declarado en $_scopeConfig
, puede agregar la siguiente función a su bloque personalizado:
public function getConfig()
{
return $this->_scopeConfig;
}
Luego en tu plantilla puedes hacer:
$block->getConfig()->getValue('value/you/need');
No olvides actualizar tu diseño de esta manera:
<referenceContainer name="header-wrapper">
<block class="Vendor\Module\Block\View\Element\Template" name="store.phone.number" template="Magento_Theme::phone.phtml" />
</referenceContainer>
Otros consejos
Podemos obtener directamente una configuración de tienda en la plantilla obteniendo una instancia de Magento\Framework\App\Config\ScopeConfig
:
\Magento\Framework\App\ObjectManager::getInstance()
->get('Magento\Framework\App\Config\ScopeConfigInterface')
->getValue('value/you/need');
Técnicamente, cuando alguien pide una instancia de Magento\Framework\App\Config\ScopeConfigInterface
, le daremos una instancia del Magento\Framework\App\Config\ScopeConfig
.Por ejemplo, podemos obtener la configuración predeterminada para el modo de cuadrícula o de lista:
$productListMode = \Magento\Framework\App\ObjectManager::getInstance()
->get('Magento\Framework\App\Config\ScopeConfigInterface')
->getValue('catalog/frontend/list_mode');
Nota: Evitar el uso directo del Administrador de objetos.Debemos mantener nuestras plantillas limpias.Intente agregar configuración al bloque.Debería seguir la respuesta de @Raphael.
Pruebe esto en Block, me está funcionando después de muchas búsquedas.
$isEnabled = \Magento\Framework\App\ObjectManager::getInstance()
->get('Magento\Framework\App\Config\ScopeConfigInterface') ->getValue('sección/grupo/campo');