Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在magento 2.0中获取当前活动主题_Magento_Magento 2.0 - Fatal编程技术网

如何在magento 2.0中获取当前活动主题

如何在magento 2.0中获取当前活动主题,magento,magento-2.0,Magento,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();

我在使用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();
我找到了解决办法: 以下类需要具有依赖关系:

\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();
如果$theme上的值为null,请使用\Magento\Framework\View\Design\theme\ThemeProvider,而不是\Magento\Framework\View\Design\theme\ThemeProviderInterface