XE타운 고수님들의 소중한 팁으로 XE SEO 모듈을 조금씩 수정하면서 사용하고 있었습니다.

- 기븐님의 "새로 나온 SEO 모듈 1.8.0 버전에 트위터 카드 기능 추가하기 (내용추가: 16.04.01.)"

- 불금님의 "XE SEO 모듈 수정 - 섬네일 있으면 사이트 이미지 대신에 가져오기"

게다가 요즘엔 XE SEO 모듈 자체가 안정화되면서 (조촐한 사이트이긴 하지만 그래도) 쏠쏠하게 재미를 느끼고 있습니다.

 

그렇게 평화로운 일상을 보내며 XE타운을 눈팅하던 어느 날, 문득 이런 생각이 들더군요.

섬네일이 있는데도 굳이 업로드된 이미지 파일을 모두 SEO에 반영할 필요가 있을까...

물론 페북 같은 곳에서는 불러들인 이미지들 중에서 선호에 따라 취사 선택해서 링크를 공유할 수도 있지만, 가로 세로 비율이 서로 다른 이미지를 동시에 게시한다거나 하면 타임라인이 오히려 난잡해질 때가 더러 있더라구요.

 

결국, 이런 결론에 이르렀습니다:

1. 섬네일만 SEO에 반영하자.

2. 그리고 불금님의 팁처럼 섬네일이 없는 경우에만 사이트 대표 이미지를 반영하도록 하자.

3. 물론 파일 첨부만 하고 본문 삽입은 안 해서 섬네일이 안 만들어진 경우도 있을 수 있겠지만, 본문 삽입이 안 되어 있어도 첨부 파일만으로 섬네일이 생성되도록 이미 어떤 팁을 적용한 적이 있으니 문제가 없을 것이다.(근데 그게 어떤 분의 어떤 팁이었는지 도무지 기억이 안 나용;;;)

 

그래서 seo.controller.php 파일을 다음과 같이 수정했습니다. XE SEO 모듈 1.8.19 버전의 원본 파일을 기준으로 봤을 때 대강 이런 식입니다.

 

 

1. 115번 줄 추가: 섬네일 변수를 새로  만들어줬습니다. 다음과 같이 $piece->author = $oDocument->getNickName(); 와 $tags = $oDocument->get('tag_list'); 사이에 넣었습니다.

$piece->author = $oDocument->getNickName();
$getThumbnail = $oDocument->getThumbnail('source_file'); // 섬네일을 원본 파일 사이즈에 맞춰 추출
$tags = $oDocument->get('tag_list');

$oDocument->getThumbnail('source_file')로 하면 원본 파일을 직접 추출하는 건 아니지만, 원본과 동일한 크기로 섬네일이 만들어지는 것으로 알고 있습니다. 파일명은 '폴더/0x0.ratio.jpg'로 저장되구요.

 

 

2. 118번~155번 줄 삭제: 문서에 첨부된 이미지 파일을 불러오는 부분 같은데, 저는 섬네일만 추출할 것이므로 과감히 삭제했습니다. 즉, 아래의 코드를 모두 지운 것이죠.

$document_images = false;
if($oCacheHandler->isSupport()) {
$cache_key_document_images = 'seo:document_images:' . $document_srl;
$document_images = $oCacheHandler->get($cache_key_document_images);
}

if($document_images === false && $oDocument->hasUploadedFiles()) {
$image_ext = array('bmp', 'gif', 'jpg', 'jpeg', 'png');
$document_images = array();

foreach ($oDocument->getUploadedFiles() as $file) {
if ($file->isvalid != 'Y') continue;

$ext = array_pop(explode('.', $file->uploaded_filename));

if (!in_array(strtolower($ext), $image_ext)) continue;
list($width, $height) = @getimagesize($file->uploaded_filename);
if($width < 100 && $height < 100) continue;

$image = array(
'filepath' => $file->uploaded_filename,
'width' => $width,
'height' => $height
);

if($file->cover_image === 'Y') {
array_unshift($document_images, $image);
} else {
$document_images[] = $image;
}
}

if($oCacheHandler->isSupport()) {
$oCacheHandler->put($cache_key_document_images, $document_images);
}
}

if($document_images) $piece->image = $document_images;

사실 이것 때문에 ㄷㄷㄷ합니다...

 

 

3. 168번~175번 줄 수정: 사이트 이미지를 불러오는 부분도 수정했습니다. 원본에는 이렇게 되어 있죠.

if($oCacheHandler->isSupport()) {
$cache_key = 'seo:site_image';
$site_image = $oCacheHandler->get($cache_key);
if($site_image) {
$site_image['url'] = $config->site_image_url;
}
$piece->image[] = $site_image;
}

 

이걸 다음과 같이 고쳤습니다. (1) 섬네일이 있으면 섬네일 정보를 읽어들어와 추출합니다. (2) 그리고 getimagesize로 원본 크기의 섬네일로부터 가로 크기와 세로 크기도 읽어냅니다. (3) 마지막으로, 섬네일이 없는 경우에만 사이트 대표 이미지를 불러들이도록 했습니다.

if($oCacheHandler->isSupport()) {
$cache_key = 'seo:site_image';
$site_image = $oCacheHandler->get($cache_key);
//섬네일 추출, 섬네일 없으면 사이트 이미지 추출
$cache_key = 'seo:thumbnail';
$thumbnail = $oCacheHandler->get($cache_key);
if($getThumbnail){
$size = getimagesize(str_replace(getUrl(), './', $getThumbnail)); // 섬네일의 이미지 파일 정보 추출
$thumbnail['url'] = $getThumbnail;
$thumbnail['width'] = $size[0];
$thumbnail['height'] = $size[1];
} else {
$site_image['url'] = $config->site_image_url;
}
$piece->image[] = $thumbnail;
$piece->image[] = $site_image;
}

위에서부터 순서대로 수정하니까 제가 가진 파일로는 131~147행에 해당하게 되네요.

 

이상과 같이 수정했습니다. 그런데 원래 소스에서 상당 부분을 삭제하고 나니까 갑자기 부담스러움이 생깁니다.

원래는 이 게시물도 사용팁에 올릴까 생각해봤는데, 괜히 겁이 나더라구요ㅠㅠ

일단 아직까지 큰 오류는 못 느끼고 있습니다만, 언제 어디서 어떤 문제가 돌출할지도 모르겠구요.

 

정말 이렇게 해도 되는 걸까요? 별 문제 없을까요?

  • Lv19
    근데, 코드 하이라이터에 tab키는 반영이 안 되는 걸까요? 어떨 땐 되고 어떨 땐 안 되고, 사용법을 잘 모르겠어요;;; 소스 보기가 영 불편하게 돼버렸네요ㅡㅜ
  • Lv5
    한번 적용해 볼게요~ 감사합니다