웹마스터 팁
본문 내부의 이미지를 썸네일화 시키지 못하는 버그 해결법
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;
댓글 11
-
파파민
2012.07.19 22:13
-
bigblue2010
2012.09.08 12:18
전왜 안될까요... 1.5.3.1 입니다....
-
루트엘
2012.09.09 20:25
이렇게해도 안되요..ㅠㅠ
-
매약
2013.02.09 20:48
안되요,,, 안되..ㅜㅜ
-
암지
2013.02.25 22:35
XE로 오긴왔는데 다들 바쁘신지 제작하신 모듈등의 업데이트도 없고
코어는 업뎃되고 ..모듈은 사용못하게 되어버리고 참 답답하네요
...흠
역시나 안되네요 ㅡ.ㅡ
-
비밀얌
2013.08.20 08:20
1.5.4.2 쓰고 있는데 코드를 말씀하신대로 수정하여도 올바르게 나오지가 않네요. 혹시 1.7.x 에는 코어에서 수정이 되었는지 궁금하네요.
-
socialskyo
2013.09.06 07:33
1.7에서도 같은 문제로 보이고. 이 팁을 통해 저는 잘 됩니다.
-
김형진354
2014.11.13 16:39
아쉽네요 ㅠㅠ 드디어방법을발견했나싶엇는데 ㅠㅠ 적용을해도 문제가해결되지않네요..
그래도 감사합니다..
참고로 저는 스케치북 게시판을 사용합니다..
-
1bobby
2014.12.15 10:42
modules\document\document.item
844 번째쯤 굵은 글씨를 삭제 혹은 주석처리 해주시면 됩니다.list($_w, $_h, $_t, $_a) = @getimagesize($tmp_file);
// if($_w<$width || $_h<$height) continue; 이부분을 주석처리 하시면 됩니다.
$source_file = $tmp_file;
$is_tmp_file = true;
break;
-
BJ람보
2014.12.15 11:23
list($_w, $_h, $_t, $_a) = getimagesize($tmp_file);
if($_w<$width && $_h<$height) continue;
843번째줄 '@'만 제거
844 번째줄 if문을 &&으로 수정.하시면 됩니다.
-
siteproducer
2014.12.24 16:25
저도 플리커 이미지를 링크하면 썸네일이 생성되지 않아서 여기까지 오게 되었는데요,
https://github.com/xpressengine/xe-core/issues/790 를 참조해 본 결과 저의 경우는 https:// 때문이었습니다. 플리커에서 제공하는 링크가 https 로 되어 있는데 이것을 http로 수정하니 썸네일 생성이 됩니다!
미봉책(?)일수도 있습니다만 일단 이렇게 해서 제 경우는 간단히 해결이 되었습니다.
(환경은 core 1.7.7.2, 스케치북5 1.7 입니다.)
세진님 덕분에 폼(?) 잡고 삽니다.
항상 건강하십시오. ^^