1 minute read

Code 를 보여주고 싶은데 템플릿 변수가 적용되어버린

개요

이전 글 을 작성하다가 문제가 발생했다.

Sidebar에 tags를 추가하기 위한 html 코드를 보여주기 위해 코드블럭을 생성하였는데 코드가 렌더링되어 나타나버렸다.

코드블럭에 html, markdown 심지어 python, shell 까지 다 넣어봤지만 전부 렌더링이 되어버려 뇌정지가 와버렸다.

raw 태그

jekyll 템플릿에는 raw 라는 템플릿 태그가 존재한다.

해당 태그로 감싸진 내용은 템플릿 문법에 의해 렌더링되지 않도록 만들어준다.

raw-tag

raw 태그는 강제로 렌더링이 되어버리는 이슈에 급하게 캡쳐한 이미지…

원본 코드

아래는 원본 코드다.

 <div class="sidebar__tags">
    <h3>Tags</h3>
    <ul>
    {% assign sorted_tags = site.tags | sort %}
    {% for tag in sorted_tags %}
        <li>
        <a href="/tags/#{{ tag[0] | slugify }}">{{ tag[0] }} ({{ tag[1].size }})</a>
        </li>
    {% endfor %}
    </ul>
</div>

raw 태그 미적용

해당 코드를 그대로 코드 블럭에 삽입할 경우 아래와 같이 렌더링된다.

<div class="sidebar__tags">
    <h3>Tags</h3>
    <ul>
    
    
        <li>
        <a href="/tags/#django">django (1)</a>
        </li>
    
        <li>
        <a href="/tags/#github">github (3)</a>
        </li>
    
        <li>
        <a href="/tags/#github-pages">github pages (3)</a>
        </li>
    
        <li>
        <a href="/tags/#jekyll">jekyll (3)</a>
        </li>
    
        <li>
        <a href="/tags/#minimal-mistakes">minimal mistakes (3)</a>
        </li>
    
    </ul>
</div>

raw 태그 적용

위 원본 태그와 동일하게 보여지게 된다.

 <div class="sidebar__tags">
    <h3>Tags</h3>
    <ul>
    {% assign sorted_tags = site.tags | sort %}
    {% for tag in sorted_tags %}
        <li>
        <a href="/tags/#{{ tag[0] | slugify }}">{{ tag[0] }} ({{ tag[1].size }})</a>
        </li>
    {% endfor %}
    </ul>
</div>

마치며

포스트를 작성하는게 익숙하지 않아 이미 작성한 내용도 수정하는게 일상이다.

코드가 템플릿 태그에 의해 렌더링되어 보여지는 이슈를 해결하려고 하니 해결 방법으로 사용한 태그가 렌더링 되어버리는 이슈는 참 당황스러웠달까