Jak uzyskać nazwę sklepu w szablonie?

13

Jak można wyświetlić bieżącą nazwę sklepu w niestandardowym szablonie Magento 2 z niestandardowym blokiem?

Dominik Barann
źródło
jaki szablon?
Marius
szablon niestandardowy przy użyciu niestandardowego bloku
Dominik Barann

Odpowiedzi:

17

musisz użyć wystąpienia \Magento\Framework\App\Config\ScopeConfigInterfacew swoim bloku:

Utwórz metodę getStoreName()

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

i zadzwoń do swojego szablonu echo $this->getStoreName()

Marius
źródło
Loos to świetne rozwiązanie, ale pojawia się następujący błąd: Błąd krytyczny: wywołanie funkcji członka dispatch () na obiekcie niebędącym obiektem w /vendor/magento/framework/View/Element/AbstractBlock.php w linii 637.
Dominik Barann
wyczyść folder var / generation
Marius
1
Podejście @Marius jest słuszne, ale dla mnie nie zadziałało. Zamiast Użyłem \Magento\Store\Model\StoreManagerInterface $storeManager w konstruktorze i public function getStoreName() { return $this->storeManager->getStore()->getName(); } Zamiast getName()można użyć getCode(), getId().
Razvan
9

Użyj menedżera sklepu, który przechowuje informacje o aktywnym sklepie. Jeśli blok niestandardowy nie jest dziedziczony z Templatebloku, wstaw zależność \Magento\Store\Model\StoreManagerInterfacew konstrukcji.

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

Następnie w szablonie:

<?php
/**
 * @var $block \VendorName\ModuleName\Block\CustomBlock
 */
echo "<h1>Current store name is '{$block->getCurrentStoreName()}'</h1>";
?>
Alex Paliarush
źródło
Dzięki za rozwiązanie, ale nie chcę wyświetlać nazwy widoku sklepu. Szukano nazwy konfiguracji sklepu.
Dominik Barann
4

Aby uzyskać wartość konfiguracji sklepu general/store_information/name, możesz użyć następujących

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

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

Jednak robienie tego z bloku lub pomocnika byłoby czystsze. Poniżej znajduje się klasa pomocnicza, która istniałaby we własnym module niestandardowym

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

Który wstrzyknąłbyś jako zależność w swojej klasie bloków

Sander Mangel
źródło