Как получить конфигурацию хранилища внутри шаблона темы
-
29-09-2020 - |
Вопрос
Я пытаюсь добавить настройку номера телефона магазина в Хранилища > Конфигурация > Общие > Общие сведения > Информация о хранилище к заголовку в моей теме.В модуле, я думаю, это можно было бы сделать с помощью getValue()
в \Magento\Framework\App\Config\ScopeConfigInterface
но я не вижу способа, как использовать это внутри темы.До сих пор я добавлял это к default.xml
<referenceContainer name="header-wrapper">
<block class="Magento\Framework\View\Element\Template" name="store.phone.number" template="Magento_Theme::phone.phtml" />
</referenceContainer>
но я не знаю, как получить номер телефона внутри phone.phtml
Решение
Я предлагаю вам создать свой собственный блок, который расширит Magento\Framework\View\Element\Template
класс.
В качестве Magento\Framework\App\Config\ScopeConfigInterface
является частью Magento\Framework\View\Element\AbstractBlock
(родитель Template
класс), объявленный в $_scopeConfig
, вы можете добавить следующую функцию в свой пользовательский блок:
public function getConfig()
{
return $this->_scopeConfig;
}
Затем в своем шаблоне вы можете сделать:
$block->getConfig()->getValue('value/you/need');
Не забудьте обновить свой макет следующим образом:
<referenceContainer name="header-wrapper">
<block class="Vendor\Module\Block\View\Element\Template" name="store.phone.number" template="Magento_Theme::phone.phtml" />
</referenceContainer>
Другие советы
Мы можем напрямую получить конфигурацию магазина в шаблоне, получая экземпляр Magento\Framework\App\Config\ScopeConfig
:
\Magento\Framework\App\ObjectManager::getInstance()
->get('Magento\Framework\App\Config\ScopeConfigInterface')
->getValue('value/you/need');
.
Технически, когда кто-то просит экземпляр Magento\Framework\App\Config\ScopeConfigInterface
, мы дадим его экземпляром генеракодицетагкода.
Например, мы можем получить настройку по умолчанию для режима сетки или списка:
$productListMode = \Magento\Framework\App\ObjectManager::getInstance()
->get('Magento\Framework\App\Config\ScopeConfigInterface')
->getValue('catalog/frontend/list_mode');
.
Попробуйте это на блоке, он работает для меня после многих поисков
$ isenabled=Magento \ framework \ app \ objectmanager :: getInstance ()
-> Get («Magento \ Framework \ App \ Config \ ScopeConfiginterface») -> GetWalue («Раздел / Группа / поле»);