김프의 키보드 단축키를 포토샵에서 사용하는 것처럼 수정하였다면 다음으로는 프로그램의 레이아웃도 포토샵처럼 바꾸면 (상대적으로) 더 편해질 듯 합니다. 


먼저 김프의 레이아웃이 '단일창 모드'로 되어 있는지 확인합니다. 설치했을 때의 기본값은 작업창과 도구창이 별도로 분리되어 있기 때문입니다.

김프 단일창 모드 적용김프 단일창 모드 적용


선택영역을 레이어로 만드는 기능 추가


포토샵에는 있고 김프에는 없는 기능인 "Layer via Cut"을 구현하기 위해 플러그인도 설치합니다. 이 기능은 선택영역을 새로운 레이어로 만들 때 매우 편리하게 사용할 수 있습니다.


먼저 플러그인 홈페이지에서 관련 플러그인을 찾아봅니다.

http://registry.gimp.org/node/26396

김프 플러그인 검색김프 플러그인 검색


플러그인이 검색되면 배포되는 홈페이지에서 파일을 다운로드 받습니다.

http://some-gimp-plugins.com/contents/en/extensions/002/

플러그인 다운로드 페이지플러그인 다운로드 페이지


다운로드 받은 파일의 압축을 풀고, 생성된 파일들을 클립보드에 복사(ctrl+c)한 후 김프 플러그인 폴더(C:\Users\유저이름\.gimp-2.8\plug-ins)에 붙여 넣습니다.

플러그인 폴더에 파일 넣기플러그인 폴더에 파일 넣기


김프가 열려있다면 프로그램을 닫고 다시 실행시킵니다.

레이어 메뉴 하단에 Layer via Copy와 Layer via Cut 기능이 추가된 것을 확인할 수 있습니다.

Layer via Copy & Cut 기능 확인Layer via Copy & Cut 기능 확인


유저 인터페이스 변경


김프는 테마(스킨) 기능를 지원하고 있습니다. 그렇기 때문에 UI 변경을 쉽게 할 수 있습니다. 인터넷 검색을 통해 김프에서 사용할 수 있는 포토샵 인터페이스 테마를 다운로드 받습니다.

http://gnome-look.org/content/show.php/?content=159293

포토샵 아이콘 테마포토샵 아이콘 테마

포토샵 아이콘 테마 적용 모습포토샵 아이콘 테마 적용 모습


다운로드 받은 파일의 압축을 풀고 이 파일들은 김프 설정 폴더(C:\Users\유저이름\.gimp-2.8)에 붙여 넣습니다. 몇몇 설정 파일을 덮어 쓰게 됩니다.

파일 복사 후 김프 설정 폴더에 붙여넣기파일 복사 후 김프 설정 폴더에 붙여넣기


김프가 열려있다면 프로그램을 닫고 다시 실행시킵니다.

테마가 적용되어 도구 아이콘이 변경된 것을 확인할 수 있습니다.

도구 아이콘 변경 확인도구 아이콘 변경 확인


만일 변화가 없다면 상단 메뉴에서 <편집> - <기본설정>을 클릭하고 테마 항목에서 "PsIcons"를 선택 후 [확인] 버튼을 클릭합니다.

테마 설정 창테마 설정 창


테마를 적용한 후 레이아웃을 정리하기 위해 상단 메뉴 중 <창> - <도킹 가능한 대화> 중 사용할 대화 상자를 선택하여 불러옵니다.

각종 대화상자 열기각종 대화상자 열기


불러온 창들은 마우스 드래그&드롭으로 프로그램 창의 좌우측 패널 영역으로 이동시킬 수 있습니다.

대화상자 레이아웃 수정대화상자 레이아웃 수정


또한 각 패널 좌측 상단의 화살표 버튼을 클릭하여 "탭 추가"를 통해 대화 상자를 추가할 수 있습니다.

패널 옵션 버튼으로 탭 추가패널 옵션 버튼으로 탭 추가


이렇게 프로그램의 레이아웃을 수정한 후 이를 고정시키기 위해서 <편집> - <기본 설정>을 열고 "도구 옵션" 항목에서 "마칠 때 도구 옵션 저장(S)"를 체크한 후 [확인]을 클릭합니다.

