xecon2015 :: [2-3] 홍성범 - xe3 theme 제작 소개

49

Upload: xpressengine

Post on 19-Jan-2017

287 views

Category:

Software


4 download

TRANSCRIPT

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

홍성범XpressEngine 커뮤니티 개발그룹

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

오늘의 발표는

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

테마?

테마의 구성

무엇을 알아야 하나?

스킨?

스킨의 구성

테마 패키지

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

테마

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

화면의 레이아웃과 디자인을 결정짓는 가장 중요한 요소

XE1에서는 'layout'이라 불렀음.

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

레이아웃을 결정한다.

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

화면의 이만큼을 담당합니다.

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

XE1과의 비교

비교항목 XE1 레이아웃 XE3 테마

템플릿 엔진XE 자체 템플릿 문법,

2가지 버전Blade

설정 편하다 자유롭다

패키지(묶음배포) 불가능 가능(플러그인)

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

테마는 어떻게 구성되어 있나?

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

필수 파일들

MyTheme.php

theme.blade.php

composer.json

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

MyTheme.php

Theme의 출력을 담당합니다.

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

<?php namespace MyPlugin; use Xpressengine\Theme\AbstractTheme; class MyTheme extends AbstractTheme { public function render() {

// add code

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

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

composer.json

Theme를 등록할 때 필요합니다.

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

...

"extra": { "xpressengine": { "title": "my plugin", "component": { "theme/myplugin@mytheme": { "class": "MyPlugin\\Theme", "name": "my theme", "description": "this is my theme", "screenshot": "screenshot.jpg" }, } } },

...

theme/myplugin@mytheme

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

theme.blade.php

Template 파일

Blade 템플릿 문법을 사용

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

{!! $content !!}

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

더 알아야할 것들

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

Blade Template

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

Laravel에서 제공하는 Template Engine

매뉴얼

http://laravel.com/docs/5.1/blade

http://xpressengine.github.io/laravel-korean-docs/docs/5.0/templates (한글)

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

{{-- 데이터 출력 --}} {{ $title }} {!! $description !!} {{-- 조건문 --}} @if($title == '') @endif {{-- 반복문 --}} @foreach($posts as $post) @endforeach {{-- 레이아웃 구성 --}} @include('view.name') @section('sidebar') @endsection @yield('content') @extends('view.layout')

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

JS, CSS 파일 로드

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

Frontend를 사용하세요.

중복 로드 처리

우선순위 지정

위치 지정

기타 기능 - 메타태그 추가, 브라우저타이틀 지정...

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

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();

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

테마 편집

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

사이트 관리자가

테마를 고칠수 있게..

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

<?php namespace MyPlugin; use Xpressengine\Theme\AbstractTheme; 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'); } }

Page 30: XECon2015 :: [2-3] 홍성범 - XE3 Theme 제작 소개
Page 31: XECon2015 :: [2-3] 홍성범 - XE3 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="[email protected]" 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"> <title xml:lang="ko">메인메뉴</title>

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

모바일

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

Responsible Web Design

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

모든 데이터를 모든 장치에게 다 보낼것인가?

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

Hybrid Web Design

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

Hybrid Web Design

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

Hybrid Web Design

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

Hybrid Web Design

@mobileonly

..... code for mobile

@endmobileonly-----------------------------------------------------------------

@desktoponly

..... code for desktop@enddesktoponly

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

셋팅 테마 관리페이지용 테마

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

셋팅테마도 바꿀 수 있습니다.

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

스킨

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

화면의 이만큼을 담당합니다.

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

XE1

- 모듈스킨, 위젯스킨 존재, 따로 따로 등록

XE3

- "스킨"

- 모든 것에 스킨을 적용할 수 있다.

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

회원 인증 페이지 스킨(로그인, 가입 관련)member/auth/skin/myplugin@myauth

게시판 스킨module/board@board/skin/myplugin@myboard

member/auth/skin/myplugin@myauth

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

패키지로 배포하세요. (묶음배포)

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

인덱스 테마, 서브테마, 심플테마.

게시판스킨

회원인증 스킨, 회원프로필 스킨

위젯 스킨들...

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

...

"extra": { "xpressengine": { "title": "my plugin","component": { "theme/alice@main": { "class": "Xpressengine\\Plugins\\Alice\\Theme\\Main", "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": "Xpressengine\\Plugins\\Alice\\Theme\\Sub", "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": "Xpressengine\\Plugins\\Alice\\Skin\\Board", "name": "Alice (for site default)", "description": "Board Skin", "screenshot": "/plugins/alice/screenshots/board.png" } } } },

...

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

테마 제작자 분들의 수준이 높아짐.

더 자유롭게..

자유성과 함께 편의 제공을 위해 계속 노력할 것이다.

Theme Generator, Theme Config Generator

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

감사합니다.