제목 없는 게시판
제목없는 게시판이라기보다는
제목을 입력하지 않으면 본문 내용을 제목으로 만드는 게시판입니다.
물론 제목을 입력하면 기존의 게시글처럼 기능합니다.
다른 분이 공유한 것도 있지만 제 방식으로 만들어 보았습니다.
----------
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]
버전 정보
첨부파일
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기
댓글 35개
초보라서
굳이 예제가 필요하지 않습니다.
덧글 감사합니다.
[http://sir.kr/data/editor/2111/7fc148cd01b858d4e9c689e8fdf38233_1637365960_5385.png]
뭐 그래도 코딩은 언어가 아니라 기호이고 의미론적 지평이 아니라 구문론적 지평이라 전혀 상관은 없지만 좀 찝찝하긴 하네요.ㅜㅠ
------
변수명 고쳐서 다시 업로드하였습니다.
어떤 게시판은 제목을 꼭 정할 필요가 없는 게시판도 있는데요.
제목을 정하는 고민없이 그냥 본문에 글을 쓰면 텍스트의 첫부분이 제목으로 정해지니 참 좋습니다.
http://pws.co.kr/bbs/board.php?bo_table=basic_no_title
[http://sir.kr/data/editor/2111/d3e769ad9eb3deeabc7f6c0aa89a34a4_1637430181_5177.png]
웹학교님이 공유하신 스킨이 있긴 한데 그냥 제가 생각한 방식으로 만들어 보았습니다.
각 에디터의 내용추출함수도 이미 공개되어 있어서 그냥 날로 먹은 스킨입니다.ㅋ
유용하게 사용 하겠습니다.
여기에서 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 로 받으니 가능하네요. 덕분에 저도 공부 좀 하였습니다.