제목 없는 게시판 > 그누보드5 스킨

그누보드5 스킨

좋은 댓글과 좋아요는 제작자에게 큰힘이 됩니다.

제목 없는 게시판 정보

게시판 제목 없는 게시판

첨부파일

write.tail.skin.zip (715byte) 27회 다운로드 2021-11-26 12:43:29
테스트한 버전5.4.18
호환 가능 버전5.4 이상

본문

제목없는 게시판이라기보다는

제목을 입력하지 않으면 본문 내용을 제목으로 만드는 게시판입니다.

물론 제목을 입력하면 기존의 게시글처럼 기능합니다.

다른 분이 공유한 것도 있지만 제 방식으로 만들어 보았습니다.

 

----------

 

1. 첨부파일의 압축을 풀고 write.tail.skin.php 를 pc와 모바일의 게시판 디렉토리로 업로드합니다.

이것으로 그만입니다.

 

----------

 

2. 주요 코드입니다.


<script>
<?php
$subject_limit = 70;
$target_editor = $is_dhtml_editor ? $config['cf_editor'] : "none";
?>
btn_submit.onclick = function() {
    if (wr_subject.value.trim() == "") {
        <?php
        if ($target_editor == "cheditor5") echo "changeSubject = ed_wr_content.outputBodyHTML();";
        else if ($target_editor == "smarteditor2") echo "changeSubject = oEditors.getById['wr_content'].getIR();";
        else echo "changeSubject = wr_content.value;"; 
        ?>
        noTag = changeSubject.replace(/(<([^>]+)>)/ig, "").trim();
        wr_subject.value = noTag.length <= <?php echo $subject_limit; ?> ? noTag : noTag.slice(0, <?php echo $subject_limit; ?>) + "...";
    }
}
</script>
 

----------

 

3. 본문내용의 최대글자수는

$subject_limit = 70; 에서 바꾸어 줍니다. 

 

----------

 

4. cheditor5 와 smarteditor2 이외의 다른 에디터를 사용할 경우에는...

else echo "changeSubject = wr_content.value;"; 의 위에 else if 문을 첨가해 줍니다.


else if ($target_editor == "myeditor") echo "changeSubject = myeditor의 내용추출함수;";
else echo "changeSubject = wr_content.value;";

 

----------

----------

----------

 

[ 2021년 12월 23일에 추가사항 보완하였습니다 ]

 

1. 엔터키로 줄바꿈된 부분이 띄워쓰기 처리가 안 되어서 수정하였습니다.

2. 그누보드<img src=.......>그누보드

이와 같은 형태일 때 태그가 제거되면서 띄워쓰기 처리가 안 되는 부분을 수정하였습니다.

3. 자바스크립트 실행코드를 함수로 만들었습니다.

 

----------

 


<script>
function changeTitle() {
    <?php
    $subject_limit = 70;
    $target_editor = $is_dhtml_editor ? $config['cf_editor'] : "none";
    ?>
    if (wr_subject.value.trim() == "") {
        <?php
        if ($target_editor == "cheditor5") echo "changeSubject = ed_wr_content.outputBodyHTML();";
        else if ($target_editor == "smarteditor2") echo "changeSubject = oEditors.getById['wr_content'].getIR();";
        else echo "changeSubject = wr_content.value;"; 
        ?>
        reSubject = "";
        changeEnter = changeSubject.replace(/\n/gi, " ");
        noTag = changeEnter.replace(/(<([^>]+)>)/gi, " ").trim();
        for (var i in noTag) reSubject = reSubject + (noTag[i] == " " && noTag[i - 1] == " " ? "" : noTag[i]); 
        wr_subject.value = reSubject.length <= <?php echo $subject_limit; ?> ? reSubject : reSubject.slice(0, <?php echo $subject_limit; ?>) + "...";
    }
}
btn_submit.onclick = function() {
    changeTitle();
}
</script>

 

----------

----------

----------

 

[ 2021년 12월 26일에 추가사항 보완하였습니다 ]

 

엔티티문자로 보이던 부분을 처리하였습니다.

 


