Blogger - 14 b:if 제어문

Blogger b:if 제어문 - 블로거에서 가장 많이 사용되는 if 문 사용 방법.

if는 블로거에서 가장 많이 사용되는 제어문입니다.

b:if 제어문

구글 블로그의 if 문은 <b:if> ... <b:elseif/> ... <b:else/> ... </b:if>와 같은 방법으로 제어할 수 있습니다.

<b:if cond='조건식 1'>
  <!-- 조건이 참이면 실행 -->
<b:elseif cond='조건식 2'/>
  <!-- 첫 번째 조건이 거짓이면 실행 -->
<b:else/>
  <!-- 모든 조건이 거짓이면 실행 -->
</b:if>

<b:if>에는 하나의 속성만 사용할 수 있으며 cond 속성은 불리언(boolean)으로 지정합니다.

예를 들어 다음과 같은 형식으로 사용될 수 있습니다.

<b:if cond='data:view.isHomepage'>
  <!-- 메인 페이지이면 실행 -->
</b:if>

예제

예제 1

다음은 두 조건 모두 모바일로 접속한 사용자이면 실행하는 코드입니다.

<b:if cond='data:blog.isMobile == "true"'>
  <!-- 모바일로 접속하면 실행 -->
</b:if>

<b:if cond='data:blog.isMobile'>
  <!-- 모바일로 접속하면 실행 -->
</b:if>

다음과 같이 중첩도 사용 가능합니다.

<b:if cond='data:blog.isHomepage'>
  <b:if cond='data:blog.isMobile'>
    <!-- 메인 페이지이고, 모바일로 접속하면 실행 -->
  </b:if>
</b:if>

또한 논리 연산자와 결합하여 사용 가능합니다.

다음은 모바일 접속이 아니지만 메인 페이지이면 실행하라는 뜻이 됩니다. !는 Not과 같고, ==는 and와 같습니다.

<b:if cond='!data:view.isMobile and data:view.isHomepage'>
  <!-- 조건이 참이면 실행 -->
</b:if>

<b:if cond='data:view.isMobile != and data:view.isHomepage == "true"'>
  <!-- 조건이 참이면 실행 -->
</b:if>

참고: 조건식에 사용된 따옴표는 작은 따옴표와 큰 따옴표 모두 사용 가능합니다.

예제 2

<b:if>에는 배열을 사용할 수 있습니다.

'조건식 == 값'과 같은 형식보다는 배열을 사용하는 것이 보기에도 좋고 효율적입니다.

<b:if cond='조건식 in [1, 2, 3, 4, 5, 6, 7]'>
  ...
</b:if>
<b:if cond='data:view.search.label in ["HTML", "CSS", "JS"]'>
  <!-- 라벨이 HTML, CSS, JS 중 하나라도 해당되면 실행 -->
<b:elseif cond='data:view.search.label not in ["SQL", "PHP"]'/>
  <!-- 라벨이 SQL, PHP 가 아니면 실행 -->
<b:else/>
  <!-- 모든 조건에 거짓이면 실행 -->
</b:if>

또는 중첩을 사용해도 좋습니다.

<b:if cond='조건식 == 1' >
  <b:if cond='조건식 == 2' >
    <b:if cond='조건식 == 3' >
      <b:if cond='조건식 == 4' >
        ...
      </b:if>
    </b:if>
  </b:if>
</b:if>

예제 3

<b:if>에는 삼항 연산자도 사용할 수 있습니다. 삼항 연산자는 <조건식> ? <true> : <false> 형식으로 주어진 조건식이 참이면 true를 거짓이면 false를 반환하는 형식입니다.

<div>
  <b:class expr:name='data:view.isHomepage ? "home" : "blogger"'/>
  <h1>제목</h1>
</div>

<!--
결과:
<div class='home'>
  <h1>제목</h1>
</div>
-->

현재 페이지가 메인 페이지이면 class 속성에 home을 추가하고, 메인 페이지가 아니면 blogger를 추가합니다.

5 comments

  1. 안녕하세요. 알려주신 연산 규칙 중 유독 하나만 적용이 안 돼서 문의드립니다.


    (모바일 페이지, 홈페이지, 라벨이 SP인 페이지에서 Random Posts 위젯을 숨깁니다)
    이 중에서 !data:blog.searchLabel == "SP"만 적용이 안 되고 있습니다(이 한 가지만 적용해도 안 됩니다). 참고로 제 블로그는 https://singingdalong.blogspot.com/
    입니다.

    무엇이 문제일까요?
  2. 안녕하세요? data:view.search.label == "SP"으로 하시면 되실거예요. 감사합니다.
    1. 이상하게 그게(!data:view.search.label == "SP") 안 됩니다. 그냥 모든 페이지에서 Random Posts 위젯이 숨겨집니다.
    2. !data:view.search.label == "SP"
      적용했는데, 모든 페이지에서 해당 위젯이 안 보입니다. 문법은 문제가 없는 것 같은데, 이것만 단독으로 써도 적용이 안 되는 것을 보면 위젯엔 애초 적용이 안 되는 것일까요?
  3. 수정이 안되서 다시 남깁니다. 느낌표가 빠졌네요~~
    data:view.search.label != "SP"