웹마스터 팁
본문 내부의 이미지를 썸네일화 시키지 못하는 버그 해결법
2012.07.19 07:38
출처 - http://sejin7940.co.kr/index.php?mid=xe_tips&document_srl=35563
제 홈피에 적어둔 글이다보니, 말이 짧습니다. 양해바랍니다 ^^
----------------------------------
등록된 이미지가 없고, 목록설정에서 요약 을 사용하지 않는 경우
본문 내부의 이미지를 썸네일화 시키지 못하는 버그가 있다.
이는 columnList 라는게 XE 1.5 에서 추가되면서 쓰면서,
목록설정에서 요약이 없는한 $this->get('content') 값이 전달되지 않기 때문이다.
왜냐하면 썸네일 생성하는 문구의 초반에 이 값이 있는지 여부로 썸네일 추출여부를 결정하기 때문이다.
글을 등록한 직후인 view 페이지에서는 이 값이 존재한다.
따라서 글 등록한 후에 아래의 목록상에서는 썸네일이 존재하는듯 보이나
목록으로 들어오면 안 보인다.
사실 view 페이지에서 벌써 썸네일은 생성이 되어있다.
단지, 목록에서 썸네일을 가져올때 (참고로, 의외로 썸네일 생성하는 함수랑 썸네일 불러오는 함수가 동일하다 ^^ makeThumbnail 이 따로 없다.)
제일 상단에서 이 get('content') 가 없어, 만들어져있는 썸네일을 가져오기전에 return 되어버려 빈 썸네일이 생기는 것이다.
추후 공식패치가 나오긴하겠지만
임시적인 해결방법을 설명하면...
modules/document/document.item.php 에서
function getThumbnail 에서 대략 587번째 줄 즈음에 있는
// Return false if neither attachement nor image files in the document 바로 아래의
if(!$this->get('uploaded_count') && !preg_match("!<img!is", $this->get('content'))) return;
부분을 아래걸로 대체하면 버그가 고쳐진 상태에서 정상 작동한다.
$args->document_srl = $this->document_srl;
$output = executeQuery('document.getDocument', $args, $this->columnList);
$content = $output->data->content;
if(!$this->get('uploaded_count') && !preg_match("!<img!is", $content)) return;