어떤 의존성(jQuery 등)도 없는 순수 자바스크립트 버전입니다. HTML 정적 페이지나 커스텀 웹 애플리케이션에 자유롭게 부착할 수 있습니다.
다운로드한 asamiya-editor.css와 asamiya-editor.js를 HTML 파일에 포함합니다.
<!-- HEAD 태그 내부에 CSS 추가 -->
<link rel="stylesheet" href="path/to/asamiya-editor.css">
<!-- 폰트어썸 (아이콘 출력을 위해 필수) -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<!-- BODY 끝 부분에 JS 추가 -->
<script src="path/to/asamiya-editor.js"></script>
에디터가 렌더링될 빈 div를 만들고 자바스크립트로 인스턴스를 생성합니다.
<div id="editor-container"></div>
<script>
const editor = new AsamiyaEditor('#editor-container', {
placeholder: '여기에 내용을 입력하세요...',
height: '400px' // 에디터 높이 설정
});
</script>
작성된 HTML 내용을 폼을 통해 전송하려면 숨겨진 input을 활용합니다.
<form id="myForm" action="/submit" method="POST">
<input type="hidden" name="content" id="hidden_content">
<div id="editor-container"></div>
<button type="submit">글 작성</button>
</form>
<script>
document.getElementById('myForm').addEventListener('submit', function() {
// 전송 직전에 에디터의 내용을 hidden input에 담기
document.getElementById('hidden_content').value = editor.getHTML();
});
</script>
한국 최고의 게시판 솔루션인 그누보드5에 맞춤 제작된 전용 플러그인입니다. 관리자 페이지에서 클릭 한 번으로 기본 에디터를 아사미야 에디터로 변경할 수 있습니다.
/www/plugin/editor/asamiya/)
※ 내부적으로 editor.lib.php가 완벽하게 구현되어 있어 폼 전송 시 자동으로 본문 내용이 `wr_content` DB 필드로 저장됩니다.
라라벨의 Blade 템플릿 엔진과 컨트롤러를 활용하여 에디터를 부착하고 데이터베이스에 저장하는 방법입니다.
<form action="{{ route('post.store') }}" method="POST" id="postForm">
@csrf
<!-- 제목 -->
<input type="text" name="title" placeholder="제목">
<!-- 아사미야 에디터 영역 -->
<input type="hidden" name="content" id="content">
<div id="editor-container"></div>
<button type="submit">저장하기</button>
</form>
<!-- 스크립트 연결 -->
<script src="{{ asset('assets/asamiya-editor.js') }}"></script>
<script>
const editor = new AsamiyaEditor('#editor-container');
document.getElementById('postForm').addEventListener('submit', function() {
document.getElementById('content').value = editor.getHTML();
});
</script>
public function store(Request $request)
{
// 데이터 유효성 검사
$request->validate([
'title' => 'required',
'content' => 'required'
]);
// DB에 HTML 내용 그대로 저장
Post::create([
'title' => $request->title,
'content' => $request->content // 에디터에서 전송된 HTML
]);
return redirect()->route('post.index');
}
<script>
const editor = new AsamiyaEditor('#editor-container');
// 블레이드의 unescaped 태그 {!! !!} 를 사용하여 HTML 문자열을 그대로 JS에 전달
const savedContent = `{!! addslashes($post->content) !!}`;
editor.setHTML(savedContent);
</script>
파이썬 장고 프레임워크의 Jinja 템플릿에서 에디터를 사용하는 방법입니다.
<form method="POST" id="postForm">
{% csrf_token %}
<input type="text" name="title" placeholder="Title">
<!-- 에디터 데이터 전송용 Hidden Input -->
<input type="hidden" name="content" id="content">
<div id="editor-container"></div>
<button type="submit">Submit</button>
</form>
<script src="{% static 'js/asamiya-editor.js' %}"></script>
<script>
const editor = new AsamiyaEditor('#editor-container');
document.getElementById('postForm').addEventListener('submit', function() {
document.getElementById('content').value = editor.getHTML();
});
// 수정 페이지일 경우 기존 데이터 불러오기 (safe 필터 필수)
{% if post.content %}
editor.setHTML(`{{ post.content|safe|escapejs }}`);
{% endif %}
</script>
def post_create(request):
if request.method == "POST":
title = request.POST.get('title')
content = request.POST.get('content') # 에디터 HTML 내용
# 모델에 저장
Post.objects.create(title=title, content=content)
return redirect('post_list')
return render(request, 'post_form.html')
워드프레스의 기본 에디터를 대체하는 정식 플러그인은 현재 PRO 버전(개발 중)과 함께 배포를 준비하고 있습니다. 하지만 테마의 functions.php를 수정하여 수동으로 숏코드를 만들어 사용할 수 있습니다.
사용 중인 테마의 functions.php 최하단에 아래 코드를 추가하면 [asamiya_editor] 숏코드를 통해 프론트엔드 글쓰기 페이지에 에디터를 띄울 수 있습니다.
function load_asamiya_editor_assets() {
// 에셋 파일이 테마 폴더 안의 assets/ 폴더에 있다고 가정
wp_enqueue_style('asamiya-style', get_template_directory_uri() . '/assets/asamiya-editor.css');
wp_enqueue_script('asamiya-script', get_template_directory_uri() . '/assets/asamiya-editor.js', array(), '1.0', true);
}
add_action('wp_enqueue_scripts', 'load_asamiya_editor_assets');
function asamiya_editor_shortcode() {
ob_start(); ?>
<div id="editor-container"></div>
<script>
document.addEventListener("DOMContentLoaded", function() {
var editor = new AsamiyaEditor('#editor-container');
});
</script>
<?php return ob_get_clean();
}
add_shortcode('asamiya_editor', 'asamiya_editor_shortcode');
※ 정식 플러그인(Zip 패키지)이 출시되면 플러그인 메뉴에서 클릭 한 번으로 설치 가능하도록 업데이트될 예정입니다!