도구 옵션 저장도구 옵션 저장

김프 레이아웃 정리 완료김프 레이아웃 정리 완료



김프가 포토샵의 기능에 비해 아무래도 한 수 딸리는 것은 어쩔 수 없는 사실입니다. 하지만 활용하기에 따라 포토샵에 못지 않은 활약을 보일 수도 있습니다. 김프 고유의 인터페이스도 나쁘지 않지만 만일 자신이 포토샵 사용법이 더 익숙한 상태에서 김프를 사용해야 한다면 이와 같이 테마 설치와 환경 설정을 통해 프로그램 활용성을 높이는 것도 좋은 방법일 것입니다.

블로그 이미지

환타73

디지털 콘텐츠 제작 및 연구 & 개발. 온오프라인 강의.

,

포토샵 사용자가 김프를 사용하게 되었들 때의 첫번째 만나는 난관은 포토샵과 다른 단축키를 사용하는 부분에 있어서의 혼동일 것입니다. 하지만 다행히 대부분의 프로그램들처럼 김프도 자체적인 단축키 편집기능이 있기 때문에 이를 포토샵에서의 단축키처럼 설정하는 것만으로도 작업에 있어서 그 속도를 붙이는데에 크게 도움이 됩니다(또한 그 반대로 김프를 통해 그래픽 디자인에 입문한 사용자라 하더라도 차후 포토샵으로 작업을 하게 될 때에도 도움이 되기도 할 것입니다).


먼저 김프의 여러 설정파일들이 위치하고 있는 폴더를 찾습니다. 김프는 실행파일 - exe가 있는 폴더과 데이터 폴더가 서로 다르기에 주의합니다.


Windows의 경우

C:\Users\[your user name]\.gimp-2.8

Windows7 김프 데이터 및 설정 폴더Windows7 김프 데이터 및 설정 폴더


OSX의 경우 : ~/Library/Application Support/GIMP/2.8/


단축키를 바꾸기 위해서 직접 일일히 바꾸기에는 시간도 걸리고 혹시 모를 실수가 있을 수도 있기 때문에 아래의 홈페이지에서 설정이 적용된 단축키 파일(ps-menurc)을 다운로드 합니다.

김프 단축키 설정창김프 단축키 설정창


http://epierce.freeshell.org/gimp/gimp_ps.php

ps-menurc 파일 홈페이지ps-menurc 파일 홈페이지


링크에서 마우스 우측 클릭을 한 후 "다른 이름으로 링크 저장"을 통해서 ps-menurc.txt 를 다운로드 받을 수 있습니다.

ps-menurc.txt 다운로드ps-menurc.txt 다운로드


김프가 열려 있다면 먼저 프로그램을 닫습니다.

그리고 .gimp-2.8 폴더에서 "menurc" 파일의 이름을 "menurc-original"로 수정하고, 다운로드한 "ps-menurc.txt" 파일을 폴더에 넣은 후 <F2> 키를 눌러 파일 이름을 "menurc"로 수정합니다(윈도우의 경우 확장자도 삭제).

.gimp-8.2 폴더에 설정 파일 넣기.gimp-8.2 폴더에 설정 파일 넣기


김프 프로그램을 실행하여 키보드 단축키가 포토샵처럼 설정된 것을 확인합니다.

김프 단축키 포토샵처럼 변경김프 단축키 포토샵처럼 변경


이처럼 단축키를 포토샵처럼 변경하여 기존의 포토샵 사용자가 작업을 좀 더 수월하게 할 수 있습니다. 다음 포스팅에서는 김프의 레이아웃을 포토샵과 비슷하게 바꿔볼 것입니다.

블로그 이미지

환타73

디지털 콘텐츠 제작 및 연구 & 개발. 온오프라인 강의.

,

홈 및 콘텐츠와 사이드바 에 부트스트랩 레이아웃을 적용하면서 알게 된 것을 간단히 정리하면

콘텐츠 부분의 요소는 <section id="primary" class="content-area span9"> 부분이고,

사이드바 부분의 요소는 <div id="secondary" class="widget-area span3" role="complementary"> 인 것을 알 수 있습니다.

 

즉 나머지 php 소스들을 살펴보고 같은 요소들이 있다면 위와 같이 적용하면 될 것입니다.

 

