그누보드5에 간단하게 태그 기능 추가하기
본문
기존 그누보드의 검색 기능을 이용한 편법적인 태그입니다.
즉 그냥 태그한 키워드에 자동으로 해당 키워드 검색한 내용 링크를 걸어주는 방식이죠.
이 코드를 tail.sub.php 또는 head.sub.php에 넣으시면 됩니다.
[code]
<script>
document.addEventListener('DOMContentLoaded', function() {
// 페이지의 HTML 코드에서 #아이디 를 찾는 정규식
var regex = /#([\w가-힣]+)/g;
// HTML 문서의 모든 텍스트 노드를 순회하며 #아이디 를 찾아 수정
var textNodesIterator = document.evaluate(
"//text()",
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null
);
for (var i = 0; i < textNodesIterator.snapshotLength; i++) {
var textNode = textNodesIterator.snapshotItem(i);
var originalText = textNode.nodeValue;
var modifiedText = originalText.replace(regex, function(match, title) {
// 태그 안에 있는 경우에는 링크 생성하지 않음
if (textNode.parentNode.tagName.toLowerCase() === 'a' || textNode.parentNode.tagName.toLowerCase() === 'style' || textNode.parentNode.tagName.toLowerCase() === 'id') {
return match;
} else {
var searchUrl = 'http://' + window.location.host + '/bbs/search.php?sfl=wr_subject%7C%7Cwr_content%7C%7Cmb_id%7C%7Cwr_name%7C%7Cwr_datetime%7C%7Cwr_last%7C%7Cwr_ip&sop=and&stx=' + encodeURIComponent(title);
return '<a href="' + searchUrl + '" class="search_tag" style="text-decoration-line: none;color:#ee8438;">#' + title + '</a>';
}
});
if (modifiedText !== originalText) {
var newNode = document.createElement('span');
newNode.innerHTML = modifiedText;
textNode.parentNode.replaceChild(newNode, textNode);
}
}
});
</script>
[/code]
좋아요5
이 글을 좋아요하셨습니다
tak2님의 댓글
tak2 아이피 (112.♡.248.125) 작성일업데이트
https://dsclub.kr/code/801