国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
市場上有很多可用的CMS。有些是開源的,而另一些則可以以價格使用。開源和付費的CMS都是可行的選擇,並且具有其優(yōu)勢。在某些情況下,您想創(chuàng)建自己的CMS。
>與工具欄進行交互以創(chuàng)建頁面組件,例如標題,文本,鏈接和FROALA編輯器實例
創(chuàng)建接口
元素)動態(tài)生成HTML。之後,對於每個編輯器組件,將Froala實例與保存按鈕一起初始化。最後,單擊事件偵聽器被添加到按鈕中,以保存編輯器中寫的帖子。關(guān)於成功,getPosts()函數(shù)被要求“刷新”帖子列表。
準備後端
>經(jīng)常詢問的問題(常見問題解答),以創(chuàng)建一個簡單的CMS,以簡化編輯
創(chuàng)建簡單的CMS時要考慮的關(guān)鍵功能是什麼?
>
使您的CMS靈活且可自定義,請考慮合併允許用戶修改其網(wǎng)站的佈局,設(shè)計和功能的功能。這可能包括更改主題,添加插件和自定義代碼的選項。此外,請確保您的CMS支持各種內(nèi)容類型,例如文本,圖像和視頻。
以確保您的CMS可伸縮,將其設(shè)計為處理增加的金額內(nèi)容和用戶而沒有損害性能。這可能涉及使用有效的數(shù)據(jù)庫優(yōu)化代碼以及實施緩存技術(shù)。此外,考慮使用可以適應不斷變化需求的靈活體系結(jié)構(gòu)。
>我應該使用哪些編程語言來創(chuàng)建我的CMS?但是,流行的選擇包括PHP,JavaScript和Python。這些語言被廣泛使用,具有強大的社區(qū)支持,並提供了可以簡化開發(fā)過程的各種庫和框架。
首頁 科技週邊 IT業(yè)界 如何創(chuàng)建簡單的CM,使編輯變得容易

如何創(chuàng)建簡單的CM,使編輯變得容易

Feb 09, 2025 am 09:32 AM

如何創(chuàng)建簡單的CM,使編輯變得容易

在本文中,我們將研究一種簡單的方法來構(gòu)建您自己的內(nèi)容管理系統(tǒng),以使您的網(wǎng)站變得容易。

我們與弗羅拉拉合作創(chuàng)建了這篇文章。感謝您支持使SitietPoint成為可能的合作夥伴。

鑰匙要點

>利用HTML/CSS/JavaScript/jQuery和Bootstrap的組合來確保響應能力和易於設(shè)計。

>

>根據(jù)用戶偏好,使用PHP和Microsoft SQL Server進行後端操作,可以選擇切換到MySQL或MariadB(例如MariaIadb)。
    >
  • >集成Wysiwyg HTML編輯器Froala,以增強內(nèi)容編輯功能,使管理員更容易有效地管理網(wǎng)站內(nèi)容。
  • >專注於創(chuàng)建一個用戶友好的界面,該接口包括用於添加頁面組件的動態(tài)工具欄和用於輸入管理的模態(tài)系統(tǒng)。
  • 確保CMS支持基本功能,例如創(chuàng)建,查看,編輯和刪除內(nèi)容,並在未來的開發(fā)中具有可伸縮性和安全性增強的潛力。
  • 什麼CMS是
  • 內(nèi)容管理系統(tǒng)(CMS)是功能強大且流行的工具,用於製作嚴重依賴內(nèi)容的平臺。他們?yōu)橛脩籼峁┝撕唵蔚姆椒▉韯?chuàng)建,發(fā)布,查看和編輯內(nèi)容。
  • >
  • >此外,他們通常幾乎不需要編碼經(jīng)驗。這使他們成為博客,企業(yè),開發(fā)人員或任何想以減少努力建立網(wǎng)站的人的理想選擇。
  • CMS用於不同字段的不同目的。例如,它們可用於為博客,公司或自由職業(yè)網(wǎng)站,教育網(wǎng)站甚至電子商務平臺提供動力。因此,使用CMS仍然是一種流行且相關(guān)的選擇,可以在未來幾年中確保其在Web開發(fā)中的位置。

市場上有很多可用的CMS。有些是開源的,而另一些則可以以價格使用。開源和付費的CMS都是可行的選擇,並且具有其優(yōu)勢。在某些情況下,您想創(chuàng)建自己的CMS。

>您可能是尋求挑戰(zhàn)的開發(fā)人員,負責創(chuàng)建CMS的學生或渴望成為CMS行業(yè)大牌的企業(yè)。如果您想創(chuàng)建一個內(nèi)容管理系統(tǒng),那麼本文適合您。

準備自己構(gòu)建自己的CMS

我們將使用以下工具製作基本(即足夠可用的)CMS:

  • html/css/javascript/jquery for the Frontend
  • 引導程序用於響應能力和簡易設(shè)計
  • 後端
  • php
  • 用於存儲數(shù)據(jù)的MS SQL Server(或等效)MS 用於創(chuàng)建數(shù)據(jù)庫和表的SSMS(SQL Server Management Studio或同等學歷)
  • froala,wysiwyg(您看到的是您得到的)html編輯器用於內(nèi)容編輯
  • 雖然我們要製作的CMS是基本的,但也將非常穩(wěn)定。這是因為我們將使用的Wysiwyg編輯器Froala具有您在CMS編輯器中所需的大多數(shù)功能。本文應該讓您走上正確的軌道,無論您的CMS最終目標是什麼。
  • 另外,請注意,我將使用的DBMS(數(shù)據(jù)庫管理系統(tǒng))是Microsoft SQL Server,因為這是我最熟悉的。您可以輕鬆地將其換成首選的DBM,例如MySQL或Mariadb。由於我們沒有在數(shù)據(jù)庫中做任何特別複雜的事情,因此在這裡,
  • dbms的選擇並不重要。
  • >在繼續(xù)之前,假設(shè)您已經(jīng)有了PHP,您選擇的DBM,並且在計算機上安裝了Froala。如果您還沒有,則可以通過訪問其各自的網(wǎng)站並按照說明來安裝它們。
