bbPress의 플러그인 중에 새로운 글이 올라오면 "New" 라벨이 표시되도록 하는 플러그인이 있습니다. 하지만 너무 오래 되어 최신 bbPress 버전에서는 작동하지 않는 문제가 있습니다. 그래서 직접 한 번 만들어보자라는 생각으로 새로운 글에 "New" 라벨을 붙이는 함수를 만들기로 했습니다. 저는 단순하게 생각하여 글의 날짜와 현재 날짜 사이의 차이를 계산하여 며칠 이내의 글에 대해 New 라벨을 붙이는 방식으로 만들면 어떨까 생각했습니다.
php에 대해 까막눈인 저로서는 대단한 도전이라고 할 수 있죠. (물론 프로그래머가 보면 정말로 단순할 것 같은데 말이죠.) 인터넷의 각종 날짜 관련 소스를 가지고 궁리하기를 여러 날이 아니라 몇 시간만에 겨우 만들어낼 수 있었습니다. 동일한 소스를 가지고 KBoard에 대해 적용하면 어떨까하는 또 쓸데 없는 생각이 드는 게 아닌가요? 그래서 Kboard에 동일한 방식으로 적용했는데, 결과는 예상대로 잘 작동하네요. 결과 화면을 한 번 보면 다음과 같이 새로운 글에 New 라벨이 추가되어 있는 것을 볼 수 있습니다.
원하는시는 분은 아래의 두 코드를 각각 테마의 함수 파일(functions.php)과 Kboard의 skin 폴더 아래 list.php에 붙여넣기 하면 됩니다. (아래의 보라색으로 된 숫자 3은 원하는 숫자로 변경하세요. 만약 7일 이내의 글에 New 라벨을 표시하려면 7로 수정.)
// functions.php function mycustom_new_label_bbp($now, $last_active) { $now = new DateTime($new); $last_active = new dateTime($last_active); $interval = $last_active->diff($now); $difference = $interval->format('%R%a days'); if($difference < 3) { echo "<span class='mycustom_new_label'>"; echo "New"; echo '</span>'; } }
그리고 아래의 <?php ... ?> 부분(2~4번째 라인)의 코드를 kboard > skin > "스킨이름" 폴더 내의 list.php 파일에 삽입.
<td class="kboard-list-title"><div class="cut_strings"> <?php $now = date("Y-m-d"); $last_active = date("Y-m-d", strtotime($content->date)); mycustom_new_label_bbp($now, $last_active); ?> <a href="<?php echo $url->set('uid', $content->uid)->set('mod', 'document')->toString()?>"><?php echo $content->title?> <?php if($content->secret):?><img src="<?php echo $skin_path?>/images/icon_lock.png" alt="<?php echo __('Secret', 'kboard')?>"><?php endif?>
그리고 마지막으로 CSS로 New 라벨의 모양을 꾸미는 일이 남아 있습니다.
.mycustom_new_label { display: inline; padding: .2em .6em .3em; font-size: 11px; line-height: 1; color: #ffffff; background-color: #d9534f; text-align: center; white-space: nowrap; vertical-align: baseline; border-radius: .25em; }
별것 아니지만 이런 사소한 기능을 추가함으로써 게시판이 더 활기를 띄는 것 같은 느낌은 저만 그럴까요... 이상으로 막무가내 식으로 만든 KBoard에 New 라벨 추가하기 코드였습니다.
추가 (2015년 7월 22일)
위 세 코드를 하나로 합쳐서 KBoard 스킨 파일에 곧바로 적용이 가능합니다. (PHP에 대해 조금만 아시면 쉽게 가능합니다.) 하지만 하나로 합칠 경우 코드가 너무 길어지고 CSS로 변경하고자 할 경우에 문제가 있기 때문에 편의상 위와 같이 함수 파일 부분과 CSS 부분을 별도로 분리시켰습니다.
참고
연휴 동안 열심히(?) 달린 덕분에 이번 주에 할 번역 일은 간신히 마무리했습니다. 다음 주부터 또 새로운 프로젝트로가 기다리고 있네요.
최근 Kboard에서는 new 라벨을 자동으로 표시하므로 위의 방법을 사용할 필요는 없습니다.
다만, 기본적으로 제공되는 New 라벨 기능이 마음에 들지 않거나 바꾸어야 하는 경우 위의 코드를 응용할 수 있을 것 같습니다.
안녕하세요.
워드크래커님 코드를 응용해서 작성일에 하루 미만이면 시간을, 하루 이상이면 날짜를 표시하려고
list.php 파일을 다음과 같이 수정했는데 아예 안나오네요.
<td class="kboard-list-date">
<?php $now = new DateTime($new);
$last_active = new dateTime($last_active);
$interval = $last_active->diff($now);
$difference = $interval->format('%R%a days'); ?>
if($difference >= 1){
echo date("m-d", strtotime($content->date));
}
else{
echo date("H:i", strtotime($content->date));
}
</td>
뭐가 잘못된 것일까요?
시간나실 때 확인해 주시면 정말 고맙겠습니다.
감사합니다.
꾸벅
안녕하세요?
늦은 시각인데도 열심이시네요.
코드 자체가 맞는지는 잘 모르겠습니다.
하지만 작성하신 코드에 기본적인 문법 오류가 있습니다.
위와 같이 수정해보시고 테스트해보시기 바랍니다. 만약 제대로 안 되면 날짜 echo 부분이 정확한지 확인해보세요^^
안녕하세요.
안녕하세요? PHP 함수에서 변수가 올바르게 사용되지 않아서 제대로 작동하지 않는 것입니다. 문의하신 날짜 표시에 대한 코드를 https://www.thewordcracker.com/intermediate/how-to-change-date-format-kboard-in-wordpress/ 글에서 별도로 설명해놓았으니 참고하시기 바랍니다. 그럼, 즐거운 하루도시기 바랍니다.
그리고 따옴표는 한글에서 사용되는 곡선 모양의 따옴표가 아니라 영문에서 사용되는 직선 모양의 따옴표를 사용하시기 바랍니다.
안녕하세요? 이제 많은 발전을 이루고 계시네요.
해당 부분을 그림 아이콘으로 만들어 추가하셔도 됩니다. 그러려면 코드를 약간 수정해야 하는데요.
위 코드를 아래와 비슷하게 바꾸셔서 테스트해보시기 바랍니다.
위에서 그림 경로를 바꾸어주시고 너비와 높이 크기도 적절히 수정해 주시면 됩니다.
아니면 CSS 코드에서 !important를 추가하는 방법도 시도해보시기 바랍니다. (http://www.w3.org/TR/CSS21/cascade.html#important-rules 참고)
editor.php
<!-- <div class="kboard-attr-row">
<label class="attr-name"><img src="<?php echo kboard_captcha()?>" alt=""></label>
<div class="attr-value"><input type="text" name="captcha" value=""></div>
</div> -->
list.php
<!-- <div class="comments-captcha">
<label class="comments-captcha-label" for="comments_captcha"><img src="<?php echo kboard_captcha()?>" alt=""></label> <input type="text" id="comments_captcha" name="captcha" value="">
</div> -->
죄송하고 고맙습니다!!!
안녕하세요? 그림 크기는 style="width:20px!important;height:20px!important;"처럼 !important를 한번 붙여보시기 바랍니다.
보안코드는 필수로 지정되어 있기 때문에 제거하면 오류가 날 것입니다. 이 부분은 제작자의 답변을 기다리시는 것이 좋을 듯합니다. 그럼, 즐거운 저녁시간 되시기 바랍니다.
고맙습니다.
안녕하세요?
우선 이미지 용량 제한하는 방법에 대해 말씀드리면, 제작자가 정확히 어떤 방법으로 이미지를 삽입했는지는 잘 모르겠지만 게시글 편집기를 "워드프레스 기본 편집기"를 선택하면 이 버튼이 나오는 것으로 봐서 워드프레스의 기본 기능을 이용한 것 같습니다. 다음 코드를 테마의 함수 파일(functions.php)의 맨 끝에 넣어서 혹시 제대로 작동하는지 확인해주시겠어요?
관리자가 아니면 500KB 이하만 업로드가 가능하도록 코드를 짜 보았습니다만 제대로 작동할지는 모르겠네요.
스킨이 독립적으로 작동하지 않는 문제는 두 가지로 생각해볼 수 있을 것 같습니다. 만약 각 스킨의 필드는 정확하게 나오지만 레이아웃이 동일하게 나오는 경우라면 CSS 문제일 것입니다. 스킨을 만들 때 각 스킨마다 고유한 요소(element)가 들어가도록 편집해주셔야 합니다. 이 문제는 CSS를 공부해보시기 바랍니다. 두 번째로는 스킨을 여러 개 만들고 게시판마다 다른 스킨을 선택했는데 동일한 하나의 스킨으로 모두 나온다면 스킨을 만들 때 설정이 잘못되었거나 게시판 설정에서 스킨 설정이 잘못 되었을 것 같네요. 이 문제는 스킨 만들기와 게시판 설정하기 기본적인 사항부터 체크해보시기 바랍니다.
테스트했는데 작동하지 않습니다.
http://www.cosmosfarm.com/threads/document/6451 글에 나와 있는 방법대로 하면 버튼이 사라지지 않을까요?
----------
/kboard/index.php 파일에 kboard_init() 함수가 있습니다.
아래 부분을 주석처리 해주세요.
파일 업로드 크기 제한하는 코드로 다음 함수를 대신 사용해보시겠어요?
그런데 적용했는데 작동되지 않습니다 ㅠㅠ
제가 이 기능을 사용하지 않아서 그 부분을 보지 못했네요.
다음 함수를 사용해보시기 바랍니다. 만약 잘 안 된다면 제작자에게 문의해보시기 바랍니다. 다음 함수는 관리자 이외의 사용자에게 "Add Media" 버튼을 숨기는 기능을 합니다.
완벽하게 작동합니다!
잘 되었다고 하니 다행이네요. 즐거운 하루 되시기 바랍니다.
네 감사합니다~!
안녕하세요.이미지 용량 조절이 해결되었습니다.
/kboard/class/KBFileHandler.class.php 파일에서
function upload($name, $extension=array(), $extension_type=1, $limit_file_size=10485760)$limit_file_size
이 부분의 값을 변경하시면 업로드 용량을 조절하실 수 있습니다.(출처: http://www.cosmosfarm.com/threads/document/6460)캡차 비활성화는 오늘 다시 시도해 보려고 합니다.오늘도 폭풍 질문을 할 수도 있을 것 같습니다.그럼 좋은 하루 보내세요.감사합니다.꾸벅
좋은 정보 감사합니다.
안녕하세요.
안녕하세요? 캡차는 스팸을 방지하는 데 어느 정도 역할을 하기 때문에 있은 것이 좋을 듯합니다. 대부분의 경우 캡차를 달기를 원하기 때문에 개발자가 디폴트(기본)로 캡차를 추가한 듯 합니다.
시간이 되시면 https://www.thewordcracker.com/scribblings/how-to-hide-woocommerce-billing-and-shipping-address-in-wordpress/ 글을 한 번 참고해 보시기 바랍니다. unset($fields['order']['order_comments']); 형식으로 필수인 필드값을 제거하고 있네요. 혹시 이 부분을 적용할 수 있는지 확인해보시기 바랍니다. 그럼, 즐거운 하루되세요.
참고로 NEW 라벨을 글자 대신 이미지로 삽입하려면:
함수 파일에서:
이 부분을 다음과 비슷한 코드로 바꾸시면 됩니다.
이것은 하나의 예시이고요, CSS를 통해 원하는대로 조정하실 수도 있습니다.
마지막에 알려주신대로 해도 실패했어요ㅠㅠ 뭘 잘못했을까요..
다른방법이 없을까요.. 다른분들은 되신거같은데, new 표시 꼭 달고 싶어요 ㅠㅠ
안 되는 이유를 알 수가 없네요. 테마 때문인지 아니면 다른 문제가 있는지… 우선 게시판 스킨이 올바른지 한 번 확인해 보시기 바랍니다. 그리고 다음 코드를 List.php에 추가하여 글자가 표시되는지 테스트해 보시기 바랍니다.
안녕하세요? 혹시나 해서 테스트를 해봤는데, 이상 없이 잘 작동하네요. 위의 코드는 매우 간단한 PHP 코드입니다. 그러므로 작동 안 된다는 게 조금 이상한 것 같습니다. 게시판의 스킨을 올바로 설정했는지 확인해보시기 바랍니다. 그래도 잘 안 되시면 https://www.thewordcracker.com/support-system/ 문의 페이지를 통해 사이트 관련 정보를 알려주시면 시간이 될 때 한 번 살펴봐드릴 수는 있습니다. (하지만 지금은 조금 바빠서 금요일경쯤에 가능할 것 같습니다.) 그럼, 즐거운 하루 되시기 바랍니다.
도움 정말로 감사합니다. 다시 테스트해보겠습니다! 오늘은 성공하길 ~아자자!!
감사합니다!! 성공했습니다. 제가 실수가 있었네요 ㅠㅠ한가지더 여쭤볼게요, 최근 게시물에서도 new 표시가 가능할까요?
물론 가능합니다. 아마 latest.php 파일이 최근 게시물을 제어하는 파일일 것입니다. 이 파일의 적당한 곳에 list.php에 삽입했던 동일한 코드를 삽입하시면 됩니다.
안녕하세요 워드프레스 초보입니다...new 달고 싶은데 잘 안되네요 ㅠㅠ
kboard>skin>사용스킨폴더 에서 list에서
<td class="kboard-list-title"><div class="cut_strings"> 로 시작하는 문장 밑에 2군데에
올려주신 소스코드를 넣었고 style.css에도 넣었는데..
funtions.php 파일이 없어요ㅜㅜ 혹시 새로 만드는건가요?
kboard>helper 폴더에 functions.helper.php 파일이 있는데 이
파일은 아니죠? 여기에 넣어도 new 표시가 안뜹니다.
ㅠㅠ
안녕하세요?
funcitons.php 파일은 테마 폴더 아래에 있습니다. 현재 사용 중인 테마의 폴더(예: /wp-content/themes/테마 폴더 이름/)에 있습니다. 현재 사용 중인 테마를 확인하시고 ftp를 통해 찾으시면 될 것입니다.
답변 감사합니다
./wp-content/themes/enfold 테마에 있는 funcitons.php 에 아래와 같이 넣었습니다.
저는 왜 안될까요? ㅠㅠ
list 부분에는
이렇게 넣었습니다.
스킨폴더 안에 있는 css도 수정했구요...뭐가 잘못된걸까요.....ㅠㅠ
혹시 오류가 발생하나요? 예를 들어 게시판이 열리지 않는다든지 하는 문제...
오류는 발생하지 않습니다. new 표시만 뜨지 않아요..
제가 뭔가 잘못했겠죠?ㅜㅜ 어떻게 해야할까요;;;
다음 ccs 코드를 테마 폴더 아래의 style.css 파일에 추가해보시겠어요?
.mycustom_new_label {
display: inline!important;
padding: .2em .6em .3em!important;
font-size: 11px!important;
line-height: 1!important;
color: #ffffff!important;
background-color: #d9534f!important;
text-align: center!important;
white-space: nowrap!important;
vertical-align: baseline!important;
border-radius: .25em!important;
}
그리고 함수와 list.php 파일에서 주석 라인()을 한 번 삭제해 보시겠어요?
참고로 위의 글에서는 코드, 함수, CSS 세 파트로 나누었는데요, 코드 하나로 합치는 것도 가능합니다. 다만 그럴 경우 코드 부분이 너무 길어져서 일부러 세 부분으로 나누어놓은 것뿐입니다. 약간의 PHP와 html을 아시면 코드를 하나로 합쳐서 사용하셔도 됩니다. 그리고 NEW 글자 대신 원하는 NEW 아이콘으로 대체하셔도 됩니다. (마찬가지로 약간의 PHP와 Html을 아시면 가능합니다.)
잘 적용해서 사용하였습니다.
ㅎㅎ 댓글 감사합니다. 즐거운 주말과 휴일 되시기 바랍니다^^
에구 제 댓글이 너무 많아 화면이 지저분해 보이네요 ㅠㅠ
올려주신 그림 파일로 된 댓글은 확인 후에 추후에 삭제해 보겠습니다.
안녕하세요? 스킨의 list.php 파일에서 다음 코드 부분은 두 군데 있습니다.
아마 한 군데(공지 사항 부분)에만 위의 코드를 추가하셨을 것 같습니다.
Hot 코드도 마찬가지입니다. 그리고 Hot 코드는 하루 평균 조회 횟수가 일정 숫자 이상이어야만 나타납니다.
그럼, 즐거운 주말되세요.
그누프레스 설정을 캡처해서 잔뜩 첨부했는데 어디로 사라졌는지 모르겠습니다 ㅠㅠ 혹시 필요하시면 메일이라도 보내드릴까요?
그림 파일을 두 세개 정도만 테스트로 여기에 첨부해보시겠어요? 아마도 용량 제한 때문일 수도 있을 것 같습니다.
이미지 사이트에 올리고 링크로 추가했는데도 사라지는 것 같네요 ㅠㅠ
안녕하세요?
이제 정상적으로 작동할 것입니다. 어제 WordPress가 업데이트되어 수정된 소스 파일이 초기화되어서 그렇네요... 다시 올리시면 정상적으로 업로드가 될 것입니다.
그누프레스가 아기자기한 기능(추천, 비추천, 포인트 등)이 더 많습니다. 그런데 게시판 권한 설정이 전혀 안 됩니다. http://onebeat.kr/free/에서 한 번 살펴보시면 좋을 것 같습니다. 제가 좀 문제가 있어서 혹시나 보시고 대답을 해 주시면 정말 고맙겠습니다. 메뉴 글씨가 모두 대문자로 표시되고, 크롬에서 체크박스에 체크가 안 되거든요 ㅠㅠ
안녕하세요? 자세한 정보 감사합니다. 아마도 그누프레스가 초기 버전이라서 아직은 안정화가 안 된 것 같습니다. (케이보드도 초기에는 문제가 상당히 많았는데 현재는 많이 안정화된 것 같습니다.) 제가 시간이 되면 한 번 살펴보겠습니다.
그리고 메뉴가 대문자로 표시되는 것은 CSS를 통해 다음 속성을 추가해주시기 바랍니다:
text-transform: capitalize;
예를 들어,
위의 CSS 코드를 스타일시트 파일에 추가해보세요.
코드가 잘 먹히면 captialize;에 !important를 추가해보시기 바랍니다.
text-transform: capitalize!important;
에구 제가 답변 글을 미쳐 못 보고 또 질문을 추가했습니다. 삭제 부탁 드립니다 ㅠㅠ
예. 삭제해드렸습니다. 그런데 그누프레스는 어떤까요?
빠르고 친절하신 답변 대단히 고맙습니다!!!
질문이 더 있는데,
new가 가능하면 일정 조회수 이상인 경우 hot 표시하는 것도 가능하겠죠?
추천 기능을 추가하려면 kboard 유료 스킨을 구매하면 되나요? 어떤 스킨을 구매하면 되는지요?
안녕하세요?
앞의 답변에서 약간 부가하자면 KBoard의 기본 스킨에는 추천 기능이 없지만 유료 버전에서는 있습니다. http://www.cosmosfarm.com/wpstore/product/kboard-ocean-rating-skin 스킨을 참고해보시기 바랍니다.
hot으로 표시하는 것도 가능할 것 같습니다. 케이보드에서는 조회수 기능을 제공하고 있기 때문에 조회수를 비교하여 출력하는 함수를 만들어 추가하시면 될 것 같습니다.
Hot 라벨 붙이는 방법은 https://www.thewordcracker.com/scribblings/how-to-add-hot-label-in-wordpress-kboard/ 글을 참고해보시기 바랍니다. 테스트를 하지 않았습니다. 한번 테스트해보시고 잘 되는지 확인 부탁드립니다.
먼저 좋은 정보 고맙습니다. 완전 도움이 많이 되요.
제가 왕초보라서 "CSS로 New 라벨의 모양을 꾸미는 일"은 어느 파일에서 해야 하는지 모르겠습니다. ㅠㅠ 수정해야 할 파일 이름을 알려 주시면 무지 고맙겠습니다.
그리고 질문한김에
Kboard 기본 스킨에서는 "추천" 기능이 없는 것 같은데,
이거 구현 가능할까요?
안녕하세요?
첫 번째 코드는 테마 함수 파일(functions.php)에 추가해야 하고요, 두 번째 코드는 kboard의 스킨 폴더 내에 추가해야 합니다. 그리고 세 번째 CSS는 스타일시트 파일에 추가해야 합니다(https://www.thewordcracker.com/basic/how-to-add-css-in-wordpress/ 참고하세요).
그리고 추천 기능은 본래 없는 것입니다. 추천 기능을 추가하려면 별도의 플러그인을 깔아서 연동시키면 될 것입니다. 별로 어려운 작업은 아닐 것 같습니다.