SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
홍성범
XpressEngine 커뮤니티 개발그룹
오늘의 발표는
테마?
테마의 구성
무엇을 알아야 하나?
스킨?
스킨의 구성
테마 패키지
테마
화면의 레이아웃과 디자인을 결정짓는 가장 중요한 요소
XE1에서는 'layout'이라 불렀음.
레이아웃을 결정한다.
화면의 이만큼을 담당합니다.
XE1과의 비교
비교항목 XE1 레이아웃 XE3 테마
템플릿 엔진
XE 자체 템플릿 문법,
2가지 버전
Blade
설정 편하다 자유롭다
패키지(묶음배포) 불가능 가능(플러그인)
테마는
어떻게 구성되어 있나?
필수 파일들
MyTheme.php
theme.blade.php
composer.json
MyTheme.php
Theme의 출력을 담당합니다.
<?php

namespace MyPlugin;



use XpressengineThemeAbstractTheme;



class MyTheme extends AbstractTheme

{

public function render()

{
// add code
return View::make('myplugin::views.theme');

}

}

composer.json
Theme를 등록할 때 필요합니다.
...
"extra": {

"xpressengine": {

"title": "my plugin",

"component": {

"theme/myplugin@mytheme": {

"class": "MyPluginTheme",

"name": "my theme",

"description": "this is my theme",

"screenshot": "screenshot.jpg"

},

}

}

},
...
theme/myplugin@mytheme
theme.blade.php
Template 파일
Blade 템플릿 문법을 사용
{!! $content !!}
더 알아야할 것들
Blade Template
Laravel에서 제공하는 Template Engine
매뉴얼
http://laravel.com/docs/5.1/blade
http://xpressengine.github.io/laravel-korean-docs/
docs/5.0/templates (한글)


{{-- 데이터 출력 --}}

{{ $title }}

{!! $description !!}



{{-- 조건문 --}}

@if($title == '')

@endif



{{-- 반복문 --}}

@foreach($posts as $post)

@endforeach



{{-- 레이아웃 구성 --}}

@include('view.name')



@section('sidebar')

@endsection



@yield('content')



@extends('view.layout')

JS, CSS 파일 로드
Frontend를 사용하세요.
중복 로드 처리
우선순위 지정
위치 지정
기타 기능 - 메타태그 추가, 브라우저타이틀 지정...
Frontend::css('assets/vendor/bootstrap/css/bootstrap.css')->load();
Frontend::css(

[

'assets/common/css/grid.css',

'assets/common/css/webfont.css',

'assets/common/css/badge.css'

]

)->before('assets/vendor/bootstrap/css/bootstrap.css')->load();
Frontend::js(

[

'assets/vendor/html5shiv/dist/html5shiv.min.js',

'assets/vendor/respond/dest/respond.min.js'

]

)->appendTo('head')->target('lt IE 9')->load();
테마 편집
사이트 관리자가
테마를 고칠수 있게..
<?php

namespace MyPlugin;



use XpressengineThemeAbstractTheme;



class Theme extends AbstractTheme

{



public static function getEditFiles()

{

return [

'template' => [

'plugins/myplugin/views/theme.blade.php',

],

'stylesheet' => [

'plugins/myplugin/assets/css/style.css',

]

];



}


public function render()

{

return View::make('myplugin::views.theme');

}



}
테마 설정
각 테마가 알아서 설정 페이지를 작성합니다..
PHP 코드... 작성해야 합니다.
좀 어려울수 있지만, 완전 자유롭습니다.
<?xml version="1.0" encoding="UTF-8"?>

<layout version="0.2">

<title xml:lang="ko">doorweb basic 레이아웃</title>

<title xml:lang="en">doorweb basic Layout</title>

<description xml:lang="ko">doorweb_basic 레이아웃.</description>

<description xml:lang="en">doorweb_basic layout.</description>

<version>1.7.7</version>

<date>2015-01-27</date>

