혹시 XE자료중에

외부링크면 무조건 새창으로 열리게 하는 그런 기능의 자료가 있나요?

이거 은근히 신경쓰이죠...  

 

운영자 입장에서는 외부사이트로 전환되면 다시 돌아오기 불편한 현재창에서 열리는게 별고 달갑지 않지요.

 

이거 혹시 자료가 ... 있을까요?

  • profile

    검색을 하다보니 이런 댓글이 보이는데요..
    board.default.js 파일에...

    jQuery(function(){ jQuery('.xe_content[class^=document_] a').attr('target', '_blank'); });
    jQuery(function(){ jQuery('.xe_content[class^=comment_] a').attr('target', '_blank'); });

    이게 잘 되는거면 여기서 자신의 사이트가 아니라면 이라는 조건을 걸어줄 수 있을까요?

     

     

    윽.. 스케치북5 js 에는 저런게 없네요 ㅡㅡ;

  • profile

    jQuery(function() {

        jQuery('.xe_content[class^=document_] a, .xe_content[class^=comment_] a').each(function() {

            if(this.hostname !== window.location.hostname) {

                $(this).attr('target', '_blank');

            }

        });

    });

  • profile profile
    꺅~~~ 밑에 댓글 다는중에 답 주셨네요. 감사합니다. 넙죽~~~
  • profile profile
    저희 사이트에 맞게 수정할게 있나요??? 현재창으로 열려버리네요...
  • profile profile
    그냥 링크의 도메인과 현재 페이지의 도메인을 비교하는 코드인데...

    비교 조건이 상당히 엄격하기 때문에 현재창으로 열려야 하는 링크가 새창으로 열리는 문제는 있을 수 있지만... 반대로 새창으로 열려야 하는 링크가 현재창으로 열린다면 어딘가 스크립트 오류가 있어서 아예 저 부분이 실행되지 않는 게 아닌지 확인해 볼 필요가 있겠습니다.
  • profile
    오... 스케치북5 스킨의 board.js 파일 끝에 추가해 주니 새창으로 열리네요..

    근데 우리 사이트는 새창으로 안열리게 해주고 싶은데요..... 윽...
  • profile profile

    if(this.hostname !== window.location.hostname) {

    이 부분을 수정해야 할 것입니다.
    각각 값을 확인해봐야 할듯 하네요.

    this.hostname 대신
    jQuery(this).attr('href')를 쓰면 어떨까 합니다.
    그리고 !==가 아닌 문자열 찾기인 indexOf로 비교하면 어떨까 하구요.

  • profile
    if(this.hostname !== window.location.hostname) {

    이 부분을 아래처럼 바꾸면 어떨려나요?

    var url1 = jQuery(this).attr('href');
    if(url1.indexOf(window.location.hostname) != -1) {
  • profile profile

    잘 되지는 않네요. 외부링크인데 현재창으로 열리네요.

  • profile profile
    url1 을 고쳐야 하는건가요?
  • profile
    정규식을 써야할 것 같은데요?

    도메인/abc 이런 것까지 제외하려면..
  • profile

    jQuery('.xe_content[class^=document_] a, .xe_content[class^=comment_] a').each(function() {
    var a = jQuery(this).attr('href');
    var b = /((https?:)?\/{2}(?!xetown)[\da-z\.-]+\.[a-z\.]{2,}[\w\/?&;=#%~\.-]*[\/]?)/g;
    if(b.test(a)) {
    $(this).attr('target', '_blank');
    }
    });

    일케 하면 될런지.. 중간에 xetown 만 바궈서 한번 해보세요

  • profile profile
    외부링크인데 새창으로 나가요...
  • profile profile
    내부 링크 말씀이시죠? 흠..

    if(b.test(a)) {
    $(this).attr('target', '_blank');
    } else {
    $(this).attr('target', '_self ')
    }

    이렇게 한번..
  • profile profile
    앗.. 죄송 말을 잘못했습니다. 외부링크인데 현재창이요...
  • profile

    ----------- 그냥 처음 거 쓸게요... 도움 감사했습다. -------------

    jQuery(function(){ jQuery('.xe_content[class^=document_] a').attr('target', '_blank'); });
    jQuery(function(){ jQuery('.xe_content[class^=comment_] a').attr('target', '_blank'); });


    이거로 해도 본문에 저희 사이트 링크 적을때 _self 로 하면 새창으로 안뜨는 듯 합니다.

    새창으로 뜨지만.. ㅋㅋ

    많은 답변 감사했습니다.

  • profile

    <script src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'></script>

    <script type='text/javascript'>
    $(document).ready(function() {
    $("a[href^='http://']").each(
    function(){
    if(this.href.indexOf(location.hostname) == 1) {
    $(this).attr('target', '_self');
    }
    }
    );
    $("a[href^='https://']").each(
    function(){
    if(this.href.indexOf(location.hostname) == 1) {
    $(this).attr('target', '_self');
    }
    }
    );
    });
    </script>

    될려나요.

  • profile profile

    이 스크립트를 board.js 에 그대로 넣으면 되나요?

     

    <script src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'></script>  

    포함해서 스킨에 넣어야 하는건가요??

  • profile profile
    제이쿼리는 혹시나 하고... 전 빼고 그냥 게시판 설정 상단 내용에 테스트로만 넣어봤어요 ㅎㅎ
  • profile profile
    스킨 _read.html 파일 하단에 넣어봤는데 저희는 안되네요.
  • profile profile
    저희 사이트가 클라우드플레어를 사용하는 사이트라 그런건지는 모르겠지만 잘 되시는 것도 저희쪽은 안되네요. 감사합니다.
  • profile

    정 안되면 모든 링크에 Ctrl+클릭 생활화를... ㅎㅎ

  • profile profile
    아니요. 저보다도 방문객들이 이탈해서 되돌아오기가 힘드니 신경이 쓰이는 부분이라서요. 뭐 정 안되면 이정도로 저희 사이트 링크도 새창으로 뜨는것을 감수해야 할 듯 합니다.
  • profile
    jQuery('.xe_content[class^=document_] a, .xe_content[class^=comment_] a').each(function() {
    var a = jQuery(this).attr('href');
    var b = /(사이트이름)/g;
    if(!b.test(a)) {
    jQuery(this).attr('target', '_blank');
    } else {
    jQuery(this).attr('target', '_self');
    }
    });

    이렇게 해보실래요? 상대경로가 들어간게 아니라면 되는 것 같긴한데..
  • profile profile
    사이트이름이 도메인이죠? 밖에 나와서 좀 있다 해보겠습니다.
  • profile profile
    네 xetown 이라면 xetown만요
  • profile profile
    브라보~~!!

    완전 감사합니다. 정말 눈물이 주룩 날 정도입니다.
    잘되네요.... 너무 감사하게 잘 쓰겠습니다.
  • profile profile
    if문 대신에 제이쿼리로....대단합니다....^^
  • profile profile
    이 코드를 애드온으로 만들어도 될까요?
  • profile profile
    오.. 잘되다니 다행입니다
  • profile profile
    그럼요!
  • profile profile
    이걸 어디다가 달면 동작을 할 수 있을까요..
  • profile profile
    혹시 위 코드를 어디다가 달으셨나요..

    전 외부링크를 현재창으로 열리게 하고 싶어서..
  • profile
    https://xetown.com/index.php?mid=xepoint&page=1&document_srl=219736

    @proto
    애드온 등록했습니다.
  • profile profile
    오.. 좋네요. 아이디어를 더 드리면.. 애드온이니까...
    설정에 문자열을 여러개(쉽표등으로 구분...) 넣을 수 있게 하면 자신의 사이트말고 특정한 사이트도 셀프로 띄울수도 있겠습니다만... 이게 필요하지는 않을 듯 합니다. 과연 어떤 다른 외부사이트를 셀프로 띄울 필요가 있을지... 효용성이 제로에 가까운 아이디어네요 ㅋㅋ
  • profile profile
    저도 그 생각은 했는데요... 굳이 그럴 이유가 없다고 판단이 되어서요...
    어차피 강제로 모든 target을 바꾸는 것이라서요~
    작성자가 임의로 지정해놓은 target도 바꾸는 것이라...^^
  • profile profile
    네. 맞습니다. 근데 사용하고 싶은모듈 체크 후 저장이 안되네요 끙....
  • profile profile
    애드온에 문제가 있나요??
    제 사이트에선 잘 되던데요....-0-
  • profile profile
    잘되긴 하는데 체크된 모듈이 표시가 되지 않는 문제가 있습니다.

    그러니까... 특정한 게시판에서만 사용하기 위해 체크한 곳이 작동은 하는데 어느곳에 체크되어 있는지 표시가 안됩니다.
    php파일에 공백이 있어 그문제인줄 알고 제거하고 업로드해도 마찬가지이네요.
  • profile profile
    -0-;;;; 야매 제작자라서 잘 모르는 문제네요....-0-;;;;;
  • profile profile
    db에서 직접확인해보면 사용대상 모듈이 선택되어있는게 확인이 됩니다. 하지만 관리자페이지에서는 어떤 모듈들이 사용대상인지 보여주지 못합니다. 캐시파일 재생성 해보았고 다른 애드온은 이상 없음을 확인했어요.
  • profile profile
    해결했습니다. 애드온방식이 버전별로 다른가 봅니다.

    <addon version="0.2"> 이렇게 고치니 표시되네요. 아마 뭔가 바뀐게 0.2 형식 인가봅니다.
  • profile profile
    그건 기능과는 관계가 없이 그냥 제작자가 임의대로 버전 올리는 건데요..
    아무튼 해결되었다니 다행입니다...^^
  • profile profile
    와 제가 완전 원하던 기능인데 감사합니다.!!
  • profile profile
    아닌거 같습니다. 애드온의 형식이 버전별로 다를듯 합니다. 요즘 나오는 애드온들은 0.2로 모두 동일한듯 하고 애드온 자료의 버전은 따로 표시해서 1.0 .2.0 이런식으로 표시하는거 같아요.
  • profile profile
    최상단 <addon version="0.2">는 xe의 adddon 버전이므로 반드시 xe 와 맞추어 주어야하고
    제작자의 버전표시는 <version>1.7</version> 에 기입합니다.^^;
  • profile profile

    허억!!!!!
    그렇군요!!!!!!!!!!!!!!!

    역시 제대로 공부하고 한 것이 아니라서... 가르침 감사합니다!