댓글 내용에 http 주소를 남길 경우 링크가 자동으로 적용되는 부분 제거
댓글을 남길 때 http 주소를 남기면 링크가 자동으로 걸리는데 해당 부분을 제거하는 방법을 살펴보겠습니다.
그누보드에서 본문과 댓글 내용 출력 부분은 모두 conv_content 함수를 사용합니다.
해당 함수는 lib/common.lib.php 파일에 있습니다.
// 내용을 변환
function conv_content($content, $html, $filter=true)
{
global $config, $board;
..........
..........
..........
$content = get_text($content, 1);
$content = url_auto_link($content);
}
return $content;
}
저기에서 빨간색 부분이 http 주소에 자동으로 링크를 거는 부분입니다.
본문과 댓글 내용 모두 링크를 제거하려면 저 빨간색 부분만 주석 처리하면 모든 게시판에 일괄 적용됩니다.
이번 내용은 댓글에서만 제거하는 게 목적이니 댓글에서만 삭제하는 방법을 살펴보겠습니다.
일단 위 함수를 그대로 복사 후 함수 이름만 바꾸고 아래 파일에 추가합니다.
extend/user.config.php
예를 들어 함수 내용을 아래에 있는 예제 내용처럼 추가하세요.
잘 살펴보시면 함수 이름이 conv_content_comment 으로 변경되었고
자동 링크 적용 부분인 아래 코드가 주석 처리되었습니다.
// $content = url_auto_link($content);
버전에 따라서 차이가 있을 수 있으니 현재 사용하고 계시는 그누보드 파일에서 함수를 직접 복사해서 적용하세요.
해당 함수는 lib/common.lib.php 파일에 있으며 아래 함수를 찾아서 복사하면 됩니다.
function conv_content($content, $html, $filter=true)
{
..............
}
다른 부분은 건들 필요가 없고 빨간색으로 체크된 부분 두 군데만 변경하면 됩니다.
(함수 이름 변경, 자동 링크 제거)
// 내용을 변환 (링크 제거)
function conv_content_comment($content, $html, $filter=true)
{
global $config, $board;
if ($html)
{
$source = array();
$target = array();
$source[] = "//";
$target[] = "";
if ($html == 2) { // 자동 줄바꿈
$source[] = "/\n/";
$target[] = "<br/>";
}
// 테이블 태그의 개수를 세어 테이블이 깨지지 않도록 한다.
$table_begin_count = substr_count(strtolower($content), "<table");
$table_end_count = substr_count(strtolower($content), "</table");
for ($i=$table_end_count; $i<$table_begin_count; $i++)
{
$content .= "</table>";
}
$content = preg_replace($source, $target, $content);
if($filter)
$content = html_purifier($content);
}
else // text 이면
{
// & 처리 : & 등의 코드를 정상 출력함
$content = html_symbol($content);
// 공백 처리
//$content = preg_replace("/ /", " ", $content);
$content = str_replace(" ", " ", $content);
$content = str_replace("\n ", "\n ", $content);
$content = get_text($content, 1);
// $content = url_auto_link($content);
}
return $content;
}
이제 새로 추가한 함수를 활용해서 필요한 곳에 적용하면 됩니다.
원본 수정 없이 특정 게시판 스킨 댓글 내용에만 적용
(유의 사항 : 비밀 댓글을 사용하는 곳에서는 비밀글이 적용되지 않습니다.)
게시판 스킨 view_comment.skin.php 파일 수정
$comment = $list[$i]['content'];
위 코드를 이렇게 변경
$comment = conv_content_comment($list[$i]['wr_content']);
모든 게시판 댓글 내용에 일괄 적용
(비밀 댓글 문제 없음)
bbs/view_comment.php 파일 수정
$list[$i]['content'] = conv_content($row['wr_content'], 0, 'wr_content');
위 코드를 이렇게 변경 (총 2곳에 있습니다.)
$list[$i]['content'] = conv_content_comment($row['wr_content'], 0, 'wr_content');
쪽지에서도 링크 제거
memo_view.skin.php 파일 수정
<?php echo conv_content($memo['me_memo'], 0) ?>
위 코드를 이렇게 변경
<?php echo conv_content_comment($memo['me_memo'], 0) ?>
이렇게 원하는 곳에 새로 추가한 함수를 활용해서 적용하시면 됩니다.
## 추가 내용 ##
위 방법이 너무 번거롭고 복잡하면 간단하게 처리하는 방법도 있습니다.
차이점은 위에서 설명한 방법은 링크 자체를 제거하는 거고 아래 방법은 링크는 걸려있지만 클릭을 차단하는 방법입니다.
그누보드 원본 게시판 스킨 기준으로..
게시판 스킨 view_comment.skin.php 파일 하단에 스크립트 추가
<script>
jQuery(document).ready(function($){
$(".cmt_contents a").off("click");
$(document).on("click", ".cmt_contents a", function(e){
e.preventDefault();
});
});
</script>