<author email_address="doorweb1@gmail.com" link="http://doorweb.net/xe">

<name xml:lang="ko">DoorWeb</name>

<name xml:lang="en">DoorWeb</name>

</author>

<menus>

<menu name="main_menu" maxdepth="3" default="true">

모바일
Responsible Web Design
모든 데이터를 모든 장치에게 다
보낼것인가?
Hybrid Web Design
Hybrid Web Design
Hybrid Web Design
Hybrid Web Design
@mobileonly

..... code for mobile
@endmobileonly


-----------------------------------------------------------------

@desktoponly
..... code for desktop


@enddesktoponly

셋팅 테마
관리페이지용 테마
셋팅테마도 바꿀 수 있습니다.
스킨
화면의 이만큼을 담당합니다.
XE1
- 모듈스킨, 위젯스킨 존재, 따로 따로 등록
XE3
- "스킨"
- 모든 것에 스킨을 적용할 수 있다.
회원 인증 페이지 스킨(로그인, 가입 관련)
member/auth/skin/myplugin@myauth
게시판 스킨
module/board@board/skin/myplugin@myboard
member/auth/skin/myplugin@myauth
패키지로 배포하세요.
(묶음배포)
인덱스 테마, 서브테마, 심플테마.
게시판스킨
회원인증 스킨, 회원프로필 스킨
위젯 스킨들...
...
"extra": {

"xpressengine": {

"title": "my plugin",
"component": {

"theme/alice@main": {

"class": "XpressenginePluginsAliceThemeMain",

"name": "Alice (for main)",

"description": "The First Theme for XpressEngine3. use this to index page",

"screenshot": "/plugins/alice/screenshots/main.png"

},

"theme/alice@sub": {

"class": "XpressenginePluginsAliceThemeSub",

"name": "Alice (for sub)",

"description": "The First Theme for XpressEngine3. use this to sub page",

"screenshot": "/plugins/alice/screenshots/sub.png"

},

"module/board@board/skin/alice@site": {

"class": "XpressenginePluginsAliceSkinBoard",

"name": "Alice (for site default)",

"description": "Board Skin",

"screenshot": "/plugins/alice/screenshots/board.png"

}


}

}

},
...
테마 제작자 분들의 수준이 높아짐.
더 자유롭게..
자유성과 함께 편의 제공을 위해 계속 노력할 것이다.
Theme Generator, Theme Config Generator
감사합니다.

Contenu connexe

En vedette

Aula 3 prática jurídica simulada cível - 2012-2
Aula 3   prática jurídica simulada cível - 2012-2Aula 3   prática jurídica simulada cível - 2012-2
Aula 3 prática jurídica simulada cível - 2012-2
anderlon Rangel
 

En vedette (10)

On thi thue
On thi thueOn thi thue
On thi thue
 
2. he thong cau hoi luat quan ly thue
2. he thong cau hoi luat quan ly thue2. he thong cau hoi luat quan ly thue
2. he thong cau hoi luat quan ly thue
 
Trabajo de matemáticas
Trabajo de matemáticasTrabajo de matemáticas
Trabajo de matemáticas
 
1218曾衍彰長老 感恩與成長
1218曾衍彰長老 感恩與成長1218曾衍彰長老 感恩與成長
1218曾衍彰長老 感恩與成長
 
Bài giảng "Kế toán thuế"
Bài giảng "Kế toán thuế"Bài giảng "Kế toán thuế"
Bài giảng "Kế toán thuế"
 
