/** * Gets a constant * * @param string $constant The name of the constant * @return string Constant-Value * * = Examples = * * <code title="Example"> * <theme:constant constant="themes.configuration.baseurl" /> * </code> * <output> * http://yourdomain.tld/ * (depending on your domain) * </output> */ public function render($constant = '') { $pageWithTheme = \KayStrobach\Themes\Utilities\FindParentPageWithThemeUtility::find($this->getFrontendController()->id); $pageLanguage = (int) GeneralUtility::_GP('L'); // instantiate the cache /** @var \TYPO3\CMS\Core\Cache\Frontend\FrontendInterface $cache */ $cache = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Cache\\CacheManager')->getCache('themes_cache'); $cacheLifeTime = 60 * 60 * 24 * 7 * 365 * 20; $cacheIdentifierString = 'theme-of-page-' . $pageWithTheme . '-of-language-' . $pageLanguage; $cacheIdentifier = sha1($cacheIdentifierString); // If flatSetup is available, cache it $flatSetup = $this->getFrontendController()->tmpl->flatSetup; if (isset($flatSetup) && is_array($flatSetup) && count($flatSetup) > 0) { $cache->set($cacheIdentifier, $flatSetup, array('page-' . $this->getFrontendController()->id), $cacheLifeTime); } else { $flatSetup = $cache->get($cacheIdentifier); } // If flatSetup not available and not cached, generate it! if (!isset($flatSetup) || !is_array($flatSetup)) { $this->getFrontendController()->tmpl->generateConfig(); $flatSetup = $this->getFrontendController()->tmpl->flatSetup; $cache->set($cacheIdentifier, $flatSetup, array('page-' . $this->getFrontendController()->id), $cacheLifeTime); } // check if there is a value and return it if (is_array($flatSetup) && array_key_exists($constant, $flatSetup)) { return $this->getFrontendController()->tmpl->substituteConstants($flatSetup[$constant]); } return NULL; }
/** * show available constants. * * @return void */ public function indexAction() { $this->view->assign('selectableThemes', $this->themeRepository->findAll()); $selectedTheme = $this->themeRepository->findByPageId($this->id); if ($selectedTheme !== null) { $nearestPageWithTheme = $this->id; $this->view->assign('selectedTheme', $selectedTheme); $this->view->assign('categories', $this->renderFields($this->tsParser, $this->id, $this->allowedCategories, $this->deniedFields)); $categoriesFilterSettings = $this->getBackendUser()->getModuleData('mod-web_ThemesMod1/Categories/Filter/Settings', 'ses'); if ($categoriesFilterSettings === null) { $categoriesFilterSettings = []; $categoriesFilterSettings['searchScope'] = 'all'; $categoriesFilterSettings['showBasic'] = '1'; $categoriesFilterSettings['showAdvanced'] = '0'; $categoriesFilterSettings['showExpert'] = '0'; } $this->view->assign('categoriesFilterSettings', $categoriesFilterSettings); } elseif ($this->id !== 0) { $nearestPageWithTheme = FindParentPageWithThemeUtility::find($this->id); } else { $nearestPageWithTheme = 0; } $this->view->assignMultiple(['pid' => $this->id, 'nearestPageWithTheme' => $nearestPageWithTheme, 'themeIsSelectable' => CheckPageUtility::hasThemeableSysTemplateRecord($this->id)]); }