글 수정시에 에디터에 빈 줄이 모두 사라집니다.

안녕하세요? KBoard 게시판 사용중 문제가 있어서 문의 드립니다.

게시판에 작성한 글에 대해서 수정을 누르는 경우,

기존에 입력한 빈 줄이 정상적으로 나타나지 않습니다.

 

이 현상은 데모 게시판에서 바로 확인할 수 있습니다.

아래 글에서 '글 수정'을 누르면 에디터 화면에서 줄바꿈 정보는 사라집니다.

https://www.cosmosfarm.com/demo/?uid=4158&mod=document&pageid=1

 

[참고]

일반 포스트로 작성한 경우에는 글 수정시에 줄바꿈이 정상적으로 표시됩니다.

Database를 확인해보니 POST로 작성한 경우에는  가 남아있고

Kboard에서 작성한 경우에는  가 사라져 있는 차이가 있었습니다.

* 참고로 functions.php에 아래 filter를 적용한 상태입니다. (단, 줄바꿈 사라지는 문제는 적용여부와 상관은 없습니다.)

remove_filter('kboard_content_paragraph_breaks', 'kboard_content_paragraph_breaks', 10);
add_filter('kboard_content_paragraph_breaks', 'wpautop');

 

감사합니다.

 

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    줄 바꿈이 적용되지 않는 것은 에러는 아닙니다.

    워드프레스 내장 에디터에서 <br> 태그를 사용하지 않기 때문에 플러그인 쪽의 문제는 아닙니다.

    워드프레스 내장 에디터에서 엔터를 눌렀을 때 <br> 태그가 삭제되고 &nbsp;가 추가되도록 워드프레스에서 세팅이 되어있습니다.

    최종 화면에 내용이 출력될 때 nl2br 혹은 wpautop 함수로 <br> 태그 또는 <p> 태그를 추가하여 표시하고 있습니다.

    저희도 좋은 방법이 있을지 연구해보고 개선해서 업데이트하도록 하겠습니다.

    고맙습니다.

  • 의미 전달이 잘못된것 같습니다.
    KBoard에서 글 수정시에 에디터에 보이는 내용에서 여러번 엔터를 입력한 빈 줄 부분은 모두 없어져 버립니다.
    즉, 단순한 태그 문제가 아니라 실제 글의 형태가 변경되는 문제입니다.

    간단하게 테스트 하려면 KBoard 데모 페이지에서

    첫줄
    (빈 줄)
    둘째줄

    인 내용을 작성한 후 글 수정을 눌러보시면 

    첫줄
    둘째줄

    과 같이 중간의 빈 줄은 없어진 상태로 에디터에 나타나는 것을 볼 수 있습니다.
    이 상태로 저장을 누르면 글 사이의 빈 줄은 모두 사라진 채로 저장됩니다.

    데이터베이스를 보면 

    첫줄
    
    
    
    둘째줄 

    과 같이 &nbsp;가 없어진 채로 (실제로는 space로 변환 되어) 저장되어있는것으로 보입니다.

    저장할 때 &nbsp;를 실제 공백으로 변환하지 않고 DB에 저장되게 할 수 없을까요?

    (&nbsp; 가 남아있는 경우에는 에디터 화면에서 정상적으로 보입니다. POST로 작성하는 경우에는 &nbsp;가 남아있네요.)

     

    지금 상태로는 본문에 빈 줄들이 있는 경우에는 글 수정에 어려움이 있기 때문에 문의드립니다.

    감사합니다.

     

     

     

  • 안녕하세요.

    워드프레스 글(Post)과 KBoard 플러그인 게시글 저장 방식 및 표시방법을 비교해봐야 할 듯합니다.

    저희도 테스트해본 후 좋은 방법을 찾게 되면 다시 안내해드리겠습니다.

    고맙습니다.

  • 데이터베이스에 &nbsp; 문자를 그대로 저장하더라도

    워드프레스 내장 에디터에서 <p> </p> 이런 식으로 표시됩니다.

    태그 안의 내용이 없다면 에디터에서 지우고 있습니다.

     

    줄 바꿈을 wpautop 함수로 활용하고 <p>&nbsp;</p> 문자열을 <p><br></p>로 치환해서 저장하면 가능할 듯합니다.

    실제 코드는

    워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에

    아래의 코드를 추가해서 테스트해보시겠어요?

    add_action('kboard_pre_content_execute', 'my_kboard_pre_content_execute', 10, 4);
    function my_kboard_pre_content_execute($content, $board){
    	if(isset($_POST['kboard_content'])){
    		$content->content = wpautop($_POST['kboard_content']);
    		$content->content = str_replace('<p>&nbsp;</p>', '<p><br></p>', $content->content);
    	}
    }

     

    기존 추가하신 코드는 지우신 후에 테스트해보시겠어요?

    고맙습니다.

  • 오오 잘 동작합니다 ^^ 

    감사합니다!

     

  • 추가로 몇가지 시험해본 결과 database에 &nbsp;가 사라지는 이유는 

    kboard_xssfilter (HTMLPurifier?)에서 뭔가를 건드리는것 같습니다. (세부 내용은 모르겠습니다.)

     

    remove_filter('kboard_content_paragraph_breaks', 'kboard_content_paragraph_breaks', 10);
    add_filter('kboard_content_paragraph_breaks', 'wpautop');

    와 같이 wpautop 모드로 설정하고 XSS공격 차단을 비활성화 하면

    에디터 줄바꿈이 정상으로 동작하고 DB에도 &nbsp;로 잘 들어갑니다. ^^;

    감사합니다.

     

  • 저도 같은 현상이 있었는데,  XSS공격 차단을 비활성화 하니까 해결되었어요.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기