>

CMS中有什麼?

>

通常,在內(nèi)容管理系統(tǒng)中,有管理員和最終用戶。管理員管理網(wǎng)站的頁面,組件和內(nèi)容。他們維護網(wǎng)站,確保每個功能都可以使用,並在需要時進行改進。 另一方面,最終用戶與CMS驅(qū)動網(wǎng)站的頁面和組件進行交互,以創(chuàng)建,編輯和消費內(nèi)容。兩個用戶通常都與CMS中的Wysiwyg編輯器進行交互,以創(chuàng)建和編輯。 出於演示目的,為了使事情變得簡單,我們將僅針對管理員實施單頁CMS。在生產(chǎn)CMS中,我們需要考慮許多其他因素,這些因素超出了本教程的範圍。其中包括用戶管理和訪問權(quán)限,安全性(輸入消毒,參數(shù)化查詢等),性能等。

在我們的簡單CMS中,管理員應該能夠執(zhí)行以下任務:>

>與工具欄進行交互以創(chuàng)建頁面組件,例如標題,文本,鏈接和FROALA編輯器實例

與Froala實例進行交互,以發(fā)布將顯示的內(nèi)容

>

>查看發(fā)布的內(nèi)容

輸入視圖模式,它隱藏了工具欄

管理員通常也可以編輯和刪除頁面組件,但讓我們堅持創(chuàng)建和刪除組件??紤]到這些功能,讓我們通過創(chuàng)建數(shù)據(jù)庫架構(gòu)開始我們的過程。
  • 設(shè)置數(shù)據(jù)庫
  • >由於我們有簡單的要求,因此我們還具有更簡單的數(shù)據(jù)庫結(jié)構(gòu)。對於我們的示例CMS,我們將僅使用兩個無關(guān)表:
  • >
    • > post
      • post_id:int,身份(1,1),而不是null,主鍵
      • post_content:varchar(max),而不是null
      • > ports_on:datetime2(7),而不是null
    • >
        組件
      • component_id:int,身份(1,1),而不是null,主鍵
      • component_type:char(8),而不是null
      • component_content:varchar(255),nullable
      • create_on:datetime2(7),而不是null

    >

    >第一表,即帖子,將存儲從編輯器組件中存儲內(nèi)容,而組件表將存儲使用工具欄生成的頁面元素。 請注意,在大多數(shù)瀏覽器中,URL具有2048個字符的最大長度,但在我們的數(shù)據(jù)庫中,我們僅將其設(shè)置為255個字符。此外,您可能還需要將兩個表的ID列更改為應用程序的隨機字符串。

    創(chuàng)建接口

    我們將包括Bootstrap,Bootstrap圖標以及Froala的CSS和JS文件的CDN鏈接。我們還將擁有我們的自定義CSS和JS文件:

<span><!--Include Bootstrap CSS-->
</span><span><span><span><link</span> href<span>="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css"</span> rel<span>="stylesheet"</span> integrity<span>="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx"</span> crossorigin<span>="anonymous"</span>></span>
</span>
<span><!--Include Bootstrap Icons-->
</span><span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.9.1/font/bootstrap-icons.css"</span>></span>
</span>
<span><!--Include Froala Editor CSS-->
</span><span><span><span><link</span> href<span>="css/froala_editor.pkgd.min.css"</span> rel<span>="stylesheet"</span> type<span>="text/css"</span> /></span>    
</span>
<span><!--Include Custom CSS-->
</span><span><span><span><link</span> href<span>="css/index.css"</span> rel<span>="stylesheet"</span> type<span>="text/css"</span> /></span>
</span>
<span><!--Include Popper JS-->
</span><span><span><span><script</span> src<span>="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.5/dist/umd/popper.min.js"</span> integrity<span>="sha384-Xe+8cL9oJa6tN/veChSP7q+mnSPaj5Bcu9mPX5F5xIGE0DVittaqT5lorf0EI7Vk"</span> crossorigin<span>="anonymous"</span>></span><span><span></script</span>></span>
</span>
<span><!--Include Bootstrap JS-->
</span><span><span><span><script</span> src<span>="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.min.js"</span> integrity<span>="sha384-ODmDIVzN+pFdexxHEHFBQH3/9/vQ9uori45z4JjnFsRydbmQbmL5t1tQ0culUzyK"</span> crossorigin<span>="anonymous"</span>></span><span><span></script</span>></span>
</span>
<span><!--Include jQuery-->
</span><span><span><span><script</span> src<span>="https://code.jquery.com/jquery-3.6.1.js"</span> integrity<span>="sha256-3zlB5s2uwoUzrXK3BT7AX3FyvojsraNFxCc2vC/7pNI="</span> crossorigin<span>="anonymous"</span>></span><span><span></script</span>></span>
</span>
<span><!--Include Froala JS-->
</span><span><span><span><script</span> type<span>="text/javascript"</span> src<span>="js/froala_editor.pkgd.min.js"</span>></span><span><span></script</span>></span>
</span>
<span><!--Include Custom JS-->
</span><span><span><span><script</span> type<span>="text/javascript"</span> src<span>="js/index.js"</span>></span><span><span></script</span>></span>
</span>

>我們將要處理的以下組件是Navbar和工具欄。 Navbar包含網(wǎng)站的標題或品牌以及用於切換工具欄可見性的圖標按鈕(將其視為“ Toggle Admin View”按鈕)。

