그누5 + ckeditor4, 글내용에 최근글 입력.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
그누5 + ckeditor4, 글내용에 최근글 입력.

QA

그누5 + ckeditor4, 글내용에 최근글 입력.

본문


안녕하세요.


하다하다 안되고 있어서 질문 드립니다~


글쓰기에서 기본 ckeditor4 가 나오는데요.


글 내용에 바로 이전글을 그대로 불러와서 넣어주고 싶은데요.


그래서 일단 에디터에


write.skin.php


<?php echo $editor_html; // 에디터 사용시는 에디터로, 아니면 textarea 로 노출 ?>

<script type="text/javascript"> 
    CKEDITOR.instances.wr_content.insertText('some text here');
</script>


이런식으로 간단하게 넣어줘도 적용이 안되네요.


에디터 내용에 아무것도 나오지가 않고 있어요 ㅠ


최근글 내용은 $latest_content  에다 가져온 상태인데..  에디터에 넣으려고 하니 잘 안되네요.


작은 힌트라도 부탁드립니다~


이 질문에 댓글 쓰기 :

답변 1

잘은 모르겠지만,
CKEDITOR.instances.wr_content.setData('내용');
요거 한번 써보세요!

<script type="text/javascript">
                CKEDITOR.instances.wr_content.insertText('some text here');
                CKEDITOR.instances.wr_content.insertHtml('<p> html here. </p>');
                CKEDITOR.instances.wr_content.setData('내용');
</script>

답변 감사합니다.
위 세가지 모두 에디터에 무언가를 넣는게 맞는거 같은데요.
전부 반응이 없네요 ㅠ

write.skin.php 상에서 위에 스크립트가 동작을 안하는거 같은데.
에디터가 write.skin.php 에서 생성된게 아니라 그런게 아닌가 싶어요.

음, 크롬으로 켜놓고 콘솔창에서 실행 했을때는 잘되는 것을 확인했는데,
로딩 시점의 문제 인걸까요?
jQuery(window).load(function(){
    CKEDITOR.instances.wr_content.setData('내용');
})
이런 식으로 윈도우 로딩 후에 하면 되지 않을까 싶기도한데..
일단 저는 되는 것 같아요 '0'!

PLANITIS 님 답변 정말 감사합니다.

말씀해주신 대로 적용했더니 '내용' 이라는 텍스트가 에디터에 나옵니다 ^^;;

제가 body 부분에 넣고 안된다고 하고 있었네요.

밑에 스크립트 부분에 말씀해주신대로 넣으니 정상작동하네요.

근데 문제가..

jQuery(window).load(function(){
  CKEDITOR.instances.wr_content.setData('<? echo latest("basic", "test", 5, 25); ?>');
})

이런식으로 최근글 불러오는 함수를 써서 에디터에 넣으려니 또 반응이 없네요.

<? echo latest("basic", "test", 5, 25); ?> 그냥 이렇게 해서 찍어보면

•野"잘못했다고 부처없애나"…'인적청산 5적' 주장도
•"수술해 신혼여행 못가는데 환불 안된다네요"
•아파트서 부부 피살·딸 추락…딸 남친 검거
•복합미생물로 아토피 95%의 효과 검증
•국제 우주정거장, 우크라 갈등에 파국 맞나
•황창규 "KT 4조원 투자해 10배 빠른 기가인터넷 추진"
•배두나·짐 스터게스 “교제 중”

위와 같은 식으로 최근글의 제목이 잘 나오는데요.

에디터에 setData 로 넣으면 아무것도 안나오고 있네요.

에디터 옵션에 뭔가 문제가 있는걸까요?

염치불구하고 질문을 하나 더 남기네요;;

(결론적으로 하고자 하는것은 글쓰기할때 에디터에

 특정게시판의 가장 최근글 내용(wr_content)을 가져와서 미리 넣어주는것 입니다.)

그건, '<? echo latest("basic", "base", 5, 25); ?>' 이 부분이 로드하는 태그가 잘바뀜등의 형태로 스크립트에 처리가 안되었기 때문입니다.
음, 최근 게시물쪽에 자바스크립트 중간 내용처럼 처리가필요할텐데..

먼저, skin/latest/ 이 경로에 폴더를 하나 파주세요. 폴더명은 자유롭게.. 중복만 안되게요.
그리고 latest.skin.php 라고 파일을 만들어 주시고, 내용은


