제목 없는 게시판

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개

좋아요 실물그림이 잌ㅆ으면 좋을것을 아쉽네요
초보라서
다운로드 받으셔서 바로 적용해보시면 금방이에요.
굳이 예제가 필요하지 않습니다.
덧글 감사합니다.
부족한 부분을 보완했으니 다시 받아가세요.
맘에 들어요. 감사합니다.
[http://sir.kr/data/editor/2111/7fc148cd01b858d4e9c689e8fdf38233_1637365960_5385.png]
들레아빠님 감사합니다.
부족한 부분을 보완했으니 다시 받아가세요.
발빠른 들레아빠님 감사합니다.
공개해 주셔서 감사합니다.
지금보니 변수이름을 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]
감사해요^^ 말씀하신데로 적용하니까 적용 되네요 ㅎㅎ

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

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

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

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

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기
🐛 버그신고