웹마스터 팁
게시판 별로 에디터의 옵션 설정하기
2008.01.01 04:34
안녕하세요~
새해 새벽인데...이러고 있습니다ㅋ ^^;;
지허님이 올려주신 게시물(http://www.zeroboard.com/15870820 )을 참고했는데 아무리해도 안되길래 좀 헤매다가 조금 전에야 성공을 해서 도움될까 해서 올려 봅니다.
지허님께 우선 감사드리구요~^^
지허님이 올리신 것 하고 약간 틀린데 지허님은 document_srl을 가지고 처리하시는 것이고 저는 mid값으로 처리합니다. 차이점은 게시물로 보느냐 게시판으로 보느냐가 됩니다. mid값은 XE어드민페이지에서 작업 해보신 분이라면 누구나 잘 아실 것이니 제가 지금부터 설명하려는 것은 게시판 성격에 따라 에디터의 옵션을 주는 것입니다.
1.
/modules/board/board.view.php파일을 엽니다. 거기보면 editor의 옵션을 설정하는 부분이 있습니다.
/** * @brief 글 작성 화면 출력 **/ function dispBoardWrite() { // 권한 체크 if(!$this->grant->write_document) return $this->dispBoardMessage('msg_not_permitted');
// GET parameter에서 document_srl을 가져옴 $document_srl = Context::get('document_srl');
// document 모듈 객체 생성 $oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument(0, $this->grant->manager); $oDocument->setDocument($document_srl);
if(!$oDocument->isExists()) { $document_srl = getNextSequence(); Context::set('document_srl',$document_srl); }
// 글을 수정하려고 할 경우 권한이 없는 경우 비밀번호 입력화면으로 if($oDocument->isExists()&&!$oDocument->isGranted()) return $this->setTemplateFile('input_password_form');
Context::set('document_srl',$document_srl); Context::set('oDocument', $oDocument);
// 에디터 모듈의 getEditor를 호출하여 세팅 $oEditorModel = &getModel('editor'); $option->primary_key_name = 'document_srl'; $option->content_key_name = 'content'; $option->allow_fileupload = $this->grant->fileupload; $option->enable_autosave = true; $option->enable_default_component = true; $option->enable_component = true; $option->resizable = true; $option->height = 400; $editor = $oEditorModel->getEditor($document_srl, $option); Context::set('editor', $editor);
//생성한 게시판들 중에서 특정 게시판의 editor component 변경을 위해 추가 : redman추가 if($this->module_info->mid == '+ '+ 'product' || $this->module_info->mid == 'notice' || $this->module_info->mid == 'question_and_consult') $this->setEditor($document_srl, 100); //이 mid값들은 zexe관리자페이지에서 정의한 mid값으로 바꿔주시면 됩니다. //생성한 게시판들 중에서 특정 게시판의 editor component 변경을 위해 추가 : redman추가
// 확장변수처리를 위해 xml_js_filter를 직접 header에 적용 $oDocumentController = &getController('document'); $oDocumentController->addXmlJsFilter($this->module_info);
$this->setTemplateFile('write_form'); }
그 바로 밑에 redman추가 라고 되어 있는 소스를 추가 해줍니다. mid값들은 정의하신 값으로 변경 해주시고 게시판 2개만 바꿔주실 거면 if($this->module_info->mid == 'product' || $this->module_info->mid == 'notice' ) 이런식으로 하나만 바꾸실 거면
if($this->module_info->mid == 'product') 이런식으로 수정하시면 됩니다.
2.
위 1번대로 하고 나서, board.view.php 어디 적당한 곳에 다음과 같은 setEditor함수를 정의해 줍니다. 저는 setEditor함수를 dispBoardMessage()함수와 setCommentEditor()함수 사이에 추가 해줬습니다.
/** * @brief 메세지 출력 **/ function dispBoardMessage($msg_code) { $msg = Context::getLang($msg_code); if(!$msg) $msg = $msg_code; Context::set('message', $msg); $this->setTemplateFile('message'); }
/** * redman 추가 * @brief 본문 editor 를 세팅 * 컴포넌트를 안보이도록 세팅.\n **/ function setEditor($document_srl, $height) {
// 에디터 모듈의 getEditor를 호출하여 세팅 $oEditorModel = &getModel('editor'); $option->primary_key_name = 'document_srl'; $option->content_key_name = 'content'; $option->allow_fileupload = $this->grant->fileupload; //파일업로드 권한을 가졌으면 파일업로드 가능하도록 합니다. $option->enable_autosave = true; $option->enable_default_component = true; $option->enable_component = true; if(!$this->grant->is_admin) $option->enable_component = false; //관리자 권한을 가지지 않은 경우에는 추가 컴포넌트를 사용하지 못하도록 합니다. $option->resizable = true; $option->height = $height; $editor = $oEditorModel->getEditor($document_srl, $option); Context::set('editor', $editor);
}
/** * @brief 댓글의 editor 를 세팅 * 댓글의 경우 수정하는 경우가 아니라면 고유값이 없음.\n * 따라서 고유값이 없을 경우 고유값을 가져와서 지정해 주어야 함 **/ function setCommentEditor($comment_srl = 0, $height = 100) {
이렇게 하면 mid이름 별로, 그러니까 원하는 게시판 별로 에디터의 옵션을 조정할 수 있게 됩니다. 또한 저런식이면 댓글 에디터도 수정 가능합니다. 같은 방식이니까 한번 해보셔도 좋으실 것 같습니다.
원래는 enable_default_component나 enable_component의 세부 옵션들에서 일부를 빼고 싶었는데 저렇게 밖에 안되는군요. 더 건드리려면 /modules/editor/skins/default/editor.html 을 수정해야 하는데 for문으로 돌아가더군요. 빼기 힘듭니다.;;;
그러면, 잘 활용해 보시기 바랍니다. ^^ 새해 복 많이 받으시구요~
- [2018/01/06] 묻고답하기 www.도메인.com/xe 리다이렉트 문의
- [2017/09/25] 묻고답하기 크롬에서 ckeditor 붙여넣기가 이상합니다. ㅠ *4
- [2017/08/04] 묻고답하기 메모장으로 php 파일 수정 후 모바일에서 메뉴 깨짐 현상 *1
- [2016/12/05] 묻고답하기 혹시 표 작업 깔끔히 잘 되는 에디터툴 있을까요.
- [2016/11/24] 묻고답하기 아무리 검색해도 모르겠네요. 에디터 문제 부탁드립니다. *1
댓글 6
-
질문
2008.01.02 07:16
-
레드맨
2008.01.02 19:01
소스를 좀 봤으면 싶으네요. 댓글에 적어놓으신 말씀대로라면 아무래도 코딩라인을 잘못 지정하셔서 그러실 것 같습니다. 우선 이렇게 해보시지요.
1번에 있는 한줄짜리 라인은 function dispBoardWrite() 라는 함수안에서 정확히 저 위치에 정의되어야 합니다.
2번에 있는 function setEditor()라는 함수는 1번에서 삽입한 한줄짜리 라인의 바로 밑이 아니라(만약 정말로 바로 밑에 정의하셨다면 에러가 날만합니다.) 다른 함수들 정의한 것처럼 정의하셔야 합니다. 예를들면 function dispBoardWrite()라는 함수 전체의 밑이라든가 function setCommentEditor()함수 바로 위라든가요. 그러니까 다시 쉽게 설명 드리면...
function dispBoardWrite() (
...
}
setEditor() {
...
}
이런 식으로 정의되어야 합니다.
만약,
function dispBoardWrite() (
...
setEditor() {
...
}
}
이렇게 정의하셨다면 잘못 되신 겁니다.
해보시고 댓글 또 달아주시구요, 최대한 답변 달아보겠습니다. 그런데 내용보니까 아무래도 질문하신 분은 프로그래밍의 기초를 잘 모르시는 것 같으신데 노력하시는 모습이 좋으시네요. 그래서말인데요, 기왕이면 회원가입하셔서 스크랩도 많이 하시고 홈페이지 만드신 거 구경하게끔도 하셔서 여러 고수분들의 도움을 받는게 좋으실 것 같습니다. 저도 초보라서 많은 도움드리기 힘들수도 있으니까요~ ^^ -
질문
2008.01.04 09:34
네~맞습니다.
프로그래밍의 ㅍ자도 모르는 쌩초보랍니다.
너무 초보라서 버벅대기만 하고 하나를 내것으로 만드는데 여간 시간이 많이 걸리는군요
차라리 적용한 파일을 첨부해 주시면 빠른 해결책이 될듯도 한데 가능하실련지요?
차근차근 배워서 실력이 다져지면 그때쯤 홈페이지도 멋지게 선보이고 그러겠습니다.
지금은 턱없이 너무 모자라서......ㅎㅎ
아무튼 답변주셔서 감사드립니다. -
레드맨
2008.01.04 23:38
파일 첨부를 하려다가 그려면 설명이 제대로 안될 것 같아서 본문자체에 아예 넣어서 수정해 버렸습니다. ^^;;
잘 되시길 바랍니다. ^^ -
질문
2008.01.05 10:02
레드맨님 수고하셨습니다.
그런데 설명해주신 코드의 왼쪽에 있는 코드번호가 중복되어 표기되어 있어서 많이 헷깔립니다.
일단 왼쪽에 있는 코드번호를 무시하고
코드를 드래그하여 카피하여 붙여넣기하니 중복으로 복사가 되는 현상이 있더군요.
일일이 수정하여 테스트를 하였으나 수정하는 도중에 아무래도 코드를 정확히 옮겨놓질 못하였는지
에러메세지만 나오게 되어 일단 테스트는 중단을 한 상태입니다.
아무래도 그냥 이정도에서 마무리할까 생각합니다.
제가 너무 헤메고 있는것 같아서 말입니다.
며칠동안 정성껏 답변주셨는데 죄송하군요.
그럼 ... -
레드맨
2008.01.06 00:22
움...잘 안되셨다니 안타깝네요. 근데 더 안타까운 것은 무슨 말씀인지 잘 이해가 가지 않는다는...^^;
중복으로 복사가 된다니..무슨 말인지. 그리고 저 소스는 제 소스를 그대로 넣은 것이기 때문에 시작하는 위치가 정확히 일치 할 겁니다. 예를들어, 1번째 소스의 경우 boardview.php의 185번째 줄 부터 추가해 주시면 되는 건데...2번째 소스도 마찬가지구요.
지금은 잘 안되셨다니까 안타깝네요. 다음에 기회되실때 한번더 해보셨음 하네요.
그럼, 즐거운 주말 되시길...^^
1번대로 한줄문구 삽입(mid이름란에는 사용중인 게시판의 이름인 others로 하였음)을 하였으며
2번대로 코드는 적당한 위치에 넣으라 하여 1번 한줄문구 바로밑에 삽입을 한뒤
others게시판에 들어가 보았으나 별다른 에디터의 변화는 없었으며 또한 설정에 들어가보았으나
별다른 옵션을 바꿀만한 내용은 없었습니다.
해당 게시판에서 글쓰기 버튼을 누르자 마자 아래의 에러메세지만 나옵니다.
참고로 에러가난 224번 코드는 첫번째로 삽입한 1번 한줄코드에 해당합니다.
제가 잘못 이해하여 따라한 것인지요?
실제 적용된 페이지를 샘플이미지로라도 볼수있었으면
이해하기가 조금더 쉬울듯 하기도합니다만..
Fatal error: Call to undefined function: seteditor() in /home/domain/public_html/zbxe/modules/board/board.view.php on line 224