'settingsSystemMain', 'currencies' => 'settingsSystemCurrencies', ]; } /** * Основные системные настройки модуля * @param array $options @ref * @return string */ public function settingsSystemMain(array &$options = []): string { return $this->template('admin/settings.main', ['options' => &$options]); } /** * Системные настройки валют * @param array $options @ref * @return string */ public function settingsSystemCurrencies(array &$options = []): string { return $this->template('admin/settings.currencies', ['options' => &$options]); } /** * Формирование URL * @param string $key ключ * @param array $params доп. параметры * @param boolean $dynamic динамическая ссылка * @return string */ public function url(string $key, array $params = [], $dynamic = false): string { switch ($key) { # главная страница + geo case 'index-geo': return Geo::url($params, $dynamic); } return $this->router->url($key, $params, ['dynamic' => $dynamic, 'module' => 'site']); } /** * Логотип сайта * Фильтры: 'site.logo.url', 'site.logo.url.{size}.{position}' * @param string $position информация о позиции отображения логотипа * @param string|null $size размер логотипа: static::LOGO_SIZE_NORMAL, static::LOGO_SIZE_SMALL * @return string URL требуемого логотипа */ public function logoURL(string $position = '', ?string $size = null) { static $list; if (! isset($list)) { $list = $this->app->filterSys('site.logo.url.sizes', [ static::LOGO_SIZE_NORMAL => '/img/logo.svg', static::LOGO_SIZE_SMALL => '/img/logo.svg', ]); } $size = $size ?? static::LOGO_SIZE_NORMAL; if (! isset($list[$size])) { $size = key($list); } $url = $this->app->filterSys('site.logo.url.' . $position, $list[$size], $size); return (mb_stripos($url, SITEURL_STATIC) === 0 ? $url : $this->app->url($url)); } /** * Формирование списка директорий/файлов требующих проверки на наличие прав записи * @return array */ public function writableCheck() { return array_merge(parent::writableCheck(), [ $this->app->publicPath('files') => 'dir-only', # sitemap.xml $this->app->publicPath('files/sitemap.xml') => 'file-e', # файл sitemap.xml # sphinx $this->app->basePath('config/sphinx.conf') => 'file', # автогенерируемый конфиг sphinx $this->app->basePath('files/sphinx') => 'dir-only', ]); } /** * Получаем замену макроса по его ключу * @param string $key ключ макроса * @param string|null $lang ключ языка * @return string */ protected function getMenuMacrosReplacement($key, ?string $lang = null) { if ($key === static::MENU_MACROS_SITEURL) { if (Request::isRobot()) { return Geo::url(Geo::filterUrl(), false, false); # seo } return Geo::url(Geo::filter('url'), false, false); # user } return parent::getMenuMacrosReplacement($key, $lang); } }