Як отримати назву магазину в шаблоні?


13

Як можливо вивести поточну назву магазину в користувальницький шаблон Magento 2 за допомогою спеціального блоку?


який шаблон ??
Маріус

нестандартний шаблон за допомогою користувацького блоку
Домінік Баран

Відповіді:


17

вам потрібно використовувати екземпляр \Magento\Framework\App\Config\ScopeConfigInterfaceу своєму блоці:

Створіть метод getStoreName()

public function getStoreName()
{
    return $this->_scopeConfig->getValue(
        'general/store_information/name',
        \Magento\Store\Model\ScopeInterface::SCOPE_STORE
    );
}

і зателефонуйте у свій шаблон echo $this->getStoreName()


Виглядає як чудове рішення, але я отримую таку помилку: Фатальна помилка: Виклик до відправки функції члена () на не-об'єкт в /vendor/magento/framework/View/Element/Ab абстрактBlock.php на лінії 637.
Домінік Баран

очистити папку var / generation
Marius

1
@Marius підхід правильний, але це не спрацювало для мене. Замість цього я використовував \Magento\Store\Model\StoreManagerInterface $storeManager в конструкторі public function getStoreName() { return $this->storeManager->getStore()->getName(); } Замість getName()ви можете використовувати getCode(), getId().
Разван

9

Використовуйте менеджер магазину, який містить інформацію про активний магазин. Якщо користувацький блок не успадковується від Templateблоку, введіть залежність від \Magento\Store\Model\StoreManagerInterfaceв конструкцію.

<?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();
    }
}

Потім у шаблоні:

<?php
/**
 * @var $block \VendorName\ModuleName\Block\CustomBlock
 */
echo "<h1>Current store name is '{$block->getCurrentStoreName()}'</h1>";
?>

Дякуємо за ваше рішення, але я не хочу показувати назву перегляду магазину. Шукав назву конфігурації магазину.
Домінік Баран

4

Щоб отримати таке значення конфігурації магазину, general/store_information/nameви можете скористатися наступним

$config = new \Magento\Framework\App\Config\ScopeConfigInterface();

echo $config->getValue('general/store_information/name');

Однак робити це з боку блоку чи помічника було б чистіше. Нижче наведено клас помічників, який існував би у вашому власному користувальницькому модулі

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
        );
    }
}

Що б ви ввели як залежність у своєму блоковому класі

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.