¿Cómo es posible generar el nombre de la tienda actual en una plantilla personalizada de Magento 2 con un bloque personalizado?
¿Cómo es posible generar el nombre de la tienda actual en una plantilla personalizada de Magento 2 con un bloque personalizado?
Respuestas:
necesitas usar la instancia de \Magento\Framework\App\Config\ScopeConfigInterface
en tu bloque:
Crea el método getStoreName()
public function getStoreName()
{
return $this->_scopeConfig->getValue(
'general/store_information/name',
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);
}
y llame a su plantilla echo $this->getStoreName()
\Magento\Store\Model\StoreManagerInterface $storeManager
en el constructor y public function getStoreName() { return $this->storeManager->getStore()->getName(); }
en lugar de getName()
que puede utilizar getCode()
, getId()
.
Use el administrador de la tienda, que contiene información sobre la tienda activa. Si el bloque personalizado no se hereda del Template
bloque, inyecte dependencia \Magento\Store\Model\StoreManagerInterface
en la construcción.
<?php
namespace VendorName\ModuleName\Block;
class CustomBlock extends \Magento\Framework\View\Element\Template
{
/**
* Get current store name.
*
* @return string
*/
public function getCurrentStoreName()
{
return $this->_storeManager->getStore()->getName();
}
}
Luego en plantilla:
<?php
/**
* @var $block \VendorName\ModuleName\Block\CustomBlock
*/
echo "<h1>Current store name is '{$block->getCurrentStoreName()}'</h1>";
?>
Para obtener un valor de configuración de tienda como general/store_information/name
puede usar lo siguiente
$config = new \Magento\Framework\App\Config\ScopeConfigInterface();
echo $config->getValue('general/store_information/name');
Sin embargo, hacer esto desde un bloque o ayudante sería más limpio. A continuación se muestra una clase auxiliar que existiría en su propio módulo personalizado
namespace [Namespace]\[Module]\Helper;
class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
/**
* Retrieve store name
*
* @return string|null
*/
public function getStoreName()
{
return $this->scopeConfig->getValue(
'general/store_information/name',
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);
}
}
Que inyectarías como dependencia en tu clase de bloque