另一方面,工具欄包含與可以在編程中添加到頁面的四個組件相對應的四個按鈕:

<span><span><span><div</span> class<span>="row"</span>></span>
</span>  <span><span><span><nav</span> class<span>="navbar navbar-expand-xl"</span>></span>
</span>    <span><span><span><div</span> class<span>="container-fluid"</span>></span>
</span>      <span><span><span><a</span> class<span>="navbar-brand text-white"</span> href<span>="#"</span>></span>Froala CMS<span><span></a</span>></span>
</span>      <span><span><span><ul</span> class<span>="navbar-nav me-auto mb-2 mb-lg-0"</span>></span>
</span>        <span><span><span><li</span> class<span>="nav-item"</span>></span>
</span>          <span><span><span><a</span> class<span>="bi bi-eye text-white"</span> href<span>="#"</span> <span>onclick<span>="<span>toggleToolbar()</span>"</span></span>></span><span><span></a</span>></span>
</span>        <span><span><span></li</span>></span>
</span>      <span><span><span></ul</span>></span>
</span>    <span><span><span></div</span>></span>
</span>  <span><span><span></nav</span>></span>
</span><span><span><span></div</span>></span>
</span>
上面的代碼創(chuàng)建了Navbar和組件。 Navbar的背景顏色為#0098F7,使其具有藍色的色調(diào)。 toggletoolbar()onclick事件負責隱藏工具欄元素。接下來,為工具欄寫代碼:

<span><span><span><div</span> class<span>="row mt-5 px-xl-5 mx-xl-5"</span> id<span>="toolbar"</span>></span>
</span>  <span><span><span><p</span> class<span>="lead ms-xl-5"</span>></span>
</span>    This is your CMS toolbar. You can add new components to your page by clicking any of the buttons below. To toggle the visibility of the toolbar, click the eye (<span><span><span><i</span> class<span>="bi bi-eye"</span>></span><span><span></i</span>></span>) icon on the navbar.
</span>  <span><span><span></p</span>></span>
</span>  <span><span><span><div</span> class<span>="col-xxl-3 col-md-4"</span>></span>
</span>    <span><span><span><div</span> class<span>="m-xl-5 shadow p-xl-5 rounded border border-0 toolbarBox"</span> data-bs-toggle<span>="modal"</span> data-bs-target<span>="#headingModal"</span>></span>
</span>      <span><span><span><div</span> class<span>="row text-center display-4"</span>></span>
</span>        <span><span><span><i</span> class<span>="bi bi-type-h1"</span>></span><span><span></i</span>></span>
</span>      <span><span><span></div</span>></span>
</span>      <span><span><span><div</span> class<span>="row text-center h3"</span>></span>
</span>        <span><span><span><label</span>></span>Heading<span><span></label</span>></span>
</span>      <span><span><span></div</span>></span>
</span>    <span><span><span></div</span>></span>
</span>  <span><span><span></div</span>></span>
</span>  <span><span><span><div</span> class<span>="col-xxl-3 col-md-4"</span>></span>
</span>    <span><span><span><div</span> class<span>="m-xl-5 shadow p-xl-5 rounded border border-0 toolbarBox"</span> data-bs-toggle<span>="modal"</span> data-bs-target<span>="#textModal"</span>></span>
</span>      <span><span><span><div</span> class<span>="row text-center display-4"</span>></span>
</span>        <span><span><span><i</span> class<span>="bi bi-fonts"</span>></span><span><span></i</span>></span>
</span>      <span><span><span></div</span>></span>
</span>      <span><span><span><div</span> class<span>="row text-center h3"</span>></span>
</span>        <span><span><span><label</span>></span>Text<span><span></label</span>></span>
</span>      <span><span><span></div</span>></span>
</span>    <span><span><span></div</span>></span>
</span>  <span><span><span></div</span>></span>
</span>  <span><span><span><div</span> class<span>="col-xxl-3 col-md-4"</span>></span>
</span>    <span><span><span><div</span> class<span>="m-xl-5 shadow p-xl-5 rounded border border-0 toolbarBox"</span> data-bs-toggle<span>="modal"</span> data-bs-target<span>="#linkModal"</span>></span>
</span>      <span><span><span><div</span> class<span>="row text-center display-4"</span>></span>
</span>        <span><span><span><i</span> class<span>="bi bi-link-45deg"</span>></span><span><span></i</span>></span>
</span>      <span><span><span></div</span>></span>
</span>      <span><span><span><div</span> class<span>="row text-center h3"</span>></span>
</span>  <span><span><span><label</span>></span>Link<span><span></label</span>></span>
</span>       <span><span><span></div</span>></span>
</span>     <span><span><span></div</span>></span>
</span>   <span><span><span></div</span>></span>
</span>   <span><span><span><div</span> class<span>="col-xxl-3 col-md-4"</span>></span>
</span>    <span><span><span><div</span> class<span>="m-xl-5 shadow p-xl-5 rounded border border-0 toolbarBox"</span> <span>onclick<span>="<span>createComponent('editor')</span>"</span></span>></span>
</span>      <span><span><span><div</span> class<span>="row text-center display-4"</span>></span>
</span>        <span><span><span><i</span> class<span>="bi bi-pencil-square"</span>></span><span><span></i</span>></span>
</span>      <span><span><span></div</span>></span>
</span>      <span><span><span><div</span> class<span>="row text-center h3"</span>></span>
</span>        <span><span><span><label</span>></span>Editor<span><span></label</span>></span>
</span>      <span><span><span></div</span>></span>
</span>    <span><span><span></div</span>></span>
</span>   <span><span><span></div</span>></span>
</span> <span><span><span></div</span>></span>
</span>
>我們使用Bootstrap的網(wǎng)格顯示(單擊此處以了解更多)和大小選項,以使其工具欄為其按鈕組件。我們還使用Bootstrap圖標以及按鈕標籤,以提高可讀性。在製作自己的CMS時,有很多方法可以代表工具欄。

