روش افزودن ckeditor به nextjs
یکی از ویرایشگرهای جاوااسکریپتی که در صفحات وب احتمالا با آن برخورد کردهاید افزونهی ckeditor است. در این نوشته ما روش افزودن ckeditor را به nextjs بررسی میکنیم.
روش افزودن ckeditor به nextjs
برای افزودن ویرایشگر ckeditor در فریمورک nextjs مراحل زیر را دنبال کنید:
- در ابتدا ckeditor5-react را با کمک پکیج منیجر npm نصب کنید:
npm i @ckeditor/ckeditor5-react
- سپس باید ckeditor5-build-classic را نیز در ادامهی کار با npm نصب کنید:
npm i @ckeditor/ckeditor5-build-classic
- سپس یک فایل component باید برای خود ایجاد کنید. این فایل را میتوانید با ساختن یک پوشه با نام component در مسیر اصلی پروژه بسازید و درون آن یک فایل با نام editor.js ایجاد کنید:
import React, { useEffect, useRef } from "react";
function Editor({ onChange, editorLoaded, name, value }) {
const editorRef = useRef();
const { CKEditor, ClassicEditor } = editorRef.current || {};
useEffect(() => {
editorRef.current = {
CKEditor: require("@ckeditor/ckeditor5-react").CKEditor, // v3+
ClassicEditor: require("@ckeditor/ckeditor5-build-classic")
};
}, []);
return (
<div>
{editorLoaded ? (
<CKEditor
type=""
name={name}
editor={ClassicEditor}
data={value}
onChange={(event, editor) => {
const data = editor.getData();
// console.log({ event, editor, data })
onChange(data);
}}
/>
) : (
<div>Editor loading</div>
)}
</div>
);
}
export default Editor;
- سپس وارد یکی از صفحات خود که در پوشهی pages شوید و بروید و از کد زیر در بخش return استفاده کنید:
<Editor
name="description"
onChange={(data) => {
setData(data);
}}
editorLoaded={editorLoaded}
/>
- در بدنهی این page نیز دستورات زیر را داخل تابع اصلی صفحه قرار دهید:
const [editorLoaded, setEditorLoaded] = useState(false);
const [data, setData] = useState("");
useEffect(() => {
setEditorLoaded(true);
}, []);
- در نهایت با توجه به دو قطعه کد کوتاه بالا باید با صفحهای با حالت زیر روبه رو شوید:
import React, { useState, useEffect } from "react";
import "./styles.css";
import Editor from "./Editor";
export default function App() {
const [editorLoaded, setEditorLoaded] = useState(false);
const [data, setData] = useState("");
useEffect(() => {
setEditorLoaded(true);
}, []);
return (
<div className="App">
<h1>ckEditor 5</h1>
<Editor
name="description"
onChange={(data) => {
setData(data);
}}
editorLoaded={editorLoaded}
/>
{JSON.stringify(data)}
</div>
);
}
- در نهایت خروجی کار باید چیزی به شکل زیر شود:

- اگر مراحل بالا را به درستی پیش بروید باید دموی بالا را حتما مشاهده کنید.
اگر سوالی در ارتباط با فریمورک nextjs دارید در بخش نظرات همین نوشته آن را برای ما بنویسید.
برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 5]



















میشه چنتا ادیتور تو یک صفحه استفاده کرد بدون مشکل؟
بله، امکان استفاده از چند CKEditor در یک صفحه وجود دارد، فقط کافیست هر کدام را به صورت جداگانه مدیریت کنید.
امکان آپلود تصویر مستقیم تو ckeditor با این روش هست؟
بله، امکان آپلود تصویر مستقیم در CKEditor وجود دارد، اما نیاز به پیکربندی و تنظیمات اضافی دارد که در این پست به آن پرداخته نشده است.
برای پروژههای چندزبانه، ckeditor به راحتی پشتیبانی میکنه یا نیاز به کانفیگ داره؟
بله CKEditor از پروژههای چندزبانه به خوبی پشتیبانی میکند و برای این منظور نیاز به تنظیمات خاصی ندارد.
این روش با TypeScript هم بدون تغییر جواب میده؟
بله، این روش با TypeScript نیز بدون تغییر خاصی قابل استفاده است.
راهی هست که استایلهای سفارشی رو داخل ckeditor اعمال کنیم؟
بله، امکان اعمال استایلهای سفارشی به CKEditor وجود دارد. شما میتوانید با استفاده از فایلهای CSS سفارشی یا تنظیمات مربوط به استایلدهی در هنگام پیکربندی CKEditor، ظاهر آن را مطابق میل خود تغییر دهید.