요즘 구글 서치 콘솔에서 오류들 원인을 찾아서 수정하는 작업을 하고 있습니다.
eond.com/memolog/228413 페이지에서 오류가 발생하더군요.
PHP에러로그를 찾아보면 문법 오류라고 나온다.
AH01071: Got error 'PHP message: PHP Exception: ParseError #0 "syntax error, unexpected end of file" in modules/board/skins/sosi_memo/insert_document.html on line 53\n#0 /var/www/vhosts/eond.com/httpdocs/classes/template/TemplateHandler.class.php(183): TemplateHandler->_fetch()\n#1 /var/www/vhosts/eond.com/httpdocs/files/cache/template/modules/board/skins/sosi_memo/_style.memo.html.php(60): TemplateHandler->compile()\n#2 /var/www/vhosts/eond.com/httpdocs/classes/template/TemplateHandler.class.php(415): include()\n#3 /var/www/vhosts/eond.com/httpdocs/classes/template/TemplateHandler.class.php(183): TemplateHandler->_fetch()\n#4 /var/www/vhosts/eond.com/httpdocs/files/cache/template/modules/board/skins/sosi_memo/list.html.php(6): TemplateHandler->compile()\n#5 /var/www/vhosts/eond.com/httpdocs/classes/template/TemplateHandler.class.php(415): include()\n#6 /var/www/vhosts/eond.com/httpdocs/classes/template/TemplateHandler.class.php(183): TemplateHandler->_fetch()\n#7 /var/www/vhosts/eond.com/httpdocs/classes/display/HTMLDisplayHandler....'
문제가 되는 페이지는 해당 스킨 sosi_memo/insert_document.html 파일이었다.
처음에는 sosi_memo/list.html 에서 먼저 찾아봤는데 동일한 영역에서 insert_document.html 을 불러오고 있었다.
이 부분을 빼주면 정상적으로 코드는 돌아간다.
위 오류로그를 보면 _style.memo.html 파일에서도 동일하게 오류 메세지가 나타나는데 마찬가지 해당 파일도 insert_document.html 을 로드하고 있다.
insert_document.html 파일에서 문제가 되는 영역은 다음 구문이었다.
<select name="title_color" id="title_color" <!--@if($oDocument->get('title_color'))-->style="color:#{$oDocument->get('title_color')};"<!--@end--> onchange="this.style.color=this.options[this.selectedIndex].style.color;">
<!--@if(...)-->...<!--@end-->
일반적으로 볼 땐 아무 문제가 없는 코드인데, 문제점은 저 스킨을 만든 람보님이 너무 복잡하게 코드를 짜놓았던거 같다.
구문법, 신문법의 차이인데 XE 템플릿은 신문법에서 최대한 오류가 적게 나타나기도 하고, 이프엘스, 포이치문 등
이렇게 <!--@....--> <!--@end--> 로 감싸져있는 부분은 동일한 <!--@end-->가 도대체 어디를 끊는다는 건지 제대로 템플릿을 해석하지 못하는데서 발생한 오류같다.
<!--@end--> 이 부분이 군데 군데 있는게 가장 큰 문제인데, 이 부분을 아래와 같이 수정하면 페이지가 정상적으로 로드된다.
수정한 코드
<select name="title_color" id="title_color" onchange="this.style.color=this.options[this.selectedIndex].style.color;" style="color:#{$oDocument->get('title_color')};"|cond="$oDocument->get('title_color')">
PHPStorm등의 에디터에서 코드를 볼 때도 코드가 훨씬 깔끔해진다.
여기까지 하면 로드는 문제없으나, 글 등록이 안된다.
'xe sosi_memo 오류 원인' 이라고 구글링해보니, 문하우스님 팁이 나오는데,
https://moonhouse.co.kr/xetip/432930
라이믹스에서는 글 내용이 없으면 글이 등록되지 않는 규칙이 있단다.
write_memo.html 에서 이 부분을 추가해준다.
<input type="hidden" name="content" value="빈문서" />
insert_document.html에서도 동일하게 이 부분을 추가한다.
*form 안에 넣어주면 된다.