Как получить конфигурацию хранилища внутри шаблона темы

magento.stackexchange https://magento.stackexchange.com/questions/111968

  •  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');
.

Примечание: избегая использования менеджера объекта напрямую .Мы должны держать наши шаблоны чистыми.Попробуйте добавить конфиг в блок.Следует следовать ответу @Raphael.

Попробуйте это на блоке, он работает для меня после многих поисков

$ isenabled=Magento \ framework \ app \ objectmanager :: getInstance ()

-> Get («Magento \ Framework \ App \ Config \ ScopeConfiginterface») -> GetWalue («Раздел / Группа / поле»);

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top