네비게이션에서 [카테고리2] 를 선택하면 "카테고리2"에 분류되어 있는 포스트들의 목록이 나타납니다. 이 카테고리 목록 부분을 출력하는 화일은 "archive.php" 파일인데 이 파일을 테마 편집기로 열어서 부트스트랩 레이아웃을 적용해 봅니다. 위와 같이 "span9"를 추가하면 포스트 목록 부분과 사이드바 부분의 레이아웃이 맞춰집니다.

마찬가지 방법으로 "search.php", "404.php" 파일도 열어서 클래스 "span9"를 추가합니다. 이 두개의 파일은 "검색결과"의 출력에 관련된 파일입니다.

 

 

 

블로그 이미지

환타73

디지털 콘텐츠 제작 및 연구 & 개발. 온오프라인 강의.

,

페이지 화면에 부트스트랩 레이아웃을 적용하는 것도 홈 화면에서 한 방법과 큰 차이가 없습니다. 단지 다른 점은 "사이드 바"가 있기 때문에 페이지와 사이드 바 두 개의 단으로 나뉘어진다는 것 뿐입니다. 두 개의 영역이 12개의 단에서 서로 어느만큼 차지하게 할 지는 개발자 마음이지만 여기서는 "span9"와 "span3"으로 나누겠습니다.

 

테마 편집기에서 "page.php"를 열고 아래와 같이 "span9"를 추가합니다.
<div id="primary" class="content-area span9">
[Update File]을 클릭해 저장합니다.

 

그리고 "sidebar.php"를 열고 아래와 같이 "span3"을 추가합니다.
<div id="secondary" class="widget-area span3" role="complementary">
[Update File]을 클릭해 저장합니다.

 

이제 홈페이지에서 메뉴 네비게이션의 샘플 페이지를 클릭해 적용된 모습을 확인해 봅니다.

 

 

댓글 남기기 아래쪽에 있는 "다음의 HTML 태그와 속성을 사용할 수 있습니다:"의 태그 속성이 가로로 사이드바까지 침범한 것을 고치기 위해 "custom.css"에 다음의 코드를 넣습니다.

⁄* 댓글 적용태크 줄바꿈 *⁄
code {
	white-space: normal;
}

 

 

 

포스트의 경우도 페이지와 같은 방법으로 레이아웃을 잡을 수 있습니다. 페이지와 다른 점은 단지 "single.php" 파일을 수정한다는 것 뿐입니다.

 

테마 편집기에서 "page.php"를 열고 아래와 같이 "span9"를 추가합니다.
<div id="primary" class="content-area span9">
[Update File]을 클릭해 저장합니다.

 

이제 홈 화면에서 포스트 06을 클릭해서 적용된 모습을 확인해 봅니다.

 

 

블로그 이미지

환타73

디지털 콘텐츠 제작 및 연구 & 개발. 온오프라인 강의.

,

header.php 즉, 헤더 부분에 부트스트랩 레이아웃을 적용한 후 다음으로는 "홈" 부분에 레이아웃을 적용해야 합니다.
그냥 쭉 나열되어 있는 콘텐츠들을 (여기서는 최근 포스트 6개) 3열 2행으로 나열하는 것을 목표로 합니다.

 

 

 

우선 윈도우 탐색기를 통해 aca 테마 파일 중 "index.php"를 선택하고 [ctrl+c] 후 [ctrl+v]로 사본을 만듭니다. 그리고 사본의 이름을 "home.php"로 바꾼 후 FTP 나 테마 에디터를 통해 웹서버에 업로드 합니다.

이제 워드프레스는 "홈"을 불러올 때 "home.php"를 불러올 것입니다(워드프레스의 php 파일 로딩 순서에서 home.php가 index.php 보다 먼저 불러오게 되어 있습니다).

 

 

 

 

홈 화면에서는 사이드바를 삭제할 것이므로, "home.php" 소스에서 사이드바 관련 코드를 삭제해야 합니다.
<?php get_sidebar(); ?> 를 삭제하면 페이지 하단에 있던 사이드바가 사라집니다.

 

 

 

 

 

 

 

"header.php" 맨 아래 줄에서 클래스에 "row"를 추가했기 때문에 "home.php" 소스에서는 "span" 클래스를 추가합니다.

