/** * Create 'staging' theme associated with current 'virtual' theme * * @return \Magento\Framework\View\Design\ThemeInterface */ protected function _createStagingTheme() { $stagingTheme = $this->_themeFactory->create(); $stagingTheme->setData(['parent_id' => $this->_theme->getId(), 'theme_path' => null, 'theme_title' => sprintf('%s - Staging', $this->_theme->getThemeTitle()), 'preview_image' => $this->_theme->getPreviewImage(), 'is_featured' => $this->_theme->getIsFeatured(), 'type' => \Magento\Framework\View\Design\ThemeInterface::TYPE_STAGING]); $stagingTheme->save(); return $stagingTheme; }
/** * Get path to preview image * * @param ThemeInterface $theme * @return string */ public function getPreviewImagePath(ThemeInterface $theme) { return $this->mediaDirectory->getAbsolutePath(self::PREVIEW_DIRECTORY_PATH . '/' . $theme->getPreviewImage()); }
/** * Save preview image for theme * * @param ThemeInterface $theme * @return $this */ protected function _savePreviewImage(ThemeInterface $theme) { $themeDirectory = $theme->getCustomization()->getThemeFilesPath(); if (!$theme->getPreviewImage() || !$themeDirectory) { return $this; } $imagePath = $themeDirectory . '/' . $theme->getPreviewImage(); if (0 === strpos($imagePath, $themeDirectory)) { $theme->getThemeImage()->createPreviewImage($imagePath); } return $this; }
/** * Get url of theme preview image * * @return string */ public function getPreviewImageUrl() { $previewImage = $this->theme->getPreviewImage(); return empty($previewImage) ? $this->themeImagePath->getPreviewImageDefaultUrl() : $this->themeImagePath->getPreviewImageUrl($this->theme); }
/** * Get path to preview image * * @param \Magento\Core\Model\Theme|ThemeInterface $theme * @return string */ public function getPreviewImagePath(ThemeInterface $theme) { return $theme->isPhysical() ? $this->assetRepo->createAsset($theme->getPreviewImage(), ['area' => $theme->getData('area'), 'themeModel' => $theme])->getSourceFile() : $this->mediaDirectory->getAbsolutePath(self::PREVIEW_DIRECTORY_PATH . '/' . $theme->getPreviewImage()); }