view.skin.php 뷰페이지에서 본문 링크제거. 이미지 링크는 예외 정보
view.skin.php 뷰페이지에서 본문 링크제거. 이미지 링크는 예외본문
그누보드5 순정 basic 게시판 기준입니다.
정규식으로 간단하게도 할수 있는데 외부에서 불러온 코드나 html 직접 작성 코드때문에
좀 더 확실하게 반영한 버전 입니다.
뷰페이지에서 a 태그를 찾고 href 링크를 제거합니다. (css 밑줄도 제거)
에디터에서 이미지를 넣을 경우 새창보기 등에 사용된 view_image 클래스의 링크는 제거 하지 않습니다.
view.skin.php 에서 아래 코드를 찾습니다.
<!-- 본문 내용 시작 { -->
<div id="bo_v_con"><?php echo get_view_thumbnail($view['content']); ?></div>
<?php //echo $view['rich_content']; // 과 같은 코드를 사용할 경우 ?>
<!-- } 본문 내용 끝 -->
그리고 아래 코드를 다음과 같이 변경합니다.
<?php
// 본문 내용 가져오기
$adp_content = get_view_thumbnail($view['content']);
// DOMDocument를 사용하여 HTML 파싱
$adp_dom = new DOMDocument();
// HTML5 호환성과 한글 깨짐 방지를 위한 설정
libxml_use_internal_errors(true);
$adp_dom->loadHTML('<?xml encoding="utf-8" ?>' . $adp_content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
libxml_clear_errors();
// 모든 a 태그 찾기
$adp_aTags = $adp_dom->getElementsByTagName('a');
// a 태그를 배열로 변환
$adp_aTagsArray = [];
foreach ($adp_aTags as $adp_aTag) {
$adp_aTagsArray[] = $adp_aTag;
}
// 각 a 태그 처리
foreach ($adp_aTagsArray as $adp_aTag) {
$adp_class = $adp_aTag->getAttribute('class');
// view_image 클래스가 없는 a 태그에서만 href 제거
if (strpos($adp_class, 'view_image') === false) {
$adp_aTag->removeAttribute('href');
// 기존 style 속성 가져오기
$adp_existingStyle = $adp_aTag->getAttribute('style');
$adp_newStyle = $adp_existingStyle;
// text-decoration: none 추가
if (!empty($adp_existingStyle)) {
$adp_newStyle = rtrim($adp_existingStyle, '; ') . '; text-decoration: none !important;';
} else {
$adp_newStyle = 'text-decoration: none !important;';
}
$adp_aTag->setAttribute('style', $adp_newStyle);
}
}
// 수정된 HTML 출력
$adp_modifiedContent = $adp_dom->saveHTML();
// XML 선언 제거 (필요한 경우)
$adp_modifiedContent = preg_replace('/^<\?xml[^>]*\?>/', '', $adp_modifiedContent);
?>
추가로 게시판 설정의 여분필드 bo_1 에 1 입력시에만 작동하게 할수도 있습니다.
1 입력시 적용. 공백으로 두시면 순정 그대로 작동합니다.
<?php if(isset($board['bo_1']) && $board['bo_1']){ // 게시판 설정의 여분필드 bo_1 값이 있다면 ?>
<?php
// 본문 내용 가져오기
$adp_content = get_view_thumbnail($view['content']);
// DOMDocument를 사용하여 HTML 파싱
$adp_dom = new DOMDocument();
// HTML5 호환성과 한글 깨짐 방지를 위한 설정
libxml_use_internal_errors(true);
$adp_dom->loadHTML('<?xml encoding="utf-8" ?>' . $adp_content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
libxml_clear_errors();
// 모든 a 태그 찾기
$adp_aTags = $adp_dom->getElementsByTagName('a');
// a 태그를 배열로 변환
$adp_aTagsArray = [];
foreach ($adp_aTags as $adp_aTag) {
$adp_aTagsArray[] = $adp_aTag;
}
// 각 a 태그 처리
foreach ($adp_aTagsArray as $adp_aTag) {
$adp_class = $adp_aTag->getAttribute('class');
// view_image 클래스가 없는 a 태그에서만 href 제거
if (strpos($adp_class, 'view_image') === false) {
$adp_aTag->removeAttribute('href');
// 기존 style 속성 가져오기
$adp_existingStyle = $adp_aTag->getAttribute('style');
$adp_newStyle = $adp_existingStyle;
// text-decoration: none 추가
if (!empty($adp_existingStyle)) {
$adp_newStyle = rtrim($adp_existingStyle, '; ') . '; text-decoration: none !important;';
} else {
$adp_newStyle = 'text-decoration: none !important;';
}
$adp_aTag->setAttribute('style', $adp_newStyle);
}
}
// 수정된 HTML 출력
$adp_modifiedContent = $adp_dom->saveHTML();
// XML 선언 제거 (필요한 경우)
$adp_modifiedContent = preg_replace('/^<\?xml[^>]*\?>/', '', $adp_modifiedContent);
?>
<?php } else { ?>
<!-- 본문 내용 시작 { -->
<div id="bo_v_con"><?php echo get_view_thumbnail($view['content']); ?></div>
<?php //echo $view['rich_content']; // 과 같은 코드를 사용할 경우 ?>
<!-- } 본문 내용 끝 -->
<?php } ?>
추천
2
2
댓글 5개

감사합니다

좋은 소스 감사합니다~
관리자는 게시판 별로 on, off 가 가능한 기능이 있다면 좋을것같네요
@데코이 게시판 설정의 여분필드로 on/off 할수 있게 추가했습니다.

@애드프로 와 이렇게나 빨리 감사합니다~

감사합니다 ^^