<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
// add_stylesheet('css 구문', 출력순서); 숫자가 작을 수록 먼저 출력됨
//add_stylesheet('<link rel="stylesheet" href="'.$latest_skin_url.'/style.css">', 0);
?>
'<div class="lt">';
html +='    <ul>';
    <?php for ($i=0; $i<count($list); $i++) {  ?>
html +='        <li>';
html +='            <?php
            //echo $list[$i]['icon_reply']." ";
            if ($list[$i]['is_notice'])
                echo "<strong>".$list[$i]['subject']."</strong>";
            else
                echo $list[$i]['subject'];

            if ($list[$i]['comment_cnt'])
                echo $list[$i]['comment_cnt'];
             ?>';
html +='        </li>';
    <?php }  ?>
    <?php if (count($list) == 0) { //게시물이 없을 때  ?>
html +='    <li>게시물이 없습니다.</li>';
   <?php }  ?>
html +='   </ul>';
html +='</div>';

-----
* 이미지랑 링크는 제거했습니다.
이게 처리가 되었으면 다시 적용하려는 글쓰기 스킨에 write.skin.php 파일 하단에
<script></script>가 있을 텐데 여기 맨 하단에

jQuery(window).load(function(){
    var html="";
    html = <? echo latest("skin/latest/에 만든 폴더명", "게시판명", 5, 25); ?>
    CKEDITOR.instances.wr_content.setData(html); 
})

이런식으로 넣어주면 되기는 합니다.

답변 일찍주셨는데 피드백이 늦었습니다 죄송합니다.
알려주신 내용은 바로 적용하셔 잘 되는것을 확인했으나.

실제 적용할 서버에 적용했을때는 작동이 안되는 증상이 있어 확인후에 또다시; 질문을 남기게 되는데요;

jQuery(window).load(function(){
    var data="";
    data = <? echo latest2("basic2", "daily_data", 1, 25, 1) ?>;
    CKEDITOR.instances.wr_content.setData(data);
})

위와같이 코드를 작성했을때

data 에 들어가는 문자열이

"<table><tr><td>test</td></tr></table>"; 
이렇게 되면 테이블과 텍스트가 잘 나오게 되는데

"<table border="1"><tr><td>test</td></tr></table>"; 
이런식으로 더블쿼테이션이 들어가게 되면 작동을 안하더라구요. 정확히는 특수문자가 되겠구요.
정말 한참헤매서 찾긴했습니다만. 해결방법을 찾을 수 없더라구요.

자바스크립트 변수내에 특수문자는 \표시를 앞에 넣으면 된다고 하는데
가져오는 내용이 많아서 일일히 붙여주기가 불가능한 상태 입니다.

현재도 방법을 찾아보고 있으나
가져오는 내용에 특수문자가 여러개이고 그것을 그대로 유지하면서
CKEDITOR 안에 넣어주는게 성공을 하지 못했습니다 ㅠ

늦은시간인데 수고하시구요.
작은힌트라도 감사히 참고하겠습니다~
항상 감사합니다~!

큰따옴표랑, 작은따옴표의 사용이 좀 골치 아픈 부분이긴한데요,
많은 부분의 처리가 곤란하기에, 제가 첨부한 소스도, 작은따옴표로 변수의 내용이 될 태그들을 감싸두어서,
큰따옴표에 별도의 처리 없이 에러가 없는데...
혹시 중간 html 에 태그를 저장할때 내용을 감싸는 처음이 큰따옴표라면 작은따옴표로 바꾸어보세요!

<table border="1">
<tbody>
<tr>
<td>test</td>
</tr>
</tbody>
</table>

위와같은 내용을 게시판 속성에 기본 글쓰기 내용에 넣으면 에디터에 제대로 테이블이 나오는데

에디터가 표시된 뒤에 넣으려면 죽어도 안나오네요;;

그누보드에서 기본 글쓰기로 구현되어서 표시되는 로직을 이해하면

미리 불러와서 태그내용을 넣어주면 될듯한데요.

보드에대한 이해가 부족하네요.

답답합니다ㅠ

또 한참헤매다가

<? $editor_html = editor_html('wr_content', latest2("basic2", "test", 1, 25, 1), $is_dhtml_editor); ?>

write.php 에서 위와같이 선행처리를 해주길래 write_skin.php에 혹시나 넣어봤더니

<table border="1">
<tbody>
<tr>
<td>test</td>
</tr>
</tbody>
</table>

이렇게 태그가 있던 없던 나오긴 하는데

여기서 문제는 $is_dhtml_editor 값이 '1' 임에도 불구하고 에디터가 안나오고 텍스트박스에

위와같이 생(?) 테그로 보여지네요.

이제 에디터를 씌워주기만 하면 태그를 잘 먹은 결과가 나올듯한데 좀 이상하네요.

오늘은 여기까지만 헤매고 돌아갑니다.

봐주셔서 감사합니다~

답변을 작성하시기 전에 로그인 해주세요.
전체 1,284
QA 내용 검색

회원로그인

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