<script>
function changeTitle() {
    <?php
    $subject_limit = 70;
    $target_editor = $is_dhtml_editor ? $config['cf_editor'] : "none";
    ?>
    if (wr_subject.value.trim() == "") {
        <?php
        if ($target_editor == "cheditor5") echo "changeSubject = ed_wr_content.outputBodyHTML();";
        else if ($target_editor == "smarteditor2") echo "changeSubject = oEditors.getById['wr_content'].getIR();";
        else echo "changeSubject = wr_content.value;"; 
        ?>
        btn_submit.insertAdjacentHTML("afterend", "<div id=entityDiv style=display:none></div>");
        entityDiv.innerHTML = changeSubject;
        changeSubject = entityDiv.innerText; 
        reSubject = "";
        changeEnter = changeSubject.replace(/\n/gi, " ");
        noTag = changeEnter.replace(/(<([^>]+)>)/gi, " ").trim();
        for (var i in noTag) reSubject = reSubject + (noTag[i] == " " && noTag[i - 1] == " " ? "" : noTag[i]); 
        wr_subject.value = reSubject.length <= <?php echo $subject_limit; ?> ? reSubject : reSubject.slice(0, <?php echo $subject_limit; ?>) + "...";
    }
}
btn_submit.onclick = function() {
    changeTitle();
}
</script>
추천
8

댓글 전체

지금보니 변수이름을 changSubject 가 아니라 changeSubject 라고 해야했네요.
뭐 그래도 코딩은 언어가 아니라 기호이고 의미론적 지평이 아니라 구문론적 지평이라 전혀 상관은 없지만 좀 찝찝하긴 하네요.ㅜㅠ
------
변수명 고쳐서 다시 업로드하였습니다.
매우 유용한 스킨을 공개해주셔 감사드립니다.
어떤 게시판은 제목을 꼭 정할 필요가 없는 게시판도 있는데요.
제목을 정하는 고민없이 그냥 본문에 글을 쓰면 텍스트의 첫부분이 제목으로 정해지니 참 좋습니다.
http://pws.co.kr/bbs/board.php?bo_table=basic_no_title

얼마전 리자님이 자게에서 적용하신 것을 보고 한번 해 봐야지라는 생각이 들더군요.
웹학교님이 공유하신 스킨이 있긴 한데 그냥 제가 생각한 방식으로 만들어 보았습니다.
각 에디터의 내용추출함수도 이미 공개되어 있어서 그냥 날로 먹은 스킨입니다.ㅋ
구글링 해보니 내용추출함수가
CKEDITOR.instances.resCnts.getData(); 라고 하니까...
CKEDITOR.instances.wr_content.getData(); 가 되겠네요.
이를 else if 를 써서 에디터의 이름을 조건으로 걸어주세요.


else if ($target_editor == "에디터이름") echo "changeSubject = CKEDITOR.instances.wr_content.getData();";
감사해요^^ 말씀하신데로 적용하니까 적용 되네요 ㅎㅎ

그런데, 에디터를 사용하면 이모지나 " 이런 특수문자가 제대료 표기가 안되네요;

에디터를 사용하지 않으면 제목없이 쓸때 이모지랑 특수문자가 다 잘 나오는데, 에디터를 사용하면 " = &#39; 이렇게 나오네요 ㅜㅜ
죄송합니다. 어느날우연이님께서 말씀하신 에디터를 사용해 본 적이 없어서요.
그걸 실험하려면 에디터를 깔고 이리저리 뜯어보아야 할 텐데 정말 송구스럽게도 그럴 생각이 현재로서는 없습니다. 이해해 주시길요.
지금보니 제가 사용한 에디터에서도 특수문자 처리가 좀 그렇긴 하네요.
손을 한번 봐야겠네요.
네, 말씀드린 에디터뿐아니라,
기본에디터들에서도 발생하는 것이어서 말씀드렸어요^^

좋은자료 만들어주셔서 다시한번 감사해요!!!
엔티티문자를 해결하는 로직을 더 첨가하였습니다. 새로 다운로드 받아 가세요.

구글링해서 자바스크립트로 엔티티를 변환하는 함수를 찾아보니 마땅한 것이 없어서...
엔티티문자 부분을 처리하려면 기본코어를 수정해야 하고 때에 따라서는 아작스가 필요할 것 같아 상당히 성가실 거라 생각했는데 뜻밖에도 꼼수가 통해서 쉽게 해결했습니다.ㅋ
문자열을 div 의 innerHTML 에 먼저 주었다가 변수로 받을 때는 innerText 로 받으니 가능하네요. 덕분에 저도 공부 좀 하였습니다.
전체 2,089 |RSS
그누보드5 스킨 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIR SOFT