웹마스터 팁

레이아웃을 수정하다 보면 가끔 이런 에러 메세지를 볼 때가 있을 것입니다.
Parse error: parse error, unexpected ':' in /home/hosting_users/xxx/www/xx/classes/template/TemplateHandler.class.php(341) : eval()'d code on line 14

제가 수정한 부분은 이 부분입니다.
body {  background:#FFFFFF url({getUrl()}{$layout_info->background_image}) repeat-x left top; }
이 부분을

body {
  background:#FFFFFF url({getUrl()}{$layout_info->background_image}) repeat-x left top;
}

이렇게 수정하였습니다...
물론 같은 의미이나 소스 보기에 간결해 보이고 훗날 수정을 용이하게 하기 위하여 가독성 때문에 수정한 부분입니다.
의미상으로는 차이가 없습니다.
하지만...

그랬더니 위와 같은 에러 메세지가 뜨고 페이지는 아무것도 출력이 되지 않았습니다.

제가 알기로는  "{" 또는 "}" 는 제로보드에서 어떤 해석을 거친다고 알고 있습니다.
일종의 smarty 템플릿 처럼 자체적으로 일정 코드를 치환한다고 알고 있습니다.
그래서 parse 에러가 난 것입니다.
다시 말해 php로 해석을 하고 나니 문법적으로 오류가 있기 때문에 에러가 난 것입니다.

이를 위하여는 이렇게 고쳐주어야 합니다.
위의 경우...
body {공간
  background:#FFFFFF url({getUrl()}{$layout_info->background_image}) repeat-x left top;
공간}
위의 코드에서 공간이라 함은 스페이스 키를 눌러서 일부러 공백을 준 것입니다.
이렇게 하니 에러가 발생하지 않고 정상적으로 출력이 되었습니다.

다시 말해서 "{" 다음에 올 문장과 공백을 두고
"}" 이전에 공백을 두니 위와 같은 에러는 발생하지 않았습니다.

많이 알고 계실지도 모르나 한 시간 삽집끝에 알아낸 것입니다.

참조하시라고 글 남깁니다. 버젼은 0.28 기준입니다.