반응형
이번 프로젝트에서 어드민 페이지 상품 등록 화면의 상세설명 부분에 아래와 같이 TinyMce 에디터를 적용하게 되었다.
TinyMce 에디터를 사용하면 위와 같은 텍스트 편집기를 추가할 수 있는데
이번 포스팅에서는 TinyMce를 JavaScript로 적용하는 방법에 대해 설명하고 에디터를 커스터마이징하는방법에 대해 포스팅하려한다.
TinyMce 적용방법
TinyMce Api Key 발급
tinymce를 적용하기전에 먼저 아래의 공식 홈페이지에 들어가서 회원가입 후 API KEY를 발급받아야한다.
가입하게 되면 대쉬보드 맨 하단에 API KEY가 나온다.
Html의 Head에 스크립트 코드 추가
TinyMce는 6버전까지 있는데 5버전이 비교적 사용하기 편해보여 5버전을 사용했다.
아래의 no-api-key부분에 발급받은 api key를 추가하면된다.
<script src="https://cdn.tiny.cloud/1/no-api-key/tinymce/5/tinymce.min.js" referrerpolicy="origin"></script>
TinyMce 적용
TinyMce를 적용할 html에 텍스트 필드를 만들어주자
<textarea id="mytextarea"></textarea>
그 다음 스크립트 파일을 만들거나 <script> 태그를 안에 tinymce.init({}) 을 선언해 에디터를 추가해준다.
나는 상품상세 설명이 이미지를 추가하기 위해 아래와 같이 플러그인 및 코드를 추가했다.
tinymce.init({
selector: "#mytextarea", // TinyMCE를 적용할 textarea 요소의 선택자를 지정
plugins: "paste image imagetools", // 'paste', 'image', 'imagetools' 플러그인 추가
height: 500,
width: 900,
toolbar: "undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | outdent indent | image", // 'image' 버튼 툴바에 추가
paste_data_images: true, // 이미지 붙여넣기 설정 활성화
file_picker_types: 'image', // TinyMCE에서 이미지를 선택할 때, 이미지 파일만 선택 (옵션 : media, file 등)
images_upload_handler(blobInfo, success) { // 이미지를 업로드하는 핸들러 함수
// blobInfo : TinyMCE에서 이미지 업로드 시 사용되는 정보를 담고 있는 객체
const file = new File([blobInfo.blob()], blobInfo.filename());
const fileName = blobInfo.filename();
if (fileName.includes("blobid")) {
success(URL.createObjectURL(file));
} else {
imageFiles.push(file);
success(URL.createObjectURL(file)); // Blob 객체의 임시 URL을 생성해 이미지 미리보기 적용
}
}
});
아래와 같이 tinymce.init으로 tinymce를 활성화해주고 selector로 에디터를 적용할 선택자를 지정한 후 추가적으로 커스터 마이징할수 있다.
TinyMce 커스터마이징 공식 문서
아래는 에디터를 커스터마이징하기 위한 공식문서이다.
설명이 잘되어있으니 에디터를 직접 커스텀하는데 큰 어려움을 겪진 않을 것이다.
'◼ 오픈소스' 카테고리의 다른 글
[Kafka] 카프카란 ? 주요개념 정리 및 Pub/Sub 모델 비교 (21) | 2023.09.20 |
---|---|
[Redis] Redis에 로그인 Session정보를 저장하여 사용하기 (세션 불일치 해결) (0) | 2023.09.11 |
Spring Data JPA + QueryDSL 페이징 처리 (0) | 2023.07.11 |
QueryDSL 동적 쿼리를 작성하는 방법에 대해 알아보자. (0) | 2023.07.11 |
QueryDSL 기본 문법 총정리 (0) | 2023.07.10 |