/** * Default homepage * * @return string */ public function EventDefault() { E::ModuleViewer()->Assign('sMenuHeadItemSelect', 'homepage'); $sHomepage = Config::Get('router.config.homepage'); if ($sHomepage) { $sHomepageSelect = Config::Get('router.config.homepage_select'); if ($sHomepageSelect == 'page') { // if page not active or deleted then this homepage is off $oPage = E::ModulePage()->GetPageByUrlFull($sHomepage, 1); if ($oPage) { $sHomepage = $oPage->getUrlPath(); } else { $sHomepage = ''; } } else { if ($sHomepageSelect == 'category_homepage') { $sHomepageSelect = 'plugin-category-homepage'; } $aHomePageSelect = explode('-', $sHomepageSelect); // if homepage was from plugin and plugin is not active then this homepage is off if ($aHomePageSelect[0] == 'plugin' && isset($aHomePageSelect[1])) { if (!E::ActivePlugin($aHomePageSelect[1])) { $sHomepage = ''; } } } if ($sHomepage == 'home') { if (E::ModuleViewer()->TemplateExists('actions/homepage/action.homepage.index.tpl')) { $this->SetTemplateAction('index'); return; } } elseif ($sHomepage) { return R::Action($sHomepage); } } return R::Action('index'); }
/** * Возвращает ссылку фото определенного размера * * @param string|null $xSize Размер фото, например, '100' или '150crop' или '150x100' или 'x100' * * @return null|string */ public function getLink($xSize = null) { if ($sUrl = $this->getPath()) { if ($xSize) { $sResizedUrl = $this->getProp('_size-' . $xSize . '-url'); if ($sResizedUrl) { return $sResizedUrl; } $aPathInfo = pathinfo($sUrl); if (E::ActivePlugin('ls')) { // Включена совместимость с LS $sResizedUrl = $aPathInfo['dirname'] . '/' . $aPathInfo['filename'] . '_' . $xSize . '.' . $aPathInfo['extension']; if (F::File_LocalUrl($sResizedUrl) && !F::File_Exists(F::File_Url2Dir($sResizedUrl))) { $sResizedUrl = ''; } } if (!$sResizedUrl) { $sModSuffix = F::File_ImgModSuffix($xSize, $aPathInfo['extension']); if ($sModSuffix) { $sResizedUrl = $sUrl . $sModSuffix; if (Config::Get('module.image.autoresize')) { $sFile = E::ModuleUploader()->Url2Dir($sResizedUrl); $this->setProp('_size-' . $xSize . '-file', $sFile); if (!F::File_Exists($sFile)) { E::ModuleImg()->Duplicate($sFile); } } } } if ($sResizedUrl) { $sUrl = F::File_NormPath($sResizedUrl); } $this->setProp('_size-' . $xSize . '-url', $sUrl); } } return $sUrl; }
/** * Выполняет загрузку необходимых (возможно даже системных :)) переменных в шаблонизатор */ public function VarAssign() { // * Загружаем весь $_REQUEST, предварительно обработав его функцией F::HtmlSpecialChars() $aRequest = $_REQUEST; F::HtmlSpecialChars($aRequest); $this->Assign('_aRequest', $aRequest); // * Параметры стандартной сессии // TODO: Убрать! Не должно этого быть на страницах сайта $this->Assign('_sPhpSessionName', session_name()); $this->Assign('_sPhpSessionId', session_id()); // * Загружаем роутинг с учетом правил rewrite $aRouter = array(); $aPages = Config::Get('router.page'); if (!$aPages || !is_array($aPages)) { throw new Exception('Router rules is underfined.'); } foreach ($aPages as $sPage => $aAction) { $aRouter[$sPage] = R::GetPath($sPage); } $this->Assign('aRouter', $aRouter); // * Загружаем виджеты $this->Assign('aWidgets', $this->GetWidgets()); // * Загружаем HTML заголовки $this->Assign('sHtmlTitle', $this->GetHtmlTitle()); $this->Assign('sHtmlKeywords', $this->GetHtmlKeywords()); $this->Assign('sHtmlDescription', $this->GetHtmlDescription()); $this->Assign('aHtmlHeadFiles', $this->aHtmlHeadFiles); $this->Assign('aHtmlRssAlternate', $this->aHtmlRssAlternate); $this->Assign('sHtmlCanonical', $this->sHtmlCanonical); $this->Assign('aHtmlHeadTags', $this->aHtmlHeadTags); $this->Assign('aJsAssets', E::ModuleViewerAsset()->GetPreparedAssetLinks()); // * Загружаем список активных плагинов $aPlugins = E::GetActivePlugins(); $this->Assign('aPluginActive', array_fill_keys(array_keys($aPlugins), true)); // * Загружаем пути до шаблонов плагинов $aPluginsTemplateUrl = array(); $aPluginsTemplateDir = array(); /** @var Plugin $oPlugin */ foreach ($aPlugins as $sPlugin => $oPlugin) { $sDir = Plugin::GetTemplateDir(get_class($oPlugin)); if ($sDir) { $this->oSmarty->addTemplateDir(array($sDir . 'tpls/', $sDir), $oPlugin->GetName(false)); $aPluginsTemplateDir[$sPlugin] = $sDir; $aPluginsTemplateUrl[$sPlugin] = Plugin::GetTemplateUrl(get_class($oPlugin)); } } if (E::ActivePlugin('ls')) { // LS-compatible // $this->Assign('aTemplateWebPathPlugin', $aPluginsTemplateUrl); $this->Assign('aTemplatePathPlugin', $aPluginsTemplateDir); } $sSkinTheme = $this->GetConfigTheme(); if (!$sSkinTheme) { $sSkinTheme = 'default'; } // Проверка существования темы if ($this->CheckTheme($sSkinTheme)) { $this->oSmarty->compile_id = $sSkinTheme; } $this->Assign('sSkinTheme', $sSkinTheme); }
/** * Вызывается по строке "check_plugin" * @param $aPlugins * @return bool */ public function CheckPlugin($aPlugins) { if (is_string($aPlugins)) { $aPlugins = array($aPlugins); } $bResult = FALSE; foreach ($aPlugins as $sPluginName) { $bResult = $bResult || E::ActivePlugin($sPluginName); if ($bResult) { break; } continue; } return $bResult; }