通常的選項是

> navbar , cards ,或> offcanvas elements。在這種情況下,我們使用類似卡的矩形表示它們,每個矩形都具有按鈕狀的行為。

>我們還將為工具欄盒添加一些事件。請注意,我們將打開一個模態(tài),其代碼在下面的前三個框(標題,文本和鏈接)中顯示。

>每個都包含一個輸入字段(兩個用於鏈接,一個用於文本,一個用於URL)。最後,我們將調(diào)用用於初始化我們的Wysiwyg HTML編輯器的CREATECOMPONT函數(shù):>

>上面的代碼顯示了其中一種模式 - 特別是用於將新標題添加到頁面上的代碼。當用戶單擊“標題”按鈕/卡時,顯示此模式。單擊出口或取消按鈕或添加標題時,它將被解散。
<span><span><span><div</span> class<span>="modal fade"</span> id<span>="headingModal"</span> tabindex<span>="-1"</span> aria-labelledby<span>="headingModalLabel"</span> aria-hidden<span>="true"</span>></span>
</span>  <span><span><span><div</span> class<span>="modal-dialog"</span>></span>
</span>    <span><span><span><div</span> class<span>="modal-content"</span>></span>
</span>      <span><span><span><div</span> class<span>="modal-header"</span>></span>
</span>        <span><span><span><h5</span> class<span>="modal-title"</span> id<span>="headingModalLabel"</span>></span>Add a heading:<span><span></h5</span>></span>
</span>        <span><span><span><button</span> type<span>="button"</span> class<span>="btn-close"</span> data-bs-dismiss<span>="modal"</span> aria-label<span>="Close"</span>></span><span><span></button</span>></span>
</span>      <span><span><span></div</span>></span>
</span>      <span><span><span><div</span> class<span>="modal-body"</span>></span>
</span>        <span><span><span><div</span> class<span>="mb-3"</span>></span>
</span>          <span><span><span><input</span> type<span>="text"</span> class<span>="form-control"</span> id<span>="headingContent"</span>></span>
</span>        <span><span><span></div</span>></span>
</span>      <span><span><span></div</span>></span>
</span>      <span><span><span><div</span> class<span>="modal-footer"</span>></span>
</span>        <span><span><span><button</span> type<span>="button"</span> class<span>="btn btn-light"</span>  <span>onclick<span>="<span>resetValue('heading')</span>"</span></span> data-bs-dismiss<span>="modal"</span>></span>Cancel<span><span></button</span>></span>
</span>        <span><span><span><button</span> type<span>="button"</span> class<span>="btn btn-primary"</span> <span>onclick<span>="<span>createComponent('heading')</span>"</span></span> data-bs-dismiss<span>="modal"</span>></span>Save<span><span></button</span>></span>
</span>      <span><span><span></div</span>></span>
</span>    <span><span><span></div</span>></span>
</span>  <span><span><span></div</span>></span>
</span><span><span><span></div</span>></span>
</span>

其他模式的工作方式相似,但是請注意,正確的鏈接輸入應具有文本和URL的兩個輸入字段(目前,我們僅使用一個):>

<span><!--Include Bootstrap CSS-->
</span><span><span><span><link</span> href<span>="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css"</span> rel<span>="stylesheet"</span> integrity<span>="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx"</span> crossorigin<span>="anonymous"</span>></span>
</span>
<span><!--Include Bootstrap Icons-->
</span><span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.9.1/font/bootstrap-icons.css"</span>></span>
</span>
<span><!--Include Froala Editor CSS-->
</span><span><span><span><link</span> href<span>="css/froala_editor.pkgd.min.css"</span> rel<span>="stylesheet"</span> type<span>="text/css"</span> /></span>    
</span>
<span><!--Include Custom CSS-->
</span><span><span><span><link</span> href<span>="css/index.css"</span> rel<span>="stylesheet"</span> type<span>="text/css"</span> /></span>
</span>
<span><!--Include Popper JS-->
</span><span><span><span><script</span> src<span>="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.5/dist/umd/popper.min.js"</span> integrity<span>="sha384-Xe+8cL9oJa6tN/veChSP7q+mnSPaj5Bcu9mPX5F5xIGE0DVittaqT5lorf0EI7Vk"</span> crossorigin<span>="anonymous"</span>></span><span><span></script</span>></span>
</span>
<span><!--Include Bootstrap JS-->
</span><span><span><span><script</span> src<span>="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.min.js"</span> integrity<span>="sha384-ODmDIVzN+pFdexxHEHFBQH3/9/vQ9uori45z4JjnFsRydbmQbmL5t1tQ0culUzyK"</span> crossorigin<span>="anonymous"</span>></span><span><span></script</span>></span>
</span>
<span><!--Include jQuery-->
</span><span><span><span><script</span> src<span>="https://code.jquery.com/jquery-3.6.1.js"</span> integrity<span>="sha256-3zlB5s2uwoUzrXK3BT7AX3FyvojsraNFxCc2vC/7pNI="</span> crossorigin<span>="anonymous"</span>></span><span><span></script</span>></span>
</span>
<span><!--Include Froala JS-->
</span><span><span><span><script</span> type<span>="text/javascript"</span> src<span>="js/froala_editor.pkgd.min.js"</span>></span><span><span></script</span>></span>
</span>
<span><!--Include Custom JS-->
</span><span><span><span><script</span> type<span>="text/javascript"</span> src<span>="js/index.js"</span>></span><span><span></script</span>></span>
</span>
>最後,我們將上面的代碼片段添加到index.css.css文件中,以更改工具欄的背景顏色和鼠標光標。完成後,您的用戶界面應如下所示。

