SlideShare a Scribd company logo
레이아웃 제작 기본
카메론 고진화 대표
순서
1.레이아웃 파일 구조
2.메뉴 추가
3.로그인 추가
4.언어선택 추가
5.검색폼 추가
레이아웃 파일 구조
XE 레이아웃 파일 구조
info.xml
info.xml은 레이아웃 스킨의 기본 정보
/layouts/user_layout/conf/info.xml
layout.html
layout.html은 레이아웃 스킨의 HTML과 CSS, JS 참조 정보
/layouts/user_layout/layout.html
thumbnail.png
thumbnail.png는 관리자 화면에서 레이아웃 미리보기 출력
180×120px 이상
/layouts/user_layout/thumbnail.png
Info.xml – 스킨정보
<?xml version="1.0" encoding="UTF-8"?>
<layout version="0.2">
<title xml:lang="ko">테스트 레이아웃</title>
<description xml:lang="ko">디자인이 없는 테스트 레이아웃입니다. 새 스킨을 만들 때 이 레이아웃 사본을 사용
하면 좋습니다.</description>
<version>1.7</version>
<date>2013-11-27</date>
<author email_address="user@user.com" link="http://user-define.com/">
<name xml:lang="ko">제작자 이름</name>
</author>
<menus>
<menu name="global_menu" maxdepth="3" default="true">
<title xml:lang="ko">전역 메뉴</title>
</menu>
</menus>
</layout>
레이아웃 정보 문서임을 선언.
version에는 XE core에서 지원하는 버전 표시
XE core 1.4.4.2를 기준으로 지원하는 레이아웃 버전은 0.2입니다.
XE 관리자 페이지의 레이아웃 설정에서 생성한 메뉴와 연결
<menus>...</menus> 안에 2개 이상의 <menu>...</menu>를 작성
할 수 있습니다.
layout.html – 본체
DOCTYPE, html, head, body 를 제외한 <body></body> 안에 요소
CSS, JS 파일을 layout.html 파일에서 불러들이면 XE가 자동으로 <head>로 불어
들임.
1.CSS 파일 불러오기
<load target=“style.css” />
<link rel="stylesheet" type="text/css" href="style.css" /> → 사용금지
2.JS 파일 불러오기
<load target=“script.js” />
<script type="text/javascript" src=“script.js"></script> → 사용금지
3.컨텐츠 불러오기
{$content}
XE 기능 넣기
layout.html
메뉴, 로그인, 언어선택, 검색폼
메뉴(Navigation)
메뉴코드
<ul id=“global_menu” cond="$global_menu->list">
<li loop="$global_menu->list=>$key,$val">
<a class="selected"|cond="$val['selected']"
href="{$val['href']}" target="_blank"|cond="$val['open_window']=='Y'">{$val['link']}</a>
</li>
</ul>
예시)
XE의 메뉴 변수들
$val[‘link’] : 메뉴 이미지 출력, 이미지가 없을 경우 텍스트 출력
$val[‘text’] : 메뉴 텍스트 출력
$val[‘href’] : 메뉴 링크주소
$val[‘selected’] : 현재 선택된 메뉴
$val['open_window']=='Y’ : 메뉴 설정에서 새창으로 열기 설정을 했을 때
<ul>
<li loop="$global_menu->list=>$key,$val"><a class="selected"|cond="$val['selected']"
href="{$val['href']}" target="_blank"|cond="$val['open_window']=='Y'" title="{$val['text']}">{$val['link']}
</li>
</ul>
메뉴코드 분석 - cond
<ul cond="$global_menu-
>list">
…
</ul>
cond=“조건”
조건이 참이면 실행
cond=“$global_menu->list”
메뉴가 연결되어 있으면 ul를 출력
메뉴코드 분석 - |cond
<a class="selected"|cond="$val['selected']" href="{$val['href']}"
target="_blank"|cond="$val['open_window']=='Y'">…</a>
|cond=“조건”
조건이 참이면 실행
class=“selected”|cond=“$val[‘selected’]”
메뉴가 선택되면 seleteced 클래스를 추가
target=“_blank”|cond=“$val[‘open_window’]==‘Y’”
메뉴설정에서 새창으로 열기 항목을 체크했으면 target=“_blank”를 추가
메뉴코드 분석 - loop
<li loop="$global_menu->list=>$key,$val">
…
</li>
loop=“…” : 메뉴 개수만큼 반복적으로 실행한다.
$global_menu : info.xml에서 메뉴 연결한 메뉴변수이름
$global_menu->list : 메뉴의 리스트 개수만큼 돌린다.
Key값은 $key에, 실제 메뉴정보는 $val에 저장한다.
로그인 링크
로그인 코드
<a href="{getUrl('act','dispMemberLoginForm')}">로그인</a>
<a href="{getUrl('act','dispMemberSignUpForm')}">회원가입</a>
<a href="{getUrl('act','dispMemberFindAccount')}">계정찾기</a>
<a href="{getUrl('act','dispMemberLogout')}">로그아웃</a>
<a href="{getUrl('act','dispMemberInfo')}">회원정보</a>
<a href="{getUrl('act','dispMemberModifyInfo')}">회원정보수정</a>
<block cond=“!$is_logged”>
</block>
<block cond=“$is_logged”>
</block>
언어선택
언어선택 코드
<div class=“langs”>
<a href=“#” class=“langToggle” title=“Select
Language”>{$lang_supported[$lang_type]}</a>
<ul class=“langList”>
<li loop=“$lang_supported=>$key,$val” cond=“$key!=$lang_type”><a href=“#”
onclick=“doChangeLangType(‘{$key}’);return false;”>{$val}</a></li>
</ul>
</div>
예시)
검색폼
검색폼 코드
<form action="{getUrl()}" method="get" no-error-return-url="true“ class="search">
<input type="hidden" name="vid" value="{$vid}" />
<input type="hidden" name="mid" value="{$mid}" />
<input type="hidden" name="act" value="IS" />
<input type="hidden" name="where" value="{$where}" />
<input type="hidden" name="search_target" value="title_content" />
<input type="text" name="is_keyword" class=“keyword" value="{$is_keyword}" />
<input type="submit" class="submit" value="{$lang->cmd_search}" />
</form>
예시)