[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들
[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들
[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들
 
Aula 3 prática jurídica simulada cível - 2012-2
Aula 3   prática jurídica simulada cível - 2012-2Aula 3   prática jurídica simulada cível - 2012-2
Aula 3 prática jurídica simulada cível - 2012-2
 
[Nexsys] 넥시스 회사소개서 v5
[Nexsys] 넥시스 회사소개서 v5 [Nexsys] 넥시스 회사소개서 v5
[Nexsys] 넥시스 회사소개서 v5
 
Giới thiệu về công ty Hiếu Đức
Giới thiệu về công ty Hiếu ĐứcGiới thiệu về công ty Hiếu Đức
Giới thiệu về công ty Hiếu Đức
 
desjNama deskripsi jenis
desjNama deskripsi jenisdesjNama deskripsi jenis
desjNama deskripsi jenis
 

Similaire à XECon2015 :: [2-3] 홍성범 - XE3 Theme 제작 소개

컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기
우영 주
 
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
yongwoo Jeon
 
모바일 코딩의 종류
모바일 코딩의 종류모바일 코딩의 종류
모바일 코딩의 종류
승제 이
 
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차
Michael Yang
 
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
탑크리에듀(구로디지털단지역3번출구 2분거리)
 

Similaire à XECon2015 :: [2-3] 홍성범 - XE3 Theme 제작 소개 (20)

XE Open seminar 테마만들기
XE Open seminar 테마만들기XE Open seminar 테마만들기
XE Open seminar 테마만들기
 
What's new in IE11
What's new in IE11What's new in IE11
What's new in IE11
 
컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기
 
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
Html5 앱과 웹사이트를 보다 빠르게 하는 50가지
 
[KGIT_EWD]class03 0322
[KGIT_EWD]class03 0322[KGIT_EWD]class03 0322
[KGIT_EWD]class03 0322
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
 
XE 모듈 개발 - 걸음마부터 날기까지 - 날기
XE 모듈 개발 - 걸음마부터 날기까지 - 날기XE 모듈 개발 - 걸음마부터 날기까지 - 날기
XE 모듈 개발 - 걸음마부터 날기까지 - 날기
 
XE 오픈 세미나(2014 05) - XE 모듈 강의 - 날기
XE 오픈 세미나(2014 05) - XE 모듈 강의 - 날기XE 오픈 세미나(2014 05) - XE 모듈 강의 - 날기
XE 오픈 세미나(2014 05) - XE 모듈 강의 - 날기
 
[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridapp[D2 오픈세미나]3.web view hybridapp
[D2 오픈세미나]3.web view hybridapp
 
XpressEngine : 보드에서 CMS로
XpressEngine : 보드에서 CMS로XpressEngine : 보드에서 CMS로
XpressEngine : 보드에서 CMS로
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
 
응답하라 반응형웹 - 3. bootstrap
응답하라 반응형웹 - 3. bootstrap응답하라 반응형웹 - 3. bootstrap
응답하라 반응형웹 - 3. bootstrap
 
Electron forge
Electron forgeElectron forge
Electron forge
 
모바일 코딩의 종류
모바일 코딩의 종류모바일 코딩의 종류
모바일 코딩의 종류
 
웹기술 이해 (프론트엔드 기초)
웹기술 이해 (프론트엔드 기초)웹기술 이해 (프론트엔드 기초)
웹기술 이해 (프론트엔드 기초)
 
Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기Django를 Django답게, Django로 뉴스 사이트 만들기
Django를 Django답게, Django로 뉴스 사이트 만들기
 
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 7일차
 
처음부터 다시 배우는 HTML5 & CSS3 강의자료 4일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 4일차처음부터 다시 배우는 HTML5 & CSS3 강의자료 4일차
처음부터 다시 배우는 HTML5 & CSS3 강의자료 4일차
 
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
 
Meteor React Tutorial 따라하기
Meteor React Tutorial 따라하기Meteor React Tutorial 따라하기
Meteor React Tutorial 따라하기
 

Plus de XpressEngine

[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기
[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기
[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기
XpressEngine
 

Plus de XpressEngine (20)

Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2
 
Github 100% 활용하기 - XE Open seminar #3
Github 100% 활용하기 - XE Open seminar #3Github 100% 활용하기 - XE Open seminar #3
Github 100% 활용하기 - XE Open seminar #3
 
XE3 SEO를 다루기 - XE Open seminar #2
XE3 SEO를 다루기 - XE Open seminar #2XE3 SEO를 다루기 - XE Open seminar #2
XE3 SEO를 다루기 - XE Open seminar #2
 
XE Open seminar #2 - keynote
XE Open seminar #2 - keynoteXE Open seminar #2 - keynote
XE Open seminar #2 - keynote
 
[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기
[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기
[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기
 
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩
 
[XECon2016] C-4 한성민 AngularJS 1, 2 그리고 실무환경 적용 이야기
[XECon2016] C-4 한성민 AngularJS 1, 2 그리고 실무환경 적용 이야기[XECon2016] C-4 한성민 AngularJS 1, 2 그리고 실무환경 적용 이야기
[XECon2016] C-4 한성민 AngularJS 1, 2 그리고 실무환경 적용 이야기
 
[XECon2016] C-2 홍성범 XE3 Theme 제작 - 자유롭게, 그리고 편하게
[XECon2016] C-2 홍성범 XE3 Theme 제작 - 자유롭게, 그리고 편하게[XECon2016] C-2 홍성범 XE3 Theme 제작 - 자유롭게, 그리고 편하게
[XECon2016] C-2 홍성범 XE3 Theme 제작 - 자유롭게, 그리고 편하게
 
[XECon2016] C-1 오승훈 XE3로 웹사이트 만들기
[XECon2016] C-1 오승훈 XE3로 웹사이트 만들기[XECon2016] C-1 오승훈 XE3로 웹사이트 만들기
[XECon2016] C-1 오승훈 XE3로 웹사이트 만들기
 
[XECon2016] B-4 변종원 CodeIgniter와 PHP7
[XECon2016] B-4 변종원 CodeIgniter와 PHP7[XECon2016] B-4 변종원 CodeIgniter와 PHP7
[XECon2016] B-4 변종원 CodeIgniter와 PHP7
 
[XECon2016] B-3 성기진 XE1 가지치기와 오픈소스 생태계의 미래
[XECon2016] B-3 성기진 XE1 가지치기와 오픈소스 생태계의 미래[XECon2016] B-3 성기진 XE1 가지치기와 오픈소스 생태계의 미래
[XECon2016] B-3 성기진 XE1 가지치기와 오픈소스 생태계의 미래
 
[XECon2016] B-2 정광섭 Laravel로 스타트업 기술 스택 구성하기
[XECon2016] B-2 정광섭 Laravel로 스타트업 기술 스택 구성하기[XECon2016] B-2 정광섭 Laravel로 스타트업 기술 스택 구성하기
[XECon2016] B-2 정광섭 Laravel로 스타트업 기술 스택 구성하기
 
[XECon2016] A-3 박형식 Frontend stack의 변화 : jQuery, BackboneJS, ReactJS 중심으로
[XECon2016] A-3 박형식 Frontend stack의 변화 : jQuery, BackboneJS, ReactJS 중심으로[XECon2016] A-3 박형식 Frontend stack의 변화 : jQuery, BackboneJS, ReactJS 중심으로
[XECon2016] A-3 박형식 Frontend stack의 변화 : jQuery, BackboneJS, ReactJS 중심으로
 
[XECon2016] A-2 임형주 Webpack 실무 적용전략
[XECon2016] A-2 임형주 Webpack 실무 적용전략[XECon2016] A-2 임형주 Webpack 실무 적용전략
[XECon2016] A-2 임형주 Webpack 실무 적용전략
 
[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기
[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기
[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기
 
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHubXECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
 
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
 
XECon2015 :: [1-2] 이현석 - Learning Laravel
XECon2015 :: [1-2] 이현석 - Learning LaravelXECon2015 :: [1-2] 이현석 - Learning Laravel
XECon2015 :: [1-2] 이현석 - Learning Laravel
 
XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용
XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용
XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용
 

XECon2015 :: [2-3] 홍성범 - XE3 Theme 제작 소개