id가 primary 인 div 요소의 클래스명 content-area 뒤에 span12 를 추가합니다. 포트스 내용이 브라우저의 가운데로 제대로 정열이 되면서 마진이 생깁니다.

 

<div id="primary" class="content-area span12">

 

 

이제 포스트들을 3열 2행으로 만들어야 합니다. home.php 소스에 보면 워드프레스의 루프(Loop) 소스가 있습니다. 이 부분을 수정해서 구현합니다.

 

<?php if ( have_posts() ) : ?> 부터 <?php endif; ?> 까지의 내용을 아래와 같이 수정합니다.

			<section class="row">
					<?php $post_count = 1; ⁄⁄카운터 ?>
					<?php if ( have_posts() ) : ?>

					<?php ⁄* Start the Loop *⁄ ?>
					<?php while ( have_posts() ) : the_post(); ?>

					<?php
						⁄* Include the Post-Format-specific template for the content.
						 * If you want to override this in a child theme, then include a file
						 * called content-___.php (where ___ is the Post Format name) and that will be used instead.
						 *⁄
						echo('<div class="span4">');
							get_template_part( 'content', get_post_format() );
						echo('<⁄div>');
					?>

					<?php if ($post_count % 3 == 0) { echo '<div class="clear"><⁄div>'; } ?>
					<?php $post_count++; endwhile; ?>

					<?php aca_paging_nav(); ?>

					<?php else : ?>

					<?php get_template_part( 'content', 'none' ); ?>

					<?php endif; ?>
			<⁄section><!-- .row -->

 

3열 2행의 레이아웃으로 변경되었습니다.
루프 소스 중에 카운터를 넣은 것은 3열마다 css의 클리어 요소(clear: both)를 넣어서 줄바꿈을 해 주어야 하기 때문입니다. 클리어 요소를 넣지 않으면 포스트의 내용에 따라 줄바꿈이 뒤죽박죽 되어 버립니다.
만일 3열이 아닌 4열로 포스트로 나열하고 싶다면 {span4} 대신에 {span3}을 넣고,{$post_count % 3} 을 {$post_count % 4}로 수정하면 됩니다.

 

 

포스트의 내용이 제각각이라서 좀 들쭉날쭉 합니다. 입력된 내용이 전부 보여지게 되어 있기 때문인데 이를 해결하기 위해 플러그인을 설치합니다.

 

Auto Excerpt everywhere
http://wordpress.org/plugins/auto-excerpt-everywhere/

 

이 플러그인은 포스트의 내용을 요약하여 출력하는 기능을 가지고 있습니다. 플러그인을 설치한 후 Excerpt length 값을 300 으로, Read more text 에 들어갈 문구를 ...more 로 설정했습니다. 출력되는 내용이 일정하게 잘려서 깔끔하게 정리된 모습을 볼 수 있습니다.

 

 

 

블로그 이미지

환타73

디지털 콘텐츠 제작 및 연구 & 개발. 온오프라인 강의.

,

부트스트랩 레이아웃을 위해 원래의 요소에 클래스를 추가해보도록 하겠습니다.

먼저 테마 에디터에서 header.php를 선택하여 엽니다. 내용중 body 요소 아래쪽을 수정하여 부트스트랩을 적용해 보겠습니다.

header.php

<div id="page" class="hfeed site">

	<header id="masthead" class="site-header" role="banner">
		<div class="site-branding">
			<h1 class="site-title"><a href="<?php echo esc_url( home_url( '⁄' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?><⁄a><⁄h1>
			<h2 class="site-description"><?php bloginfo( 'description' ); ?><⁄h2>
		<⁄div>

		<nav id="site-navigation" class="main-navigation" role="navigation">
			<h1 class="menu-toggle"><?php _e( 'Menu', 'aca' ); ?><⁄h1>
			<a class="skip-link screen-reader-text" href="#content"><?php _e( 'Skip to content', 'aca' ); ?><⁄a>

			<?php wp_nav_menu( array( 'theme_location' => 'primary' ) ); ?>
		<⁄nav><!-- #site-navigation -->
	<⁄header><!-- #masthead -->

	<div id="content" class="site-content">

 

