如何在 magento 2.0 中获取当前活动主题
How to get current active theme in magento 2.0
我在使用 Magento 2.0 时遇到问题。我必须使用我在 magento 1.x 版本中获得的当前活动主题名称,例如:
"Mage::getSingleton('core/design_package')->getPackageName()"
但是我没有得到 Magento 2.0 的任何替代品。请建议我应该使用什么型号或功能。
getSingleton 从 magento 2 中贬值,而不是这个
$object_manager = Magento\Core\Model\ObjectManager::getInstance();
http://magento-quickies.alanstorm.com/post/66167788899/magento-2-replacements-for-getmodel-and
我找到了解决方案:
以下 class 需要依赖:
\Magento\Framework\App\Config\ScopeConfigInterface
\Magento\Store\Model\StoreManagerInterface
\Magento\Framework\View\Design\Theme\ThemeProviderInterface
使用此方法获取当前主题的数据:
public function getTheme()
{
$themeId = $this->_scopeConfig->getValue(
\Magento\Framework\View\DesignInterface::XML_PATH_THEME_ID,
\Magento\Store\Model\ScopeInterface::SCOPE_STORE,
$this->_storeManager->getStore()->getId()
);
/** @var $theme \Magento\Framework\View\Design\ThemeInterface */
$theme = $this->_themeProvider->getThemeById($themeId);
return $theme->getData();
}
您可以使用以下示例获取 Magento 2.0 中当前活动的主题:
use Magento\Framework\View\DesignInterface;
$theme = $this->_design->getDesignTheme()
可以像-
一样获取和检查当前主题
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$appState = $objectManager->get('\Magento\Framework\View\DesignInterface');
if($appState->getDesignTheme()->getCode()=='Mgs/mgsmobile') {
var_dump('Theme is active');
}
第一个注入界面Magento\Framework\View\Design\Theme\ResolverInterface
在构造中
/** @var ThemeInterface $theme */
$theme = $this->themeResolver->get();
我在使用 Magento 2.0 时遇到问题。我必须使用我在 magento 1.x 版本中获得的当前活动主题名称,例如:
"Mage::getSingleton('core/design_package')->getPackageName()"
但是我没有得到 Magento 2.0 的任何替代品。请建议我应该使用什么型号或功能。
getSingleton 从 magento 2 中贬值,而不是这个
$object_manager = Magento\Core\Model\ObjectManager::getInstance();
http://magento-quickies.alanstorm.com/post/66167788899/magento-2-replacements-for-getmodel-and
我找到了解决方案: 以下 class 需要依赖:
\Magento\Framework\App\Config\ScopeConfigInterface
\Magento\Store\Model\StoreManagerInterface
\Magento\Framework\View\Design\Theme\ThemeProviderInterface
使用此方法获取当前主题的数据:
public function getTheme()
{
$themeId = $this->_scopeConfig->getValue(
\Magento\Framework\View\DesignInterface::XML_PATH_THEME_ID,
\Magento\Store\Model\ScopeInterface::SCOPE_STORE,
$this->_storeManager->getStore()->getId()
);
/** @var $theme \Magento\Framework\View\Design\ThemeInterface */
$theme = $this->_themeProvider->getThemeById($themeId);
return $theme->getData();
}
您可以使用以下示例获取 Magento 2.0 中当前活动的主题:
use Magento\Framework\View\DesignInterface;
$theme = $this->_design->getDesignTheme()
可以像-
一样获取和检查当前主题 $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$appState = $objectManager->get('\Magento\Framework\View\DesignInterface');
if($appState->getDesignTheme()->getCode()=='Mgs/mgsmobile') {
var_dump('Theme is active');
}
第一个注入界面Magento\Framework\View\Design\Theme\ResolverInterface 在构造中
/** @var ThemeInterface $theme */
$theme = $this->themeResolver->get();