비

제목 없는 게시판

no_title.jpg

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

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

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

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

 

----------

 

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

이것으로 그만입니다.

 

----------

 

2. 주요 코드입니다.

[code]

<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>

[/code] 

----------

 

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

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

 

----------

 

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

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

[code]

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

else echo "changeSubject = wr_content.value;";

[/code]

 

----------

----------

----------

 

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

 

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

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

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

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

 

----------

 

[code]

<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>

[/code]

 

----------

----------

----------

 

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

 

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

 

[code]

<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>

[/code]

버전 정보

테스트한 버전 5.4.18
호환 가능 버전 5.4 이상

첨부파일

no_title.jpg (31.9 KB)
0회 2021-11-19 17:33
write.tail.skin.zip (715 bytes) 85회 2021-11-26 12:43
|

댓글 35개

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

[http://sir.kr/data/editor/2111/d3e769ad9eb3deeabc7f6c0aa89a34a4_1637430181_5177.png]
얼마전 리자님이 자게에서 적용하신 것을 보고 한번 해 봐야지라는 생각이 들더군요.
웹학교님이 공유하신 스킨이 있긴 한데 그냥 제가 생각한 방식으로 만들어 보았습니다.
각 에디터의 내용추출함수도 이미 공개되어 있어서 그냥 날로 먹은 스킨입니다.ㅋ
부족한 부분을 보완했으니 다시 받아가세요.
공개해 주셔서 감사합니다.
유용하게 사용 하겠습니다.
예 유용하게 사용해 주시면 제가 고맙지요.
부족한 부분을 보완했으니 다시 받아가세요.
좋은글 감사합니다!
예 감사드려요
공개해주셔서 감사합니다
감사드립니다.
https://apachezone.com/gnu5/64
여기에서 Ckeditor 4.11.1 에디터를 받아 적용하였는데,
제목을 쓰라고 나오네요;; 어떻게해야할까요??
구글링 해보니 내용추출함수가
CKEDITOR.instances.resCnts.getData(); 라고 하니까...
CKEDITOR.instances.wr_content.getData(); 가 되겠네요.
이를 else if 를 써서 에디터의 이름을 조건으로 걸어주세요.

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

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

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

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

구글링해서 자바스크립트로 엔티티를 변환하는 함수를 찾아보니 마땅한 것이 없어서...
엔티티문자 부분을 처리하려면 기본코어를 수정해야 하고 때에 따라서는 아작스가 필요할 것 같아 상당히 성가실 거라 생각했는데 뜻밖에도 꼼수가 통해서 쉽게 해결했습니다.ㅋ
문자열을 div 의 innerHTML 에 먼저 주었다가 변수로 받을 때는 innerText 로 받으니 가능하네요. 덕분에 저도 공부 좀 하였습니다.
감사합니다.
우와 너무 좋아요
감사합니다
테마나 빌더를 사용하는 게시판은 안되는 거죠? ㅜㅜ
감사합니다. 상황에 따라 다르겠죠.
감사합니다. 차근차근히 적용해보니 잘됩니다.^^
감사합니다
댓글을 작성하시려면 로그인이 필요합니다.

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

+