이제 여기에 클래스 요소를 추가해야 합니다. 우선 맨 위의 id가 page 인 div 요소가 있는데 이것이 홈페이지 전체를 감싸고 있는 요소 입니다. 여기 클래스에 "container"를 추가합니다.

그리고 아래쪽에 보면 id가 masthead 인 header 요소가 있습니다. header 요소는 사이트명, 사이트 설명, 네비게이션을 포함하고 있는 하나의 가로'행'을 구성하고 있습니다. 그렇기 때문에 클래스명에 "row"를 추가합니다.

header 요소 내부에 있는 div 요소는 사이트명, 사이트 설명을 포함하고 있으며 부트스트렙 레이아웃의 12행을 모두 포함합니다. 그래서 클래스명 site-branding 뒤에 "span12"를 추가합니다.

nav 요소는 메인 네비게이션으로 이 역시 12행을 모두 포함합니다. 클래스명 main-navigation 뒤에 "span12"를 추가합니다.

그리고 마지막 행의 id가 content인 div 요소는 헤더 아래쪽에서 푸터 위까지의 메인 콘텐츠 부분을 감싸고 있으므로 클래스명 site-content 뒤에 "row"를 추가합니다.

<div id="page" class="hfeed site container">
 
    <header id="masthead" class="site-header row" role="banner">
        <div class="site-branding span12">
            <h1 class="site-title"><a href="<?php echo esc_url( home_url( '⁄' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?><⁄a><⁄h1>
            <h2 class="site-description"><?php bloginfo( 'description' ); ?><⁄h2>
        <⁄div><!-- .site-branding .span12 -->
 
        <nav id="site-navigation" class="main-navigation span12" role="navigation">
            <h1 class="menu-toggle"><?php _e( 'Menu', 'aca' ); ?><⁄h1>
            <a class="skip-link screen-reader-text" href="#content"><?php _e( 'Skip to content', 'aca' ); ?><⁄a>
 
            <?php wp_nav_menu( array( 'theme_location' => 'primary' ) ); ?>
        <⁄nav><!-- #site-navigation .span12 -->
    <⁄header><!-- #masthead .row -->
 
    <div id="content" class="site-content row">

 

헤더의 레이아웃을 간단히 아래의 그림으로 표현할 수 있습니다.

 

헤더의 레이아웃은 잡아놓았지만 아직 네비게이션 부분의 셋팅이 남아있습니다. 부트스트랩은 고유의 반응형 네비게이션 바를 제공하고 있으며 화면의 가로 사이즈에 따라 모양이 변합니다.
부트스트랩 네비게이션 바를 사용하기 위해서는 우선 "header.php" nav 요소 부분을 아래와 같이 수정합니다.

<nav id="access" class="navbar span12" role="navigation">
			<div class="navbar">
				<div class="navbar-inner">
				<!-- 화면폭 줄어들면 메뉴 사라지고 토글버튼 생김-->
					<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
					<span class="icon-bar"><⁄span>
					<span class="icon-bar"><⁄span>
					<span class="icon-bar"><⁄span>
					<⁄a>
					<div class="nav-collapse">
						<!-- 네비게이션 메뉴 시작 -->
						<?php wp_nav_menu( array( 'theme_location' => 'primary', 'walker' => new bootstrapwp_walker_nav_menu(), 'menu' => 'main-menu', 'menu_class' => 'nav', 'menu_id' => 'main-menu' ) ); ?>
						<!-- 네비게이션 메뉴 끝 -->
					<⁄div><!--.nav-collapse-->
				<⁄div><!--.navbar-inner-->
			<⁄div><!-- .navbar -->
		<⁄nav><!-- #access .navbar .span12-->

 

그리고 "functions.php" 파일을 열어 내용 가장 아래에 다음의 코드를 추가해 넣습니다. 이 코드는 워드프레스의 메뉴를 부트스트랩 메뉴로 변환시키는 (부트스트랩의 네비게이션 바를 워드프레스 _S 테마의 기본 메뉴 출력에 적용시키는) 함수입니다.

⁄* 
 * 부트스트랩 메뉴화
 *⁄