More Related Content

What's hot

[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
Jeado Ko
 
Vuejs 시작하기
Vuejs 시작하기Vuejs 시작하기
Vuejs 시작하기
성일 한
 
Shit if
Shit ifShit if
Shit if
전 태경
 
자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기
Jeado Ko
 
Vue.js 입문 02 템플릿 문법
Vue.js 입문 02 템플릿 문법Vue.js 입문 02 템플릿 문법
Vue.js 입문 02 템플릿 문법
승빈이네 공작소
 
Opinion 프로젝트 발표 자료
Opinion 프로젝트 발표 자료Opinion 프로젝트 발표 자료
Opinion 프로젝트 발표 자료
joonseokkim11
 
PHP를 이용한 간단한 방명록 만들기
PHP를 이용한 간단한 방명록 만들기PHP를 이용한 간단한 방명록 만들기
PHP를 이용한 간단한 방명록 만들기
Yoonwhan Lee
 
Vue.js 입문 04 조건부 랜더링
Vue.js 입문 04 조건부 랜더링Vue.js 입문 04 조건부 랜더링
Vue.js 입문 04 조건부 랜더링
승빈이네 공작소
 
웹성능최적화 20130405
웹성능최적화 20130405웹성능최적화 20130405
웹성능최적화 20130405주형 전
 
Html5&css 3장
Html5&css 3장Html5&css 3장
Html5&css 3장홍준 김
 
Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기
영우 박
 
5-3. html5 device access
5-3. html5 device access5-3. html5 device access
5-3. html5 device access
JinKyoungHeo
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
Sang-ho Choi
 
Web vulnerability seminar2
Web vulnerability seminar2Web vulnerability seminar2
Web vulnerability seminar2
Sakuya Izayoi
 
Node.js + Express + MongoDB
Node.js + Express + MongoDBNode.js + Express + MongoDB
Node.js + Express + MongoDB
Vincent Park
 

What's hot (15)

[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
[XECon+PHPFest 2014] jQuery 개발자에서 AngularJS 개발자 되기
 
Vuejs 시작하기
Vuejs 시작하기Vuejs 시작하기
Vuejs 시작하기
 
Shit if
Shit ifShit if
Shit if
 
자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기
 
Vue.js 입문 02 템플릿 문법
Vue.js 입문 02 템플릿 문법Vue.js 입문 02 템플릿 문법
Vue.js 입문 02 템플릿 문법
 
Opinion 프로젝트 발표 자료
Opinion 프로젝트 발표 자료Opinion 프로젝트 발표 자료
Opinion 프로젝트 발표 자료
 
PHP를 이용한 간단한 방명록 만들기
PHP를 이용한 간단한 방명록 만들기PHP를 이용한 간단한 방명록 만들기
PHP를 이용한 간단한 방명록 만들기
 
Vue.js 입문 04 조건부 랜더링
Vue.js 입문 04 조건부 랜더링Vue.js 입문 04 조건부 랜더링
Vue.js 입문 04 조건부 랜더링
 
웹성능최적화 20130405
웹성능최적화 20130405웹성능최적화 20130405
웹성능최적화 20130405
 
Html5&css 3장
Html5&css 3장Html5&css 3장
Html5&css 3장
 
Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기
 
5-3. html5 device access
5-3. html5 device access5-3. html5 device access
5-3. html5 device access
 
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
[커빙 아키텍쳐] 커빙은 어떻게 소셜 컨텐츠를 모아올까요?
 
Web vulnerability seminar2
Web vulnerability seminar2Web vulnerability seminar2
Web vulnerability seminar2
 
Node.js + Express + MongoDB
Node.js + Express + MongoDBNode.js + Express + MongoDB
Node.js + Express + MongoDB
 

Viewers also liked

XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선
XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선
XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선
XpressEngine
 
The New CSS Layout - Dutch PHP Conference
The New CSS Layout - Dutch PHP ConferenceThe New CSS Layout - Dutch PHP Conference
The New CSS Layout - Dutch PHP Conference
Rachel Andrew
 
4주 CSS Layout
4주 CSS Layout4주 CSS Layout
4주 CSS Layout지수 윤
 
CSS Layout
CSS LayoutCSS Layout
CSS Layout
지수 윤
 
XECon+PHPFest2014 발표자료 - 효율적인 css 개발방법 - 최대영
XECon+PHPFest2014 발표자료 - 효율적인 css 개발방법 - 최대영XECon+PHPFest2014 발표자료 - 효율적인 css 개발방법 - 최대영
XECon+PHPFest2014 발표자료 - 효율적인 css 개발방법 - 최대영
XpressEngine
 
The Future of CSS Layout
The Future of CSS LayoutThe Future of CSS Layout
The Future of CSS Layout
Zoe Gillenwater
 
Fluent: Making Sense of the New CSS Layout
Fluent: Making Sense of the New CSS LayoutFluent: Making Sense of the New CSS Layout
Fluent: Making Sense of the New CSS Layout
Rachel Andrew
 
UX Layout Design_SYS4U
UX Layout Design_SYS4UUX Layout Design_SYS4U
UX Layout Design_SYS4Usys4u
 
The New CSS Layout - dotCSS
The New CSS Layout - dotCSSThe New CSS Layout - dotCSS
The New CSS Layout - dotCSS
Rachel Andrew
 
ConFoo 2016: Making Sense of CSS Layout
ConFoo 2016: Making Sense of CSS LayoutConFoo 2016: Making Sense of CSS Layout
ConFoo 2016: Making Sense of CSS Layout
Rachel Andrew
 

Viewers also liked (10)

XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선
XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선
XE 오픈 세미나(2014-02-22) - XE 서버 성능 개선
 
The New CSS Layout - Dutch PHP Conference
The New CSS Layout - Dutch PHP ConferenceThe New CSS Layout - Dutch PHP Conference
The New CSS Layout - Dutch PHP Conference
 
4주 CSS Layout
4주 CSS Layout4주 CSS Layout
4주 CSS Layout
 
CSS Layout
CSS LayoutCSS Layout
CSS Layout
 
XECon+PHPFest2014 발표자료 - 효율적인 css 개발방법 - 최대영
XECon+PHPFest2014 발표자료 - 효율적인 css 개발방법 - 최대영XECon+PHPFest2014 발표자료 - 효율적인 css 개발방법 - 최대영
XECon+PHPFest2014 발표자료 - 효율적인 css 개발방법 - 최대영
 
The Future of CSS Layout
The Future of CSS LayoutThe Future of CSS Layout
The Future of CSS Layout
 
Fluent: Making Sense of the New CSS Layout
Fluent: Making Sense of the New CSS LayoutFluent: Making Sense of the New CSS Layout
Fluent: Making Sense of the New CSS Layout
 
UX Layout Design_SYS4U
UX Layout Design_SYS4UUX Layout Design_SYS4U
UX Layout Design_SYS4U
 
The New CSS Layout - dotCSS
The New CSS Layout - dotCSSThe New CSS Layout - dotCSS
The New CSS Layout - dotCSS
 
ConFoo 2016: Making Sense of CSS Layout
ConFoo 2016: Making Sense of CSS LayoutConFoo 2016: Making Sense of CSS Layout
ConFoo 2016: Making Sense of CSS Layout
 

Similar to XE 오픈 세미나(2014-06-28) - (1/3) 레이아웃 제작 기본

응답하라 반응형웹 - 3. bootstrap
응답하라 반응형웹 - 3. bootstrap응답하라 반응형웹 - 3. bootstrap
응답하라 반응형웹 - 3. bootstrap
redribbon1307
 
XECon2015 :: [2-3] 홍성범 - XE3 Theme 제작 소개
XECon2015 :: [2-3] 홍성범 - XE3 Theme 제작 소개XECon2015 :: [2-3] 홍성범 - XE3 Theme 제작 소개
XECon2015 :: [2-3] 홍성범 - XE3 Theme 제작 소개
XpressEngine
 
컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기
우영 주
 
Deep dive into Modern frameworks - HTML5 Forum 2018
Deep dive into Modern frameworks - HTML5 Forum 2018Deep dive into Modern frameworks - HTML5 Forum 2018
Deep dive into Modern frameworks - HTML5 Forum 2018
Kenneth Ceyer
 
Tistory 간편메뉴얼 rev1.0 (주)애니포미디어테크
Tistory 간편메뉴얼 rev1.0 (주)애니포미디어테크Tistory 간편메뉴얼 rev1.0 (주)애니포미디어테크
Tistory 간편메뉴얼 rev1.0 (주)애니포미디어테크
김호천
 
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
JongKwang Kim
 
webdynpro Alv Tree
webdynpro  Alv Treewebdynpro  Alv Tree
webdynpro Alv Treeguest38b420
 
GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
 GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기 GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
Kenneth Ceyer
 
Tistory 간편메뉴얼 rev1.0 (주)애니포미디어테크
Tistory 간편메뉴얼 rev1.0 (주)애니포미디어테크Tistory 간편메뉴얼 rev1.0 (주)애니포미디어테크
Tistory 간편메뉴얼 rev1.0 (주)애니포미디어테크
호천 김
 
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
JeongHun Byeon
 
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Word camp seoul-2012-track3-3
Word camp seoul-2012-track3-3Word camp seoul-2012-track3-3
Word camp seoul-2012-track3-3
082net
 
[Basic HTML/CSS] 5. css - selector, units
[Basic HTML/CSS] 5. css - selector, units[Basic HTML/CSS] 5. css - selector, units
[Basic HTML/CSS] 5. css - selector, units
Hyejin Oh
 
Ionic으로 모바일앱 만들기 #2
Ionic으로 모바일앱 만들기 #2Ionic으로 모바일앱 만들기 #2
Ionic으로 모바일앱 만들기 #2
성일 한
 

Similar to XE 오픈 세미나(2014-06-28) - (1/3) 레이아웃 제작 기본 (15)

응답하라 반응형웹 - 3. bootstrap
응답하라 반응형웹 - 3. bootstrap응답하라 반응형웹 - 3. bootstrap
응답하라 반응형웹 - 3. bootstrap
 
XECon2015 :: [2-3] 홍성범 - XE3 Theme 제작 소개
XECon2015 :: [2-3] 홍성범 - XE3 Theme 제작 소개XECon2015 :: [2-3] 홍성범 - XE3 Theme 제작 소개
XECon2015 :: [2-3] 홍성범 - XE3 Theme 제작 소개
 
컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기
 
Deep dive into Modern frameworks - HTML5 Forum 2018
Deep dive into Modern frameworks - HTML5 Forum 2018Deep dive into Modern frameworks - HTML5 Forum 2018
Deep dive into Modern frameworks - HTML5 Forum 2018
 
Tistory 간편메뉴얼 rev1.0 (주)애니포미디어테크
Tistory 간편메뉴얼 rev1.0 (주)애니포미디어테크Tistory 간편메뉴얼 rev1.0 (주)애니포미디어테크
Tistory 간편메뉴얼 rev1.0 (주)애니포미디어테크
 
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
 
webdynpro Alv Tree
webdynpro  Alv Treewebdynpro  Alv Tree
webdynpro Alv Tree
 
GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
 GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기 GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
GDG DevFest 2017 Seoul 프론트엔드 모던 프레임워크 낱낱히 파헤치기
 
Tistory 간편메뉴얼 rev1.0 (주)애니포미디어테크
Tistory 간편메뉴얼 rev1.0 (주)애니포미디어테크Tistory 간편메뉴얼 rev1.0 (주)애니포미디어테크
Tistory 간편메뉴얼 rev1.0 (주)애니포미디어테크
 
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
 
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
(Spring Data JPA)식별자(@Id, Primary Key) 자동 생성, @GeneratedValue의 strategy 속성,Ge...
 
Word camp seoul-2012-track3-3
Word camp seoul-2012-track3-3Word camp seoul-2012-track3-3
Word camp seoul-2012-track3-3
 
[Basic HTML/CSS] 5. css - selector, units
[Basic HTML/CSS] 5. css - selector, units[Basic HTML/CSS] 5. css - selector, units
[Basic HTML/CSS] 5. css - selector, units
 
Ionic으로 모바일앱 만들기 #2
Ionic으로 모바일앱 만들기 #2Ionic으로 모바일앱 만들기 #2
Ionic으로 모바일앱 만들기 #2
 

More from XpressEngine

Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2Docker 기반 개발환경 구축 - XE Open seminar #2
Docker 기반 개발환경 구축 - XE Open seminar #2
XpressEngine
 
Github 100% 활용하기 - XE Open seminar #3
Github 100% 활용하기 - XE Open seminar #3Github 100% 활용하기 - XE Open seminar #3
Github 100% 활용하기 - XE Open seminar #3
XpressEngine
 
XE3 SEO를 다루기 - XE Open seminar #2
XE3 SEO를 다루기 - XE Open seminar #2XE3 SEO를 다루기 - XE Open seminar #2
XE3 SEO를 다루기 - XE Open seminar #2
XpressEngine
 
XE Open seminar #2 - keynote
XE Open seminar #2 - keynoteXE Open seminar #2 - keynote
XE Open seminar #2 - keynote
XpressEngine
 
[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기
[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기
[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기
XpressEngine
 
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩
XpressEngine
 
[XECon2016] C-4 한성민 AngularJS 1, 2 그리고 실무환경 적용 이야기
[XECon2016] C-4 한성민 AngularJS 1, 2 그리고 실무환경 적용 이야기[XECon2016] C-4 한성민 AngularJS 1, 2 그리고 실무환경 적용 이야기
[XECon2016] C-4 한성민 AngularJS 1, 2 그리고 실무환경 적용 이야기
XpressEngine
 
[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들
[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들
[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들
XpressEngine
 
[XECon2016] C-2 홍성범 XE3 Theme 제작 - 자유롭게, 그리고 편하게
[XECon2016] C-2 홍성범 XE3 Theme 제작 - 자유롭게, 그리고 편하게[XECon2016] C-2 홍성범 XE3 Theme 제작 - 자유롭게, 그리고 편하게
[XECon2016] C-2 홍성범 XE3 Theme 제작 - 자유롭게, 그리고 편하게
XpressEngine
 
[XECon2016] C-1 오승훈 XE3로 웹사이트 만들기
[XECon2016] C-1 오승훈 XE3로 웹사이트 만들기[XECon2016] C-1 오승훈 XE3로 웹사이트 만들기
[XECon2016] C-1 오승훈 XE3로 웹사이트 만들기
XpressEngine
 
[XECon2016] B-4 변종원 CodeIgniter와 PHP7
[XECon2016] B-4 변종원 CodeIgniter와 PHP7[XECon2016] B-4 변종원 CodeIgniter와 PHP7
[XECon2016] B-4 변종원 CodeIgniter와 PHP7
XpressEngine
 
[XECon2016] B-3 성기진 XE1 가지치기와 오픈소스 생태계의 미래
[XECon2016] B-3 성기진 XE1 가지치기와 오픈소스 생태계의 미래[XECon2016] B-3 성기진 XE1 가지치기와 오픈소스 생태계의 미래
[XECon2016] B-3 성기진 XE1 가지치기와 오픈소스 생태계의 미래
XpressEngine
 
[XECon2016] B-2 정광섭 Laravel로 스타트업 기술 스택 구성하기
[XECon2016] B-2 정광섭 Laravel로 스타트업 기술 스택 구성하기[XECon2016] B-2 정광섭 Laravel로 스타트업 기술 스택 구성하기
[XECon2016] B-2 정광섭 Laravel로 스타트업 기술 스택 구성하기
XpressEngine
 
[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 중심으로
XpressEngine
 
[XECon2016] A-2 임형주 Webpack 실무 적용전략
[XECon2016] A-2 임형주 Webpack 실무 적용전략[XECon2016] A-2 임형주 Webpack 실무 적용전략
[XECon2016] A-2 임형주 Webpack 실무 적용전략
XpressEngine
 
[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기
[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기
[XECon2016] A-4 조정현 GitHub + Jenkins + Docker로 자동배포 시스템 구축하기
XpressEngine
 
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
XpressEngine
 
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XpressEngine
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XpressEngine
 
XECon2015 :: [1-2] 이현석 - Learning Laravel
XECon2015 :: [1-2] 이현석 - Learning LaravelXECon2015 :: [1-2] 이현석 - Learning Laravel
XECon2015 :: [1-2] 이현석 - Learning Laravel
XpressEngine
 

More from 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-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들
[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들
[XECon2016] C-3 이현석 팀장들이 꼽은 신입 PHP 개발자가 가급적 빨리 알았으면 하는 것들
 
[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
 

XE 오픈 세미나(2014-06-28) - (1/3) 레이아웃 제작 기본

  • 2. 순서 1.레이아웃 파일 구조 2.메뉴 추가 3.로그인 추가 4.언어선택 추가 5.검색폼 추가
  • 4. XE 레이아웃 파일 구조 info.xml info.xml은 레이아웃 스킨의 기본 정보 /layouts/user_layout/conf/info.xml layout.html layout.html은 레이아웃 스킨의 HTML과 CSS, JS 참조 정보 /layouts/user_layout/layout.html thumbnail.png thumbnail.png는 관리자 화면에서 레이아웃 미리보기 출력 180×120px 이상 /layouts/user_layout/thumbnail.png
  • 5. Info.xml – 스킨정보 <?xml version="1.0" encoding="UTF-8"?> <layout version="0.2"> <title xml:lang="ko">테스트 레이아웃</title> <description xml:lang="ko">디자인이 없는 테스트 레이아웃입니다. 새 스킨을 만들 때 이 레이아웃 사본을 사용 하면 좋습니다.</description> <version>1.7</version> <date>2013-11-27</date> <author email_address="user@user.com" link="http://user-define.com/"> <name xml:lang="ko">제작자 이름</name> </author> <menus> <menu name="global_menu" maxdepth="3" default="true"> <title xml:lang="ko">전역 메뉴</title> </menu> </menus> </layout> 레이아웃 정보 문서임을 선언. version에는 XE core에서 지원하는 버전 표시 XE core 1.4.4.2를 기준으로 지원하는 레이아웃 버전은 0.2입니다. XE 관리자 페이지의 레이아웃 설정에서 생성한 메뉴와 연결 <menus>...</menus> 안에 2개 이상의 <menu>...</menu>를 작성 할 수 있습니다.
  • 6. layout.html – 본체 DOCTYPE, html, head, body 를 제외한 <body></body> 안에 요소 CSS, JS 파일을 layout.html 파일에서 불러들이면 XE가 자동으로 <head>로 불어 들임. 1.CSS 파일 불러오기 <load target=“style.css” /> <link rel="stylesheet" type="text/css" href="style.css" /> → 사용금지 2.JS 파일 불러오기 <load target=“script.js” /> <script type="text/javascript" src=“script.js"></script> → 사용금지 3.컨텐츠 불러오기 {$content}
  • 7. XE 기능 넣기 layout.html 메뉴, 로그인, 언어선택, 검색폼
  • 9. 메뉴코드 <ul id=“global_menu” cond="$global_menu->list"> <li loop="$global_menu->list=>$key,$val"> <a class="selected"|cond="$val['selected']" href="{$val['href']}" target="_blank"|cond="$val['open_window']=='Y'">{$val['link']}</a> </li> </ul> 예시)
  • 10. XE의 메뉴 변수들 $val[‘link’] : 메뉴 이미지 출력, 이미지가 없을 경우 텍스트 출력 $val[‘text’] : 메뉴 텍스트 출력 $val[‘href’] : 메뉴 링크주소 $val[‘selected’] : 현재 선택된 메뉴 $val['open_window']=='Y’ : 메뉴 설정에서 새창으로 열기 설정을 했을 때 <ul> <li loop="$global_menu->list=>$key,$val"><a class="selected"|cond="$val['selected']" href="{$val['href']}" target="_blank"|cond="$val['open_window']=='Y'" title="{$val['text']}">{$val['link']} </li> </ul>
  • 11. 메뉴코드 분석 - cond <ul cond="$global_menu- >list"> … </ul> cond=“조건” 조건이 참이면 실행 cond=“$global_menu->list” 메뉴가 연결되어 있으면 ul를 출력
  • 12. 메뉴코드 분석 - |cond <a class="selected"|cond="$val['selected']" href="{$val['href']}" target="_blank"|cond="$val['open_window']=='Y'">…</a> |cond=“조건” 조건이 참이면 실행 class=“selected”|cond=“$val[‘selected’]” 메뉴가 선택되면 seleteced 클래스를 추가 target=“_blank”|cond=“$val[‘open_window’]==‘Y’” 메뉴설정에서 새창으로 열기 항목을 체크했으면 target=“_blank”를 추가
  • 13. 메뉴코드 분석 - loop <li loop="$global_menu->list=>$key,$val"> … </li> loop=“…” : 메뉴 개수만큼 반복적으로 실행한다. $global_menu : info.xml에서 메뉴 연결한 메뉴변수이름 $global_menu->list : 메뉴의 리스트 개수만큼 돌린다. Key값은 $key에, 실제 메뉴정보는 $val에 저장한다.
  • 15. 로그인 코드 <a href="{getUrl('act','dispMemberLoginForm')}">로그인</a> <a href="{getUrl('act','dispMemberSignUpForm')}">회원가입</a> <a href="{getUrl('act','dispMemberFindAccount')}">계정찾기</a> <a href="{getUrl('act','dispMemberLogout')}">로그아웃</a> <a href="{getUrl('act','dispMemberInfo')}">회원정보</a> <a href="{getUrl('act','dispMemberModifyInfo')}">회원정보수정</a> <block cond=“!$is_logged”> </block> <block cond=“$is_logged”> </block>
  • 17. 언어선택 코드 <div class=“langs”> <a href=“#” class=“langToggle” title=“Select Language”>{$lang_supported[$lang_type]}</a> <ul class=“langList”> <li loop=“$lang_supported=>$key,$val” cond=“$key!=$lang_type”><a href=“#” onclick=“doChangeLangType(‘{$key}’);return false;”>{$val}</a></li> </ul> </div> 예시)
  • 19. 검색폼 코드 <form action="{getUrl()}" method="get" no-error-return-url="true“ class="search"> <input type="hidden" name="vid" value="{$vid}" /> <input type="hidden" name="mid" value="{$mid}" /> <input type="hidden" name="act" value="IS" /> <input type="hidden" name="where" value="{$where}" /> <input type="hidden" name="search_target" value="title_content" /> <input type="text" name="is_keyword" class=“keyword" value="{$is_keyword}" /> <input type="submit" class="submit" value="{$lang->cmd_search}" /> </form> 예시)

Editor's Notes

  1. 하나씩 적용해 가며 실행해 본다.
  2. 하나씩 적용해 가며 실행해 본다.
  3. XE템플릿 문법이란 건 XE에서만 쓰는 (HTML코드가 아닌 거죠.) 문법. 이 상태로만 실행해 본다. 4개의 메뉴가 있으니까 <li>가 4개가 된다.