/** * {@inheritdoc} */ public function getThemeCustomizations($area = \Magento\Framework\App\Area::AREA_FRONTEND, $type = \Magento\Framework\View\Design\ThemeInterface::TYPE_VIRTUAL) { /** @var $themeCollection \Magento\Theme\Model\Resource\Theme\Collection */ $themeCollection = $this->collectionFactory->create(); $themeCollection->addAreaFilter($area)->addTypeFilter($type); return $themeCollection; }
/** * {@inheritdoc} */ public function run() { $this->logger->log('Installing Widgets:'); $pageGroupConfig = ['pages' => ['block' => '', 'for' => 'all', 'layout_handle' => 'default', 'template' => 'widget/static_block/default.phtml', 'page_id' => ''], 'all_pages' => ['block' => '', 'for' => 'all', 'layout_handle' => 'default', 'template' => 'widget/static_block/default.phtml', 'page_id' => ''], 'anchor_categories' => ['entities' => '', 'block' => '', 'for' => 'all', 'is_anchor_only' => 0, 'layout_handle' => 'catalog_category_view_type_layered', 'template' => 'widget/static_block/default.phtml', 'page_id' => '']]; foreach ($this->fixtures as $file) { $fileName = $this->fixtureHelper->getPath($file); $csvReader = $this->csvReaderFactory->create(['fileName' => $fileName, 'mode' => 'r']); foreach ($csvReader as $row) { $block = $this->cmsBlockFactory->create()->load($row['block_identifier'], 'identifier'); if (!$block) { continue; } $widgetInstance = $this->widgetFactory->create(); $code = $row['type_code']; $themeId = $this->themeCollectionFactory->create()->getThemeByFullPath($row['theme_path'])->getId(); $type = $widgetInstance->getWidgetReference('code', $code, 'type'); $pageGroup = []; $group = $row['page_group']; $pageGroup['page_group'] = $group; $pageGroup[$group] = array_merge($pageGroupConfig[$group], unserialize($row['group_data'])); if (!empty($pageGroup[$group]['entities'])) { $pageGroup[$group]['entities'] = $this->getCategoryByUrlKey($pageGroup[$group]['entities'])->getId(); } $widgetInstance->setType($type)->setCode($code)->setThemeId($themeId); $widgetInstance->setTitle($row['title'])->setStoreIds([\Magento\Store\Model\Store::DEFAULT_STORE_ID])->setWidgetParameters(['block_id' => $block->getId()])->setPageGroups([$pageGroup]); $widgetInstance->save(); $this->logger->logInline('.'); } } }
/** * Retrieve instance of a theme currently used in an area * * @return \Magento\Framework\View\Design\ThemeInterface */ public function get() { $area = $this->appState->getAreaCode(); if ($this->design->getDesignTheme()->getArea() == $area || $this->design->getArea() == $area) { return $this->design->getDesignTheme(); } /** @var \Magento\Theme\Model\Resource\Theme\Collection $themeCollection */ $themeCollection = $this->themeFactory->create(); $themeIdentifier = $this->design->getConfigurationDesignTheme($area); if (is_numeric($themeIdentifier)) { $result = $themeCollection->getItemById($themeIdentifier); } else { $themeFullPath = $area . \Magento\Framework\View\Design\ThemeInterface::PATH_SEPARATOR . $themeIdentifier; $result = $themeCollection->getThemeByFullPath($themeFullPath); } return $result; }
/** * Assign Theme * * @return void */ protected function assignTheme() { $themes = $this->collectionFactory->create()->loadRegisteredThemes(); /** @var \Magento\Theme\Model\Theme $theme */ foreach ($themes as $theme) { if ($theme->getCode() == 'Magento/luma') { $this->config->assignToStore($theme, [Store::DEFAULT_STORE_ID], ScopeInterface::SCOPE_DEFAULT); } } }
/** * @return \Magento\Theme\Model\Resource\Theme\Collection */ public function createThemeResourceFactory() { return $this->_themeResourceFactory->create(); }
/** * Retrieve theme instance by its identifier * * @param int $themeId * @return \Magento\Theme\Model\Theme|null */ protected function _getThemeInstance($themeId) { /** @var \Magento\Theme\Model\Resource\Theme\Collection $themeCollection */ $themeCollection = $this->_themesFactory->create(); return $themeCollection->getItemById($themeId); }