게시글에 자동링크 주기
대부분의 에디터들은 http 또는 https 로 시작하는 주소를 주면 자동링크가 먹힙니다만
에디터에 따라 또는 텍스트 옵션으로 글쓰기를 하는 경우에는 자동링크가 걸리지 않을 수도 있습니다.
view.skin.php 의 가장 하단부에 아래의 스크립트를 입력합니다.
이 코드는 게시글 안에 있는 기존의 a 태그까지 보호합니다.
그래서 자동링크 옵션이 있는 스마트에디터 등에 적용을 해도 상관은 없습니다만 중복성이기에 그럴 필요는 없고 자동링크가 보장되지 않는 에디터에만 사용하세요.
이미지나 오디오 또는 비디오나 아이프레임의 src 와 모든 엘레먼트의 title 과 이미지의 alt 그리고 배경으로 사용하는 백그라운드 이미지 경로는 링크로 바뀌지 않습니다.
링크 타겟은 _blank 로 주었는데 _self 등으로 바꾸려면 그 부분(딱 한 곳)만 찾아서 고쳐주세요.
프로토콜은 http 와 https 두 개만 적용하였습니다.
<script>
function autoLink() {
for (beforeLink of arguments[0].querySelectorAll("a")) beforeLink.innerHTML = beforeLink.innerHTML.replaceAll('htt', 'htt*');
keepProtocol = arguments[0].innerHTML.replaceAll('="htt', '="htt*');
arguments[0].innerHTML = keepProtocol.replace(new RegExp("(http|https)://([-/.a-zA-Z0-9_~#%$?&=:200-377()]+)", "gi"), "<a href='$1://$2' target='_blank' rel='nofollow'>$1://$2</a>").replaceAll('="htt*', '="htt');
for (afterLink of arguments[0].querySelectorAll("a")) afterLink.innerHTML = afterLink.innerHTML.replaceAll('htt*', 'htt');
}
autoLink(bo_v_con);
</script>
autoLink(bo_v_con); 에서 bo_v_con 은 게시글의 본문을 담는 div 의 아이디입니다.
이것 대신 아래의 것들 중 본인이 편한 걸 사용해도 되겠습니다.
autoLink(this["bo_v_con"])
autoLink(window["bo_v_con"])
autoLink(document.getElementById("bo_v_con"))
autoLink(document.querySelector("#bo_v_con"))
꼭 bo_v_con 뿐 만이 아니라 다른 형태의 컨텐츠라 할지라도 아이디나 클래스 등을 가지고 같은 형태로 원하는 영역에 자동링크를 줄 수 있게끔 함수로 만들었으니 응용해서 사용하실 분은 그렇게 하세요.
참고로 https://sir.kr/g5_skin/51500 에서 자동링크가 안 먹는 에디터의 경우는
이 게시글의 코드를 적용하거나 아니면 이 게시글의 코드를 링크게시글 첨부파일의 가장 상단에 넣어주세요.