* 이 기능은 공홈에 올라와 있는 트위터 카드 애드온(https://xe1.xpressengine.com/index.php?mid=download&package_id=22753315 참고) 의 기능과 일치합니다.

 

그러나 SEO모듈을 설치하고 저것도 같이 설치하면 태그가 중복되는 등의 문제가 있어서, 저는 그냥 애드온을 사용하지 않고 SEO모듈을 수정해서 사용하고 있습니다.

 

이번에 나온 1.8.0 버전에는 <meta name="xxx"> 를 추가할 수 있게 되었는데, 이를 이용해서 트위터 카드 태그를 추가하고 트위터에 등록해주면 됩니다.

 

 

 

1. 모듈 수정

 

seo 폴더에서 seo.controller.php 파일을 열고 "addMeta" 라고 검색하면 line 175 부분에 $this->addMeta('description', $piece->description, 'name'); 이라는 부분이 나오는데,

 

그 아랫부분에 다음과 같은 내용을 추가합니다.

 

$this->addMeta('twitter:card', 'summary_large_image', 'name');
$this->addMeta('twitter:title', $piece->title, 'name');
$this->addMeta('twitter:description', $piece->description, 'name');
$this->addMeta('twitter:domain', $config->site_name, 'name');

 

그 다음, 아래로 쭉 내리다 보면 $this->addMeta('og:image', $img['url']); 이러한 부분을 볼 수 있는데, 그 바로 윗줄에 다음과 같이 추가합니다.

 

$this->addMeta('twitter:image:src', $img['url'], 'name');

 

(주의: 위치가 꼬이면 안됩니다. foreach ($piece->image as $img) { 구문 안에 들어오게끔, 그리고 if(!$img['url']) { 구분 바깥에 위치하게끔 확인해주세요. $this->addMeta('og:image', $img['url']); 바로 윗줄에 추가하면 문제없습니다.)

 

 

 

2. 트위터 카드 검사하기

 

https://cards-dev.twitter.com/validator 여기로 들어가서 트위터에 로그인을 한 다음, Card URL 이라고 되어 있는 부분에 사이트 주소를 입력하면 트위터 태그가 자동으로 감지되며 카드가 출력됩니다. 제대로 출력될 경우 정상적으로 적용된 것입니다.

 

 

 

 

 

-----

내용추가

 

첨부파일 이미지가 있는 문서에서, 정상적으로 첨부파일 이미지가 출력되지 않고 사이트 이미지가 출력되는 문제가 있습니다.

 

현재 seo모듈의 특성 상 첨부파일이 있는 경우 이미지 태그가 두개 생성되기 때문에 발생하는 문제입니다. (첨부파일 이미지와 사이트 이미지 두개 다 생성됨)

 

https://xetown.com/square/154398 이 게시물의 댓글을 참조해서 해결하면 됩니다.

 

1.8.18 버전에서는 167번째줄 이하를 다음과 같이 수정합니다.

 

if($piece->image == null){
if($site_image) {
$site_image['url'] = $config->site_image_url;
}
}

 

 

혹시 어려우실까봐 변경 전후 비교사진을 올립니다.

 

1.png

 

  • profile
    트위터카드가 뭐에요?? 원초적 질문이네요 ㅡㅡ;
  • profile ?
    애드온 설명 참조해주세요
  • profile profile
    트위터에 사이트 링크를 공유했을때 제목/설명이 뜨게 하고, 사이트가 운영하는 트위터 계정도 같이 보여줄수 있게 하는 것입니다. 페이스북 공유 태그의 트위터 버전이죠.
  • profile profile
    아. 트위터에서도 별도로 또 운영을 하는군요. 근데 공식계정을 운영하지 않는 경우 사용이 또 애매해 지는군요. 개인계정으로 하기도 그렇구요.
  • profile ?
    일단 이 글은 공식 계정 입력하는 부분이 빠져 있습니다. 저걸 적용하면 그냥 트위터 공유했을 시에 카드 모양으로 썸네일과 요약정보 뜨는 것만 됩니다
  • profile
    seo 이용하긴 하는데... 네이버 등에는 별무 소용 없지 않은가요?
    구글에서는 잘 나오는 것 같기는 한데..
  • profile ?
    네이버도 되는걸로 알고 있습니다.
  • profile profile

    네이버에도 충분히 소용이 있습니다. 왜냐면 최근 웹수집 형태로 전환했고 그 방식이 이런 seo 최적화를 통한 시멘틱한 구성을 요구 하고 있습니다. 그리고 무엇보다도 1.8.0 버전이 네이버 관련 부서와 소통을 한 후 나온 결과물입니다.

  • ? profile
    그런가요.? 감사한 일이네요.
  • profile profile
    그렇군요... 감사합니다.
  • profile
    그나저나 이 팁 대로 수정했더니 트위터 카드 잘 나오네요... 멋집니다.
    감사합니다. ^^;;
  • profile
    중요한 내용 하나 있습니다. 수정하고 파일 업로드하고 난 이후 사이트 대표 이미지 새로 업로드 해야 합니다. 그렇지 않으면 메인페이지 같은곳에서 사이트이미지 태그가 안나와요. 이건 이 팁과는 별개지만 수정을 하고 나면 이렇게 되네요. 1.8.0 에서 발생되는 문제입니다.
  • profile profile
    와우 감사합니다. seo 설정에서 사이트 이미지를 새로 올렸더니, 위 validator 화면에서도 이미지가 잘 뜨네요..
    아까는 아무것도 안 떴었는데..
  • profile ?
    저도 첨에 당황했다가 며칠 전에 웹지기님 댓글이 기억나서 재업로드 두번쯤 하니까 되더군요
  • profile
    2.번 항목이 등록이 아니고 확인하는 단계인것 같은데요. 제대로 태그가 되어있는지요.. 등록과정은 아닌거죠?
  • profile ?
    저게 화이트리스트에 등록하는 과정이라고 알고 있었는데... 사실 실험해보지 않아서 정확하지는 않습니다만
  • profile ?
    가만보니 예전에는 validate & apply 라고 되어 있던게 그냥 validator 이라고 바꼈네요. 예전엔 등록과정이 있었는데 지금은 사라진건지

    이건 정확하게 모르겠네요
  • profile
    저는 해당 문서의 썸네일이 아니라 SEO에서 설정한 사이트 대표 이미지가 뜨네요. 사이트 대표 이미지를 바꿔봐도, 캐시파일을 재생성해봐도 마찬가지입니다. 뭔가를 잘못한 걸까요?
  • profile ?
    모르겠네요
  • profile profile

    그건 게시물을 게시물로 해석하지 못해서 생기는 문제입니다.

    문제가 되는 게시물 주소 하나를 공개해보세요.

    게시물 하나를 소스보기 하셔서
    <meta property="og:type" content="article"/>

    위 소스가 아닌
    <meta property="og:type" content="website"/> 로 보이신다면...
    게시글이 아닌 일반페이지로 해석해 버리는 겁니다.

    혹시 사용중인 자료중에 팝업애드온 같은게 있다면 이 팝업소스가 <head> 영역에 들어가서 seo 모듈에서 해석이 잘못되게 하는 수가 있습니다.
    검토해보세요.

  • profile profile

    저도 처음에 한번인가는 제대로 첨부파일이 뜨더니 그 뒤로는 계속 siteimage만 뜹니다.

    그래서 웹지기님 말씀대로 페이지 소스를 체크해봤지만
    메타태그는 정상적으로 article로 인식하고 있었고 대신....

    첨부 이미지화일 주소가 이런식으로 나오더라구요 http://도메인.co.kr/./files/attach/images/ ~~~~~~~~~~~~~.jpg
    siteimage의 주소는 제대로 http://도메인.co.kr/files/attach/site_image/~~~~~.png 로 나오고요.

     

    $this->addMeta('article:modified_time', $oDocument->getUpdate('c'));
    foreach ($piece->tags as $tag) {
    $this->addMeta('article:tag', $tag);
    }
    }
    
    foreach ($piece->image as $img) {
    if(!$img['url']) {
    if(!$img['filepath']) continue;
    $img['url'] = Context::get('request_uri') . $img['filepath'];
    }
    
    $this->addMeta('twitter:image:src', $img['url'], 'name'); //https://xetown.com/lakepark/214874//
    $this->addMeta('og:image', $img['url']);
    $this->addMeta('og:image:width', $img['width']);
    $this->addMeta('og:image:height', $img['height']);
    if($single_image) break;
    }
    
    $this->canonical_url = $piece->url;

     

    (제가 에디트플러스 그런것이 아니라 드림위버를 사용하는 관계로 줄번호는 틀릴수 있습니다)
    저 261의 request_uri와 filepath 문제인가? 하는 생각이 들어서요.

    한번 검토해주시면 감사하겠습니다. 윤삼님도 더 이상 댓글을 다시지 않은 것을 보면 article로 인식하지 못하는 문제는 아닌것 같습니다.

  • profile profile
    이거 이미지 링크가 /./ 이렇게 된거는
    코드를 간단하게 쓸라고 이렇게 해둔거에요 사실 ./를 치환하면 깔끔하게 보이긴 합니다만 그냥 두셔도 별 영향은 없으니 신경 안쓰셔도 됩니다.

    사이트 이미지의 경우는 그냥 링크를 그대로 불러와서 ./ 가 없는거에요.
  • profile profile
    예. 그냥 저래도 잘나오니까 안그래도 그냥 그런갑다....했는데...
    답변해주시니 시원해집니다. 감사합니다. m--m
  • profile

    소스보기시 og:omage가 중복(첨부파일URL & siteimage URL 둘다나옴)이 되어서 그럴까? 싶어서
    https://xetown.com/square/154398 불금님 댓글을 토대로 if구문을 넣어 감싸보았는 데
    og:image가 한개만 그것도 첨부파일이미지경로만 소스보기에서 뜨는 것은 매우 성공적입니다.
    하지만 첨부파일 이미지의 주소가 http//도메인/./files/attach/images/~~~.jpg로 나오는 것은 여전하고, 트위터 카드는 여전히 사이트이미지가 출력됩니다. (※ 문장이 엉망이라 3월 27일 수정합니다. ㅎ)

    희안한것은 저래도 페이스북 공유때는 사이트이미지가 아닌 첨부파일이미지로 카드가 잘 나옵니다. 구글 플러스에서도요.
    오로지 트위터에서만 site-image로 나와요 ㅠㅠ

    og:image url( http://도메인/./files/attach/images/~~~.jpg)은 동일하게 사용하는 거 같은데 저놈만 도대체 왜저럴까요?

  • profile

    자체해결 했어요. 본문에 있는 두번째 삽입부분요.

    $this->addMeta('twitter:image:src', $img['url'], 'name'); 

    이것에서 'name'을 빼니 'property'로 인식을 하고요. 캐쉬재생성을 해주고 나니까
    트위터 카드에서도 제대로 인식해서 첨부파일 이미지가 카드로 나옵니다. 물론 소스보기시에 주소는 여전히 /./이지만 하여간 잘됩니다. ^^

  • profile ?
    댓글내용이 잘 이해가 안되는데... 이 팁 적용시에 트위터에서 첨부이미지가 안 뜨고 사이트이미지만 뜬다는 말씀인가요?
  • ? profile

    예. 오로지 트위터만 사이트이미지로 카드가 떴습니다.
    특이한것은 처음엔 첨부파일 이미지가 잘떴었구요. 그러다 금새 오로지 사이트이미지로만 뜨더라구요.
    구글이나 페이스북에 게시물을 공유할때는(<-그냥 meta property og:image URL을 읽는) 전혀 문제가 발생하지 않고 잘 되고요.
    결국 주소가 /./로 나오는것이 문제가 전혀 아닌것 같았습니다.

    트위터쪽 메타정보를 'name'이 아니라 그냥 property 로 인식하게 하니까 잘되네요.
    하여간 덕분에 트위터 카드를 쓸수 있게 되어서 무척 감사합니다. (트윗을 통해 유입되는 방문자가 원래 상당하거든요. ^^)

  • profile ?
    음 근데 이상한게... 원래 저 트위터 카드 애드온 보면 name로 되어 있거든요. 제가 전에 따로 양식 찾아봤을때도 name이었던거 같은데... seo모듈 업뎃되기 전에 따로 수정해서 쓸 때도 잘 됐었구요

    암튼 확인해보고 나서 본문 수정하던가 해야겠네요. 팁 감사합니다
  • profile ?
    그동안 미뤄왔다가 오늘 확인해봤는데..

    위 링크걸린 글에 있는대로, og:image 태그와 twitter:image 태그가 두개씩 생성되는 게 문제였네요. (즉 사이트 이미지랑 첨부파일 이미지 두개 다 생성돼서 제대로 못 불러옴)

    불금님 if구문 적용하고 나니까, 따로 name 삭제 안 하더라도 정상적으로 불러오네요.

    (참고로 트위터 개발문서들 보면 property가 아니라 name로 되어 있어서, 일부러 name로 한 것입니다. 근데 property로 해도 잘 되나보네요. 전 일단 혹시 모르니까 그냥 트위터 문서들이나 다른 사이트들에서 하는대로 name로 하기로 했네요.)
  • profile ?
    본문에 내용 수정해서 해당 부분 추가했습니다.
  • profile
    기븐님 덕분에 다 잘 작동합니다. 감사합니다!!
  • profile

    고생하셨습니다. 저도 불금님 if구문 적용후에도 트위터만 site-image로 떴던 문제는 캐쉬탓일수도 있다고 생각합니다. 도큐먼트상으로 name으로 되어있다하니 그부분은 저도 되돌려놓는게 마음이 편할 것 같아요. 헤헤. 맘이 편해지네요.

    참고로 저도 웹지기님처럼,
    YJsoft님의 menudesc 버전 SEO에 =>기븐님 트위터카드 기능 추가 =>불금님 tip og:image한개만 뜨게하기. 를 적용중입니다. 눈에 불을 켜고 상형문자들을 해독하려고 들면 그 뜻이 좀 보이긴 보이더라구요? 키키킼 (쑥쓰 --;)

  • profile
    덕분에 잘 해결했습니다 고맙습니다^^