function register_my_menus() {
	register_nav_menus(
		array(
			'header-menu' => __('Header Menu'),
			'extra-menu' => __('Extra Menu')
			)
		);
}
add_action('init', 'register_my_menus');
add_theme_support('menus');

⁄⁄

class bootstrapwp_walker_nav_menu extends Walker_Nav_Menu {


  function start_lvl( &$output, $depth ) {

    ⁄⁄In a child UL, add the 'dropdown-menu' class
    $indent = str_repeat( "\t", $depth );
    $output    .= "\n$indent<ul class=\"dropdown-menu\">\n";

  }

  function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {

    $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';

    $li_attributes = '';
    $class_names = $value = '';

    $classes = empty( $item->classes ) ? array() : (array) $item->classes;

    ⁄⁄Add class and attribute to LI element that contains a submenu UL.
    if ($args->has_children){
      $classes[]    = 'dropdown';
      $li_attributes .= 'data-dropdown="dropdown"';
    }
    $classes[] = 'menu-item-' . $item->ID;
    ⁄⁄If we are on the current page, add the active class to that menu item.
    $classes[] = ($item->current) ? 'active' : '';

    ⁄⁄Make sure you still add all of the WordPress classes.
    $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) );
    $class_names = ' class="' . esc_attr( $class_names ) . '"';

    $id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args );
    $id = strlen( $id ) ? ' id="' . esc_attr( $id ) . '"' : '';

    $output .= $indent . '<li' . $id . $value . $class_names . $li_attributes . '>';

    ⁄⁄Add attributes to link element.
    $attributes  = ! empty( $item->attr_title ) ? ' title="'  . esc_attr( $item->attr_title ) .'"' : '';
    $attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target     ) .'"' : '';
    $attributes .= ! empty( $item->xfn ) ? ' rel="'    . esc_attr( $item->xfn        ) .'"' : '';
    $attributes .= ! empty( $item->url ) ? ' href="'   . esc_attr( $item->url        ) .'"' : '';
    $attributes .= ($args->has_children) ? ' class="dropdown-toggle" data-toggle="dropdown"' : ''; 

    $item_output = $args->before;
    $item_output .= '<a'. $attributes .'>';
    $item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
    $item_output .= ($args->has_children) ? ' <b class="caret"><⁄b> ' : ''; 
    $item_output .= '<⁄a>';
    $item_output .= $args->after;

    $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
  }

  ⁄⁄Overwrite display_element function to add has_children attribute. Not needed in >= Wordpress 3.4
  function display_element( $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) {

    if ( !$element )
      return;

    $id_field = $this->db_fields['id'];

    ⁄⁄display this element
    if ( is_array( $args[0] ) ) 
      $args[0]['has_children'] = ! empty( $children_elements[$element->$id_field] );
    else if ( is_object( $args[0] ) ) 
      $args[0]->has_children = ! empty( $children_elements[$element->$id_field] ); 
    $cb_args = array_merge( array(&$output, $element, $depth), $args);
    call_user_func_array(array(&$this, 'start_el'), $cb_args);

    $id = $element->$id_field;

    ⁄⁄ descend only when the depth is right and there are childrens for this element
    if ( ($max_depth == 0 || $max_depth > $depth+1 ) && isset( $children_elements[$id]) ) {

      foreach( $children_elements[ $id ] as $child ){

        if ( !isset($newlevel) ) {
          $newlevel = true;
          ⁄⁄start the child delimiter
          $cb_args = array_merge( array(&$output, $depth), $args);
          call_user_func_array(array(&$this, 'start_lvl'), $cb_args);
        }
        $this->display_element( $child, $children_elements, $max_depth, $depth + 1, $args, $output );
      }
        unset( $children_elements[ $id ] );
    }

    if ( isset($newlevel) && $newlevel ){
      ⁄⁄end the child delimiter
      $cb_args = array_merge( array(&$output, $depth), $args);
      call_user_func_array(array(&$this, 'end_lvl'), $cb_args);
    }

    ⁄⁄end this element
    $cb_args = array_merge( array(&$output, $element, $depth), $args);
    call_user_func_array(array(&$this, 'end_el'), $cb_args);

  }

}

 

