¿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\ScopeConfigInterfaceen 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 Templatebloque, inyecte dependencia \Magento\Store\Model\StoreManagerInterfaceen 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/namepuede 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