>

如何創(chuàng)建簡單的CM,使編輯變得容易

>現(xiàn)在我們已經(jīng)設(shè)置了界面,現(xiàn)在該使用JavaScript添加功能了。

發(fā)送數(shù)據(jù)

在我們的index.js文件中,我們將為以下功能定義五個功能:創(chuàng)建組件,切換工具欄可見性,重置輸入字段,加載帖子和加載組件。讓我們看看他們每個人的所作所為。

    > createComponent(componentType)我們將使用此功能將創(chuàng)建的組件發(fā)送到數(shù)據(jù)庫。它將ComponentType(將組件類型(鏈接,標題,文本,編輯器)描述為其參數(shù)。首先,我們必須使用開關(guān)案例語句確定組件類型。對於標題,文本和鏈接,我們將使用AJAX請求將其內(nèi)容及其組件類型一起發(fā)送到PHP/ADD.PHP。另一方面,對於編輯人員,我們只需要發(fā)送組件類型即可。成功保存內(nèi)容後,我們將getComponents()函數(shù)稱為“刷新”所顯示的組件。

    toggletoolbar()
  1. 此功能只需根據(jù)需要添加或刪除工具欄的D-FLEX和D-NONE類。

    > repentValue(componentType)
  2. >具有ComponentType參數(shù)的函數(shù),通過通過ID獲取每個元素並將其值設(shè)置為空字符串來重新定位輸入字段的值。
  3. getComponents()

  4. 首先,此功能向php/load.php提出AJAX HTTP請求,以從數(shù)據(jù)庫中獲取組件的數(shù)據(jù)。如果成功,它會根據(jù)從數(shù)據(jù)庫中檢索到的組件(例如,標題組件的

    元素)動態(tài)生成HTML。之後,對於每個編輯器組件,將Froala實例與保存按鈕一起初始化。最後,單擊事件偵聽器被添加到按鈕中,以保存編輯器中寫的帖子。關(guān)於成功,getPosts()函數(shù)被要求“刷新”帖子列表。

  5. > getPosts()

  6. getPosts()函數(shù)由AJAX請求組成,該請求通過PHP/LoadPosts.php檢索數(shù)據(jù)庫中的所有帖子。類似於getComponents(),此功能動態(tài)生成用於顯示帖子的HTML。
  7. 在文檔負載上,getComponents()和getPosts()函數(shù)都調(diào)用?,F(xiàn)在,您已經(jīng)擁有將數(shù)據(jù)發(fā)送到服務器的必要JS代碼,剩下的就是在後端處理它。

    準備後端

    正如您之前可能注意到的那樣,我們有四個PHP文件 - 兩個用於添加組件和帖子的文件,兩個用於加載它們。它們由類似的代碼組成,從使用SQLSRV_Connect連接到數(shù)據(jù)庫,獲取$ _POST變量(如果有),然後定義和運行查詢。下面列出的是這些文件中涉及的查詢:

    >

      load.php:
    <span><!--Include Bootstrap CSS-->
    </span><span><span><span><link</span> href<span>="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css"</span> rel<span>="stylesheet"</span> integrity<span>="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx"</span> crossorigin<span>="anonymous"</span>></span>
    </span>
    <span><!--Include Bootstrap Icons-->
    </span><span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.9.1/font/bootstrap-icons.css"</span>></span>
    </span>
    <span><!--Include Froala Editor CSS-->
    </span><span><span><span><link</span> href<span>="css/froala_editor.pkgd.min.css"</span> rel<span>="stylesheet"</span> type<span>="text/css"</span> /></span>    
    </span>
    <span><!--Include Custom CSS-->
    </span><span><span><span><link</span> href<span>="css/index.css"</span> rel<span>="stylesheet"</span> type<span>="text/css"</span> /></span>
    </span>
    <span><!--Include Popper JS-->
    </span><span><span><span><script</span> src<span>="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.5/dist/umd/popper.min.js"</span> integrity<span>="sha384-Xe+8cL9oJa6tN/veChSP7q+mnSPaj5Bcu9mPX5F5xIGE0DVittaqT5lorf0EI7Vk"</span> crossorigin<span>="anonymous"</span>></span><span><span></script</span>></span>
    </span>
    <span><!--Include Bootstrap JS-->
    </span><span><span><span><script</span> src<span>="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.min.js"</span> integrity<span>="sha384-ODmDIVzN+pFdexxHEHFBQH3/9/vQ9uori45z4JjnFsRydbmQbmL5t1tQ0culUzyK"</span> crossorigin<span>="anonymous"</span>></span><span><span></script</span>></span>
    </span>
    <span><!--Include jQuery-->
    </span><span><span><span><script</span> src<span>="https://code.jquery.com/jquery-3.6.1.js"</span> integrity<span>="sha256-3zlB5s2uwoUzrXK3BT7AX3FyvojsraNFxCc2vC/7pNI="</span> crossorigin<span>="anonymous"</span>></span><span><span></script</span>></span>
    </span>
    <span><!--Include Froala JS-->
    </span><span><span><span><script</span> type<span>="text/javascript"</span> src<span>="js/froala_editor.pkgd.min.js"</span>></span><span><span></script</span>></span>
    </span>
    <span><!--Include Custom JS-->
    </span><span><span><span><script</span> type<span>="text/javascript"</span> src<span>="js/index.js"</span>></span><span><span></script</span>></span>
    </span>
      loadposts.php:
    <span><span><span><div</span> class<span>="row"</span>></span>
    </span>  <span><span><span><nav</span> class<span>="navbar navbar-expand-xl"</span>></span>
    </span>    <span><span><span><div</span> class<span>="container-fluid"</span>></span>
    </span>      <span><span><span><a</span> class<span>="navbar-brand text-white"</span> href<span>="#"</span>></span>Froala CMS<span><span></a</span>></span>
    </span>      <span><span><span><ul</span> class<span>="navbar-nav me-auto mb-2 mb-lg-0"</span>></span>
    </span>        <span><span><span><li</span> class<span>="nav-item"</span>></span>
    </span>          <span><span><span><a</span> class<span>="bi bi-eye text-white"</span> href<span>="#"</span> <span>onclick<span>="<span>toggleToolbar()</span>"</span></span>></span><span><span></a</span>></span>
    </span>        <span><span><span></li</span>></span>
    </span>      <span><span><span></ul</span>></span>
    </span>    <span><span><span></div</span>></span>
    </span>  <span><span><span></nav</span>></span>
    </span><span><span><span></div</span>></span>
    </span>
      add.php:
    <span><span><span><div</span> class<span>="row mt-5 px-xl-5 mx-xl-5"</span> id<span>="toolbar"</span>></span>
    </span>  <span><span><span><p</span> class<span>="lead ms-xl-5"</span>></span>
    </span>    This is your CMS toolbar. You can add new components to your page by clicking any of the buttons below. To toggle the visibility of the toolbar, click the eye (<span><span><span><i</span> class<span>="bi bi-eye"</span>></span><span><span></i</span>></span>) icon on the navbar.
    </span>  <span><span><span></p</span>></span>
    </span>  <span><span><span><div</span> class<span>="col-xxl-3 col-md-4"</span>></span>
    </span>    <span><span><span><div</span> class<span>="m-xl-5 shadow p-xl-5 rounded border border-0 toolbarBox"</span> data-bs-toggle<span>="modal"</span> data-bs-target<span>="#headingModal"</span>></span>
    </span>      <span><span><span><div</span> class<span>="row text-center display-4"</span>></span>
    </span>        <span><span><span><i</span> class<span>="bi bi-type-h1"</span>></span><span><span></i</span>></span>
    </span>      <span><span><span></div</span>></span>
    </span>      <span><span><span><div</span> class<span>="row text-center h3"</span>></span>
    </span>        <span><span><span><label</span>></span>Heading<span><span></label</span>></span>
    </span>      <span><span><span></div</span>></span>
    </span>    <span><span><span></div</span>></span>
    </span>  <span><span><span></div</span>></span>
    </span>  <span><span><span><div</span> class<span>="col-xxl-3 col-md-4"</span>></span>
    </span>    <span><span><span><div</span> class<span>="m-xl-5 shadow p-xl-5 rounded border border-0 toolbarBox"</span> data-bs-toggle<span>="modal"</span> data-bs-target<span>="#textModal"</span>></span>
    </span>      <span><span><span><div</span> class<span>="row text-center display-4"</span>></span>
    </span>        <span><span><span><i</span> class<span>="bi bi-fonts"</span>></span><span><span></i</span>></span>
    </span>      <span><span><span></div</span>></span>
    </span>      <span><span><span><div</span> class<span>="row text-center h3"</span>></span>
    </span>        <span><span><span><label</span>></span>Text<span><span></label</span>></span>
    </span>      <span><span><span></div</span>></span>
    </span>    <span><span><span></div</span>></span>
    </span>  <span><span><span></div</span>></span>
    </span>  <span><span><span><div</span> class<span>="col-xxl-3 col-md-4"</span>></span>
    </span>    <span><span><span><div</span> class<span>="m-xl-5 shadow p-xl-5 rounded border border-0 toolbarBox"</span> data-bs-toggle<span>="modal"</span> data-bs-target<span>="#linkModal"</span>></span>
    </span>      <span><span><span><div</span> class<span>="row text-center display-4"</span>></span>
    </span>        <span><span><span><i</span> class<span>="bi bi-link-45deg"</span>></span><span><span></i</span>></span>
    </span>      <span><span><span></div</span>></span>
    </span>      <span><span><span><div</span> class<span>="row text-center h3"</span>></span>
    </span>  <span><span><span><label</span>></span>Link<span><span></label</span>></span>
    </span>       <span><span><span></div</span>></span>
    </span>     <span><span><span></div</span>></span>
    </span>   <span><span><span></div</span>></span>
    </span>   <span><span><span><div</span> class<span>="col-xxl-3 col-md-4"</span>></span>
    </span>    <span><span><span><div</span> class<span>="m-xl-5 shadow p-xl-5 rounded border border-0 toolbarBox"</span> <span>onclick<span>="<span>createComponent('editor')</span>"</span></span>></span>
    </span>      <span><span><span><div</span> class<span>="row text-center display-4"</span>></span>
    </span>        <span><span><span><i</span> class<span>="bi bi-pencil-square"</span>></span><span><span></i</span>></span>
    </span>      <span><span><span></div</span>></span>
    </span>      <span><span><span><div</span> class<span>="row text-center h3"</span>></span>
    </span>        <span><span><span><label</span>></span>Editor<span><span></label</span>></span>
    </span>      <span><span><span></div</span>></span>
    </span>    <span><span><span></div</span>></span>
    </span>   <span><span><span></div</span>></span>
    </span> <span><span><span></div</span>></span>
    </span>
      > addpost.php:
    <span><span><span><div</span> class<span>="modal fade"</span> id<span>="headingModal"</span> tabindex<span>="-1"</span> aria-labelledby<span>="headingModalLabel"</span> aria-hidden<span>="true"</span>></span>
    </span>  <span><span><span><div</span> class<span>="modal-dialog"</span>></span>
    </span>    <span><span><span><div</span> class<span>="modal-content"</span>></span>
    </span>      <span><span><span><div</span> class<span>="modal-header"</span>></span>
    </span>        <span><span><span><h5</span> class<span>="modal-title"</span> id<span>="headingModalLabel"</span>></span>Add a heading:<span><span></h5</span>></span>
    </span>        <span><span><span><button</span> type<span>="button"</span> class<span>="btn-close"</span> data-bs-dismiss<span>="modal"</span> aria-label<span>="Close"</span>></span><span><span></button</span>></span>
    </span>      <span><span><span></div</span>></span>
    </span>      <span><span><span><div</span> class<span>="modal-body"</span>></span>
    </span>        <span><span><span><div</span> class<span>="mb-3"</span>></span>
    </span>          <span><span><span><input</span> type<span>="text"</span> class<span>="form-control"</span> id<span>="headingContent"</span>></span>
    </span>        <span><span><span></div</span>></span>
    </span>      <span><span><span></div</span>></span>
    </span>      <span><span><span><div</span> class<span>="modal-footer"</span>></span>
    </span>        <span><span><span><button</span> type<span>="button"</span> class<span>="btn btn-light"</span>  <span>onclick<span>="<span>resetValue('heading')</span>"</span></span> data-bs-dismiss<span>="modal"</span>></span>Cancel<span><span></button</span>></span>
    </span>        <span><span><span><button</span> type<span>="button"</span> class<span>="btn btn-primary"</span> <span>onclick<span>="<span>createComponent('heading')</span>"</span></span> data-bs-dismiss<span>="modal"</span>></span>Save<span><span></button</span>></span>
    </span>      <span><span><span></div</span>></span>
    </span>    <span><span><span></div</span>></span>
    </span>  <span><span><span></div</span>></span>
    </span><span><span><span></div</span>></span>
    </span>
    >設(shè)置這些PHP文件後,您應該能夠使用Wysiwyg編輯器的編輯功能執(zhí)行CMS的所有基本功能。製作自己的CMS時,請記住對輸入進行消毒和參數(shù)化查詢,以及其他安全措施,以使您的用戶和應用程序免受某些漏洞的影響。

    >好奇地看到我們的基本CMS正在行動嗎?讓我們測試它!

    首先,讓我們使用構(gòu)建的工具欄創(chuàng)建一些頁面組件。

    如何創(chuàng)建簡單的CM,使編輯變得容易>現(xiàn)在我們已經(jīng)創(chuàng)建了每個組件之一,包括編輯器實例,讓我們嘗試將帖子添加到我們的頁面中。

    在上面的視頻中,我們可以看到功能強大的Wysiwyg編輯器可以提供的一些功能。這些包括字體格式,保留格式時的複制和圖像上傳。它還顯示了角色計數(shù)作家的右下角的字符數(shù)。

    保存內(nèi)容後,我們看到它在編輯器下方顯示。您可能需要添加更多的填充,設(shè)計或完全更改帖子的顯示,但這暫時可以。 Froala提供了一百多個功能,可以豐富內(nèi)容編輯和用戶體驗。他們也可以很好地防止壓倒性用戶。編輯器是可自定義的,因此您只能包含要用戶使用的功能。 >您有一個可以建立的CMS;未來複雜CMS項目的巖石固定基金會。

    下一步是什麼?

    >現(xiàn)在您擁有必要的工具和知識來構(gòu)建一個簡單但堅實的CMS,現(xiàn)在該確定下一步了。您可以在將此CMS轉(zhuǎn)換為成熟的CM方面做出很多改進。

    >一個改進是接口和新功能的添加。其中包括用戶訪問權(quán)限,評論部分,搜索引擎,其他工具,頁面組件和主題,僅舉幾例。

    >您可以做出的另一個明顯的改進是安全性。您可以使用它保護您的CMS,服務器,數(shù)據(jù),用戶和業(yè)務。我們建議查看此鏈接以獲取OWASP(Open Web應用程序安全項目)的指南,該指南說明了最佳的安全實踐。

    >您可能還想了解有關(guān)Wysiwyg編輯的更多信息。例如,您可以檢查它是否具有全面且易於理解的文檔頁面(單擊此處查看示例)。

    熟悉編輯器的另一種方法是使用其演示和免費試用。當您看到它可以帶來的好處時,您可以在方便方面承諾。這些編輯節(jié)省了時間,您將需要額外的幾個月(甚至幾年)來創(chuàng)建和拋光CMS的其他功能。

    最後,您需要閱讀有關(guān)CMS最佳實踐的更多信息。它們會不時改變,因此更新總是更好。

    >

    >我們希望您喜歡閱讀本指南,現(xiàn)在創(chuàng)建CMS的目標似乎更容易獲得。

    >經(jīng)常詢問的問題(常見問題解答),以創(chuàng)建一個簡單的CMS,以簡化編輯

    創(chuàng)建簡單的CMS時要考慮的關(guān)鍵功能是什麼?

    在創(chuàng)建簡單的CMS時,重要的是要考慮將其用戶友好且高效的功能。其中包括一個簡單而直觀的界面,簡單的內(nèi)容管理,靈活性和自定義選項。 CMS還應具有強大的安全系統(tǒng)來保護您的內(nèi)容。此外,考慮合併對SEO友好的功能,以幫助提高網(wǎng)站在搜索引擎上的可見性。

    >我如何確保我的CMS用戶友好?

    確保您的CMS對用戶友好,專注於創(chuàng)建易於導航的直觀界面。這包括清晰的菜單,易於找到的按鈕和邏輯結(jié)構(gòu)。此外,提供全面的文檔和支持,以幫助用戶了解如何有效使用CMS。

    >

    >如何使我的CMS柔性且可自定義?

    使您的CMS靈活且可自定義,請考慮合併允許用戶修改其網(wǎng)站的佈局,設(shè)計和功能的功能。這可能包括更改主題,添加插件和自定義代碼的選項。此外,請確保您的CMS支持各種內(nèi)容類型,例如文本,圖像和視頻。

    >我在CMS中應該實施哪些安全措施?

    >在您的CMS中實現(xiàn)強大的安全措施是至關(guān)重要的保護您的內(nèi)容。這可能包括諸如強密碼要求,兩因素身份驗證和常規(guī)安全更新之類的功能。此外,考慮納入防止常見的安全威脅的措施,例如SQL注入和跨站點腳本。

    >如何使我的CMS SEO友好?友好,考慮合併有助於提高網(wǎng)站在搜索引擎上的可見性的功能。這可能包括添加元標籤,創(chuàng)建SEO友好的URL以及與流行的SEO工具集成的選項。此外,請確保您的CMS支持快速的加載時間和移動友好的設(shè)計,因為這些因素也會影響SEO。 - 帶有CMS的方工具可以增強其功能並提高其效率。這可能包括用於SEO,分析,社交媒體集成等的工具。但是,確保這些集成不會損害CMS的安全性或性能。

    >我如何確保我的CMS可擴展?

    以確保您的CMS可伸縮,將其設(shè)計為處理增加的金額內(nèi)容和用戶而沒有損害性能。這可能涉及使用有效的數(shù)據(jù)庫優(yōu)化代碼以及實施緩存技術(shù)。此外,考慮使用可以適應不斷變化需求的靈活體系結(jié)構(gòu)。

    >

    >我應該使用哪些編程語言來創(chuàng)建我的CMS?但是,流行的選擇包括PHP,JavaScript和Python。這些語言被廣泛使用,具有強大的社區(qū)支持,並提供了可以簡化開發(fā)過程的各種庫和框架。

    >

    >如何測試CMS的性能?在CMS中,考慮使用可以模擬用戶活動並監(jiān)視CMS響應的工具。這可能包括負載測試工具,性能監(jiān)控工具和分析工具。此外,定期查看您的CMS的性能並進行必要的優(yōu)化以確保其保持有效的效率。

    我如何為CMS的用戶提供支持?

    >為CMS的用戶提供全面的支持是至關(guān)重要的確保他們可以有效使用它。這可能包括創(chuàng)建詳細的文檔,提供教程,並提供支持論壇或服務臺。此外,考慮合併反饋系統(tǒng)以收集用戶見解並進行改進。

以上是如何創(chuàng)建簡單的CM,使編輯變得容易的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

開發(fā)人員的快捷方式到您的Udemy樣平臺 開發(fā)人員的快捷方式到您的Udemy樣平臺 Jun 17, 2025 pm 04:43 PM

在開發(fā)類似於Udemy的學習平臺時,重點不僅僅是內(nèi)容質(zhì)量。同樣重要的是如何交付內(nèi)容。這是因為現(xiàn)代教育平臺依賴於媒體,快速且易於消化。

用於購買SSL證書的經(jīng)濟有效的轉(zhuǎn)售商平臺 用於購買SSL證書的經(jīng)濟有效的轉(zhuǎn)售商平臺 Jun 25, 2025 am 08:28 AM

在一個在線信任不可談判的世界中,SSL證書對於每個網(wǎng)站都至關(guān)重要。 SSL認證的市場規(guī)模在2024年價值56億美元,並且由於電子商務業(yè)務的激增而推動了強勁的增長

SaaS的5個最佳支付門戶:您的最終指南 SaaS的5個最佳支付門戶:您的最終指南 Jun 29, 2025 am 08:28 AM

付款網(wǎng)關(guān)是付款過程的關(guān)鍵組成部分,使企業(yè)能夠在線接受付款。它充當客戶與商人之間的橋樑,安全地傳輸付款信息並促進交易。 為了

由於新的Microsoft AI型號 由於新的Microsoft AI型號 Jul 05, 2025 am 12:44 AM

一種新的人工智能(AI)模型已經(jīng)證明了比幾個使用最廣泛使用的全球預測系統(tǒng)更快,更精確地預測重大天氣事件的能力。該名為Aurora的模型已接受過培訓。

新研究聲稱AI比我們更好地'理解”情緒。特別是在情感上充滿電的情況下 新研究聲稱AI比我們更好地'理解”情緒。特別是在情感上充滿電的情況下 Jul 03, 2025 pm 05:48 PM

在我們認為人類始終超越機器的領(lǐng)域的另一個挫折中,研究人員現(xiàn)在建議AI比我們更好地理解情感。研究人員發(fā)現(xiàn)人工智能證明了一個

您的設(shè)備餵養(yǎng)AI助手並收集個人數(shù)據(jù),即使他們睡著了。這是如何知道您分享的內(nèi)容。 您的設(shè)備餵養(yǎng)AI助手並收集個人數(shù)據(jù),即使他們睡著了。這是如何知道您分享的內(nèi)容。 Jul 05, 2025 am 01:12 AM

不管喜歡與否,人工智能已成為日常生活的一部分。許多設(shè)備(包括電動剃須刀和牙刷)已成為AI驅(qū)動的“使用機器學習算法來跟蹤一個人的使用方式,Devi的方式

高級AI型號的CO&#8322;回答相同問題時的排放量比更常見的LLM 高級AI型號的CO&#8322;回答相同問題時的排放量比更常見的LLM Jul 06, 2025 am 12:37 AM

根據(jù)最近的一項研究,我們試圖使AI模型的功能越精確,其碳排放量就越大 - 某些提示產(chǎn)生的二氧化碳比其他提示高達50倍。

See all articles