마지막으로 "custom.css" 스타일시트 파일을 열어서 다음의 스타일을 추가합니다. 이것은 부트스트랩 네비게이션 메뉴가 브라우저 가로크기가 일정 크기 이하로 줄었을 경우 네비게이션이 드롭다운 방식 바뀔 때 제대로 동작하지 않는 경우를 약간 수정해 줍니다. 그래도 약간의 버그는 있는데 메뉴를 한 번 폈다가 접은 후 다시 펴야지 제대로 동작합니다(아직 완벽한 수정방법은 찾지 못했네요).

⁄* 부트스트랩 드롭다운 패치 *⁄
.dropdown-backdrop {
	position: static;
}

 

<부트스트랩 적용 php소스 : 워드프레스 완벽입문 참조>

 

블로그 이미지

환타73

디지털 콘텐츠 제작 및 연구 & 개발. 온오프라인 강의.

,

부트스트랩으로 레이아웃을 잡기 위해서는 코딩의 기본구조를 먼저 알아야 합니다. 부트스트랩의 레이아웃 구조를 위해서 알아야 할 것은 사실 몇가지 없기 때문에 익히기 어렵지 않습니다. 부트스트랩 홈페이지에서 Scaffolding 부분에서 이를 확인할 수 있습니다.

레이아웃 코딩을 위한 css 클래스(class) "container", "row", "span", "offset"의 뜻을 알아보겠습니다.

container 는 레이아웃 구성하는 가장 큰 부분으로 아래의 레이아웃에서 가장 외각선이라고 보면 이해가 쉽습니다. 일반적으로 홈페이지 소스에서 한 번 사용하는 경우가 대부분입니다.


<div class="container">
네비게이션



이미지 슬라이더

최근 포스트




최근 포스트


최근 포스트


하단 푸터 & 카피라이트
</div>

 

row 는 레이아웃 구성에서 가로 '열'을 뜻합니다. 아래에서 "네비게이션", "이미지 슬라이더", " 최근포스트 3개", "하단 푸터 & 카피라이트" 부분이 각각의 row '열'을 구성합니다.


<div class="container">
<div class="row">네비게이션</div>



<div class="row">이미지 슬라이더</div>

<div class="row">최근 포스트




최근 포스트


최근 포스트</div>


<div class="row">하단 푸터 & 카피라이트</div>
</div>

 

span은 세로 '행(column)'을 뜻합니다. 다른 말로 '단'이라고도 말할 수 있습니다.
부트스트랩은 전체적으로 12열을 지원하고, 일반적으로 1단, 2단, 3단, 4단 정도로 레이아웃으로 설계합니다. 아래에서 "네비게이션", "이미지 슬라이더", "하단 푸터 & 카피라이트" 부분은 1단 구성, "최근 포스트" 부분은 3단 구성입니다.

span1 부터 span12까지가 있으며,
1단 구성을 위해서는 span12 (12행을 모두 사용 : 12행*1단=12행),
2단 구성은 span6 (6행을 사용 : 6행*2단=12행),
3단 구성은 span4 (4행을 사용 : 4행*3단=12행),
4단 구성은 span3 (3행을 사용 : 3행*4단=12행) 입니다.


<div class="container">
<div class="row"><div class="span12">네비게이션</div></div>



<div class="row"><div class="span12">이미지 슬라이더</div></div>

<div class="row">
<div class="span4">
최근 포스트
</div>




<div class="span4">
최근 포스트</div>



<div class="span4">
최근 포스트</div>
</div>


<div class="row"><div class="span12">하단 푸터 & 카피라이트</div></div>
</div>

 

offset은 span 클래스 뒤에 위치하여 함께 쓰이면서 '들여쓰기'처럼 빈 열을 추가합니다.


<div class="container">
<div class="row"><div class="span12">네비게이션</div></div>



<div class="row"><div class="span12">이미지 슬라이더</div></div>

<div class="row">
{빈 공간}




<div class="span4 offset4">
최근 포스트</div>



<div class="span4">
최근 포스트</div>
</div>


<div class="row"><div class="span12">하단 푸터 & 카피라이트</div></div>
</div>

 

이들 클래스를 스타일 요소에 클래스로 지정하여 레이아웃을 설계할 수 있습니다.

 

블로그 이미지

환타73

디지털 콘텐츠 제작 및 연구 & 개발. 온오프라인 강의.

,