## 테마 조회 ### 테마 아이디로 테마 조회하기 getTheme 메소드를 사용하여 테마 아이디로 테마를 조회할 수 있습니다. php $id = 'theme/myname@mytheme'; $theme = Theme::getTheme($id); ### 모든 테마 조회하기 getAllTheme 메소드를 사용하여 모든 테마 목록을 조회할 수 있습니다. php $themes = Theme::getAllTheme(); 만약 모바일이나 데스크탑 버전을 지원하는 테마 목록을 조회하려면 getAllThemeSupportingMobile, getAllThemeSupportingDesktop 메소드를 사용하십시오. php $mobileThemes = Theme::getAllThemeSupportingMobile(); $desktopThemes = Theme::getAllThemeSupportingDesktop(); ### 관리페이지용 테마 조회하기 XpressEngine은 관리페이지에서 사용되는 테마도 교체 가능합니다. 관리페이지용 테마도 ThemeHandler를 사용하여 조회할 수 있습니다. 하나의 관리페이지용 테마를 조회할 때에는 getTheme를 동일하게 사용할 수 있습니다. php $id = 'settingsTheme/myname@mysettingstheme'; $settingsTheme = Theme::getTheme($id) 모든 관리페이지용 테마 목록을 조회할 때에는 getAllSettingsTheme를 사용하십시오. php $settingsThemes = Theme::getAllSettingsTheme(); ## 사용할 테마 지정하기 XpressEngine에서는 브라우저로부터 요청을 받을 때마다, 응답할 Html을 생성할 때 하나의 테마를 사용합니다. 이때 사용할 테마를 지정해주어야 합니다. (대부분의 경우 XpressEngine 코어에서 자동으로 사용할 테마를 지정해줍니다.) ### 특정 테마를 사용 특정 테마를 응답시 사용하려면 selectTheme 메소드를 사용하십시오. php $id = 'theme/myname@mytheme'; Theme::selectTheme($id); ### 사이트 기본 테마 사용하기 XpressEngine은 아무 테마도 사용할 테마로 지정돼 있지 않을 경우, 기본으로 사용할 테마를 지정해놓고 있습니다. > 사이트관리페이지의 설정 > 사이트 기본설정 메뉴에서 지정할 수 있습니다. 사이트 기본 테마로 지정된 테마를 사용하고 싶을 경우에는 selectSiteTheme를 사용하십시오. php 응답시 사이트 기본 테마가 사용됨 Theme::selectSiteTheme(); ### 테마 사용 안하기 만약 응답시 아무 테마도 출력되지 않도록 하려면 selectBlankTheme 메소드를 사용할 수 있습니다. 테마를 사용하지 않을 경우 순수한 컨텐츠 영역만 출력됩니다. php 응답시 테마 사용 안함. Theme::selectBlankTheme(); ### 지정된 테마 정보 조회 현재 요청에 대한 응답시 사용하기로 지정된 테마를 조회할 수 있습니다. getSelectedTheme 메소드를 사용하십시오. php $selected = Theme::getSelectedTheme(); ## 테마 설정 테마는 사이트 제목, 로고, 출력할 메뉴와 같이 출력할 때 필요한 설정 정보를 사이트 관리자로부터 입력받을 수 있도록 설정 페이지를 제공합니다. 그리고 설정 페이지로부터 입력된 설정 정보를 ThemeHandler를 통해 데이터베이스에 저장하고, 저장된 정보를 조회할 수 있습니다. > 설정 페이지에 대한 자세한 사항은 '테마 만들기' 매뉴얼을 참고하십시오. ### 테마 설정정보 조회하기 getThemeConfig 메소드를 사용하면 특정 테마의 설정 정보를 조회할 수 있습니다. php $id = 'theme/myname@mytheme'; $configs = Theme::getThemeConfig($id); ### 테마 설정정보 저장하기 반대로 setThemeConfig 메소드를 사용하면 특정 테마의 설정 정보를 조회할 수 있습니다. php $id = 'theme/myname@mytheme'; $configs = [ 'site_title' => '내 사이트', 'main_menu' => $menuID, ]; Theme::setThemeConfig($id, $configs);
Author: XE Team (developers) (developers@xpressengine.com)
 public function updateTheme(ThemeHandler $themeHandler, Request $request)
 {
     // resolve theme
     $theme = $request->only(['theme_desktop', 'theme_mobile']);
     $theme = ['desktop' => $theme['theme_desktop'], 'mobile' => $theme['theme_mobile']];
     $themeHandler->setSiteTheme($theme);
     return \Redirect::back()->with('alert', ['type' => 'success', 'message' => '저장되었습니다.']);
 }
 public function editSetting(MenuRetrieveHandler $menuHandler, SiteHandler $siteHandler, ThemeHandler $themeHandler)
 {
     $config = app('xe.site')->getSiteConfig();
     $siteKey = $siteHandler->getCurrentSiteKey();
     $indexInstance = $siteHandler->getHomeInstanceId();
     $menus = $menuHandler->getAllMenu($siteKey);
     $selectedTheme = $themeHandler->getSiteThemeId();
     return \Presenter::make('settings.setting', compact('config', 'selectedTheme', 'menus', 'indexInstance'));
 }
 public function updateSetting(Request $request, ThemeHandler $themeHandler)
 {
     $this->validate($request, ['theme' => 'required']);
     $themeId = $request->get('theme');
     $theme = $themeHandler->getTheme($themeId);
     if (!$theme->hasSetting()) {
         throw new NotSupportSettingException();
     }
     $configInfo = $request->only('_configTitle', '_configId');
     $inputs = $request->except('_token');
     $inputs['_configId'] = $themeId;
     // 해당 테마에게 config를 가공할 수 있는 기회를 준다.
     $config = $theme->resolveSetting($inputs);
     $config = array_merge($configInfo, $config);
     $themeHandler->setThemeConfig($config['_configId'], $config);
     return redirect()->back()->with('alert', ['type' => 'success', 'message' => '저장되었습니다.']);
 }