钥匙要点
>利用HTML/CSS/JavaScript/jQuery和Bootstrap的组合来确保响应能力和易于设计。>
>根据用户偏好,使用PHP和Microsoft SQL Server进行后端操作,可以选择切换到MySQL或MariadB(例如MariaIadb)。- >
- >集成Wysiwyg HTML编辑器Froala,以增强内容编辑功能,使管理员更容易有效地管理网站内容。 >专注于创建一个用户友好的界面,该接口包括用于添加页面组件的动态工具栏和用于输入管理的模态系统。
- 确保CMS支持基本功能,例如创建,查看,编辑和删除内容,并在未来的开发中具有可伸缩性和安全性增强的潜力。
- 什么CMS是
- 内容管理系统(CMS)是功能强大且流行的工具,用于制作严重依赖内容的平台。他们为用户提供了简单的方法来创建,发布,查看和编辑内容。 >
- >此外,他们通常几乎不需要编码经验。这使他们成为博客,企业,开发人员或任何想以减少努力建立网站的人的理想选择。 CMS用于不同字段的不同目的。例如,它们可用于为博客,公司或自由职业网站,教育网站甚至电子商务平台提供动力。因此,使用CMS仍然是一种流行且相关的选择,可以在未来几年中确保其在Web开发中的位置。
市场上有很多可用的CMS。有些是开源的,而另一些则可以以价格使用。开源和付费的CMS都是可行的选择,并且具有其优势。在某些情况下,您想创建自己的CMS。
>您可能是寻求挑战的开发人员,负责创建CMS的学生或渴望成为CMS行业大牌的企业。如果您想创建一个内容管理系统,那么本文适合您。
准备自己构建自己的CMS
我们将使用以下工具制作基本(即足够可用的)CMS: CMS中有什么? 通常,在内容管理系统中,有管理员和最终用户。管理员管理网站的页面,组件和内容。他们维护网站,确保每个功能都可以使用,并在需要时进行改进。
另一方面,最终用户与CMS驱动网站的页面和组件进行交互,以创建,编辑和消费内容。两个用户通常都与CMS中的Wysiwyg编辑器进行交互,以创建和编辑。
出于演示目的,为了使事情变得简单,我们将仅针对管理员实施单页CMS。在生产CMS中,我们需要考虑许多其他因素,这些因素超出了本教程的范围。其中包括用户管理和访问权限,安全性(输入消毒,参数化查询等),性能等。 在我们的简单CMS中,管理员应该能够执行以下任务: 与Froala实例进行交互,以发布将显示的内容 >查看发布的内容 输入视图模式,它隐藏了工具栏
>
>第一表,即帖子,将存储从编辑器组件中存储内容,而组件表将存储使用工具栏生成的页面元素。
请注意,在大多数浏览器中,URL具有2048个字符的最大长度,但在我们的数据库中,我们仅将其设置为255个字符。此外,您可能还需要将两个表的ID列更改为应用程序的随机字符串。 我们将包括Bootstrap,Bootstrap图标以及Froala的CSS和JS文件的CDN链接。我们还将拥有我们的自定义CSS和JS文件: >我们将要处理的以下组件是Navbar和工具栏。 Navbar包含网站的标题或品牌以及用于切换工具栏可见性的图标按钮(将其视为“ Toggle Admin View”按钮)。
> navbar , cards ,或> offcanvas elements。在这种情况下,我们使用类似卡的矩形表示它们,每个矩形都具有按钮状的行为。
其他模式的工作方式相似,但是请注意,正确的链接输入应具有文本和URL的两个输入字段(目前,我们仅使用一个): >
getComponents()
> getPosts()
>
在上面的视频中,我们可以看到功能强大的Wysiwyg编辑器可以提供的一些功能。这些包括字体格式,保留格式时的复制和图像上传。它还显示了角色计数作家的右下角的字符数。
>
>与工具栏进行交互以创建页面组件,例如标题,文本,链接和FROALA编辑器实例
组件
创建接口
<span><!--Include Bootstrap CSS-->
</span><span><span><span><link> 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> 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> 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> 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> src<span >="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.5/dist/umd/popper.min.js"</script></span> integrity<span>="sha384-Xe+8cL9oJa6tN/veChSP7q+mnSPaj5Bcu9mPX5F5xIGE0DVittaqT5lorf0EI7Vk"</span> crossorigin<span>="anonymous"</span>></span><span><span></span>></span>
</span>
<span><!--Include Bootstrap JS-->
</span><span><span><span><script> src<span >="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.min.js"</script></span> integrity<span>="sha384-ODmDIVzN+pFdexxHEHFBQH3/9/vQ9uori45z4JjnFsRydbmQbmL5t1tQ0culUzyK"</span> crossorigin<span>="anonymous"</span>></span><span><span></span>></span>
</span>
<span><!--Include jQuery-->
</span><span><span><span><script> src<span >="https://code.jquery.com/jquery-3.6.1.js"</script></span> integrity<span>="sha256-3zlB5s2uwoUzrXK3BT7AX3FyvojsraNFxCc2vC/7pNI="</span> crossorigin<span>="anonymous"</span>></span><span><span></span>></span>
</span>
<span><!--Include Froala JS-->
</span><span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/froala_editor.pkgd.min.js"</span>></span><span><span></span>></span>
</span>
<span><!--Include Custom JS-->
</span><span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/index.js"</span>></span><span><span></span>></span>
</span></span></span></span></span>
<span><span><span><div> class<span>="row"</span>>
<span><span><span><nav> class<span>="navbar navbar-expand-xl"</span>></nav></span>
</span> <span><span><span><div> class<span>="container-fluid"</span>>
<span><span><span><a> class<span>="navbar-brand text-white"</span> href<span>="#"</span>></a></span>Froala CMS<span><span></span>></span>
</span> <span><span><span><ul> class<span>="navbar-nav me-auto mb-2 mb-lg-0"</span>></ul></span>
</span> <span><span><span><li> class<span>="nav-item"</span>></li></span>
</span> <span><span><span><a> class<span>="bi bi-eye text-white"</span> href<span>="#"</span> <span>onclick<span>="<span>toggleToolbar()</span>"</span></span>></a></span><span><span></span>></span>
</span> <span><span><span></span>></span>
</span> <span><span><span></span>></span>
</span> <span><span><span></span></span></span></span></span></span></span>
</div></span>></span>
</span> <span><span><span></span>></span>
</span><span><span><span></span></span></span></span>
</div></span>></span>
</span>
上面的代码创建了Navbar和组件。 Navbar的背景颜色为#0098F7,使其具有蓝色的色调。 toggletoolbar()onclick事件负责隐藏工具栏元素。接下来,为工具栏写代码:<span><span><span><div> class<span>="row mt-5 px-xl-5 mx-xl-5"</span> id<span>="toolbar"</span>>
<span><span><span><p> class<span>="lead ms-xl-5"</span>></p></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> class<span>="bi bi-eye"</span>></i></span><span><span></span>></span>) icon on the navbar.
</span> <span><span><span></span>></span>
</span> <span><span><span><div> class<span>="col-xxl-3 col-md-4"</span>>
<span><span><span><div> 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><div> class<span>="row text-center display-4"</span>>
<span><span><span><i> class<span>="bi bi-type-h1"</span>></i></span><span><span></span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="row text-center h3"</span>>
<span><span><span><label>></label></span>Heading<span><span></span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="col-xxl-3 col-md-4"</span>>
<span><span><span><div> 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><div> class<span>="row text-center display-4"</span>>
<span><span><span><i> class<span>="bi bi-fonts"</span>></i></span><span><span></span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="row text-center h3"</span>>
<span><span><span><label>></label></span>Text<span><span></span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="col-xxl-3 col-md-4"</span>>
<span><span><span><div> 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><div> class<span>="row text-center display-4"</span>>
<span><span><span><i> class<span>="bi bi-link-45deg"</span>></i></span><span><span></span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="row text-center h3"</span>>
<span><span><span><label>></label></span>Link<span><span></span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="col-xxl-3 col-md-4"</span>>
<span><span><span><div> 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><div> class<span>="row text-center display-4"</span>>
<span><span><span><i> class<span>="bi bi-pencil-square"</span>></i></span><span><span></span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="row text-center h3"</span>>
<span><span><span><label>></label></span>Editor<span><span></span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span></span></span>
</div></span>></span>
</span>
>我们使用Bootstrap的网格显示(单击此处以了解更多)和大小选项,以使其工具栏为其按钮组件。我们还使用Bootstrap图标以及按钮标签,以提高可读性。在制作自己的CMS时,有很多方法可以代表工具栏。 <span><span><span><div> 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><div> class<span>="modal-dialog"</span>>
<span><span><span><div> class<span>="modal-content"</span>>
<span><span><span><div> class<span>="modal-header"</span>>
<span><span><span><h5 id="class-span-modal-title-span-id-span-headingModalLabel-span-gt"> class<span>="modal-title"</span> id<span>="headingModalLabel"</span>></h5></span>Add a heading:<span><span></span>></span>
</span> <span><span><span><button> type<span>="button"</span> class<span>="btn-close"</span> data-bs-dismiss<span>="modal"</span> aria-label<span>="Close"</span>></button></span><span><span></span>></span>
</span> <span><span><span></span></span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="modal-body"</span>>
<span><span><span><div> class<span>="mb-3"</span>>
<span><span><span><input> type<span>="text"</span> class<span>="form-control"</span> id<span>="headingContent"</span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="modal-footer"</span>>
<span><span><span><button> 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>></button></span>Cancel<span><span></span>></span>
</span> <span><span><span><button> 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>></button></span>Save<span><span></span>></span>
</span> <span><span><span></span></span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span><span><span><span></span></span></span>
</div></span>></span>
</span>
<span><!--Include Bootstrap CSS-->
</span><span><span><span><link> 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> 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> 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> 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> src<span >="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.5/dist/umd/popper.min.js"</script></span> integrity<span>="sha384-Xe+8cL9oJa6tN/veChSP7q+mnSPaj5Bcu9mPX5F5xIGE0DVittaqT5lorf0EI7Vk"</span> crossorigin<span>="anonymous"</span>></span><span><span></span>></span>
</span>
<span><!--Include Bootstrap JS-->
</span><span><span><span><script> src<span >="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.min.js"</script></span> integrity<span>="sha384-ODmDIVzN+pFdexxHEHFBQH3/9/vQ9uori45z4JjnFsRydbmQbmL5t1tQ0culUzyK"</span> crossorigin<span>="anonymous"</span>></span><span><span></span>></span>
</span>
<span><!--Include jQuery-->
</span><span><span><span><script> src<span >="https://code.jquery.com/jquery-3.6.1.js"</script></span> integrity<span>="sha256-3zlB5s2uwoUzrXK3BT7AX3FyvojsraNFxCc2vC/7pNI="</span> crossorigin<span>="anonymous"</span>></span><span><span></span>></span>
</span>
<span><!--Include Froala JS-->
</span><span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/froala_editor.pkgd.min.js"</span>></span><span><span></span>></span>
</span>
<span><!--Include Custom JS-->
</span><span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/index.js"</span>></span><span><span></span>></span>
</span></span></span></span></span>
>最后,我们将上面的代码片段添加到index.css.css文件中,以更改工具栏的背景颜色和鼠标光标。完成后,您的用户界面应如下所示。
在我们的index.js文件中,我们将为以下功能定义五个功能:创建组件,切换工具栏可见性,重置输入字段,加载帖子和加载组件。让我们看看他们每个人的所作所为。
> createComponent(componentType)
元素)动态生成HTML。之后,对于每个编辑器组件,将Froala实例与保存按钮一起初始化。最后,单击事件侦听器被添加到按钮中,以保存编辑器中写的帖子。关于成功,getPosts()函数被要求“刷新”帖子列表。
准备后端
正如您之前可能注意到的那样,我们有四个PHP文件 - 两个用于添加组件和帖子的文件,两个用于加载它们。它们由类似的代码组成,从使用SQLSRV_Connect连接到数据库,获取$ _POST变量(如果有),然后定义和运行查询。下面列出的是这些文件中涉及的查询:load.php:
<span><!--Include Bootstrap CSS-->
</span><span><span><span><link> 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> 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> 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> 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> src<span >="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.5/dist/umd/popper.min.js"</script></span> integrity<span>="sha384-Xe+8cL9oJa6tN/veChSP7q+mnSPaj5Bcu9mPX5F5xIGE0DVittaqT5lorf0EI7Vk"</span> crossorigin<span>="anonymous"</span>></span><span><span></span>></span>
</span>
<span><!--Include Bootstrap JS-->
</span><span><span><span><script> src<span >="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.min.js"</script></span> integrity<span>="sha384-ODmDIVzN+pFdexxHEHFBQH3/9/vQ9uori45z4JjnFsRydbmQbmL5t1tQ0culUzyK"</span> crossorigin<span>="anonymous"</span>></span><span><span></span>></span>
</span>
<span><!--Include jQuery-->
</span><span><span><span><script> src<span >="https://code.jquery.com/jquery-3.6.1.js"</script></span> integrity<span>="sha256-3zlB5s2uwoUzrXK3BT7AX3FyvojsraNFxCc2vC/7pNI="</span> crossorigin<span>="anonymous"</span>></span><span><span></span>></span>
</span>
<span><!--Include Froala JS-->
</span><span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/froala_editor.pkgd.min.js"</span>></span><span><span></span>></span>
</span>
<span><!--Include Custom JS-->
</span><span><span><span><script> type<span >="text/javascript"</script></span> src<span>="js/index.js"</span>></span><span><span></span>></span>
</span></span></span></span></span>
loadposts.php:
<span><span><span><div> class<span>="row"</span>>
<span><span><span><nav> class<span>="navbar navbar-expand-xl"</span>></nav></span>
</span> <span><span><span><div> class<span>="container-fluid"</span>>
<span><span><span><a> class<span>="navbar-brand text-white"</span> href<span>="#"</span>></a></span>Froala CMS<span><span></span>></span>
</span> <span><span><span><ul> class<span>="navbar-nav me-auto mb-2 mb-lg-0"</span>></ul></span>
</span> <span><span><span><li> class<span>="nav-item"</span>></li></span>
</span> <span><span><span><a> class<span>="bi bi-eye text-white"</span> href<span>="#"</span> <span>onclick<span>="<span>toggleToolbar()</span>"</span></span>></a></span><span><span></span>></span>
</span> <span><span><span></span>></span>
</span> <span><span><span></span>></span>
</span> <span><span><span></span></span></span></span></span></span></span>
</div></span>></span>
</span> <span><span><span></span>></span>
</span><span><span><span></span></span></span></span>
</div></span>></span>
</span>
add.php:
<span><span><span><div> class<span>="row mt-5 px-xl-5 mx-xl-5"</span> id<span>="toolbar"</span>>
<span><span><span><p> class<span>="lead ms-xl-5"</span>></p></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> class<span>="bi bi-eye"</span>></i></span><span><span></span>></span>) icon on the navbar.
</span> <span><span><span></span>></span>
</span> <span><span><span><div> class<span>="col-xxl-3 col-md-4"</span>>
<span><span><span><div> 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><div> class<span>="row text-center display-4"</span>>
<span><span><span><i> class<span>="bi bi-type-h1"</span>></i></span><span><span></span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="row text-center h3"</span>>
<span><span><span><label>></label></span>Heading<span><span></span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="col-xxl-3 col-md-4"</span>>
<span><span><span><div> 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><div> class<span>="row text-center display-4"</span>>
<span><span><span><i> class<span>="bi bi-fonts"</span>></i></span><span><span></span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="row text-center h3"</span>>
<span><span><span><label>></label></span>Text<span><span></span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="col-xxl-3 col-md-4"</span>>
<span><span><span><div> 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><div> class<span>="row text-center display-4"</span>>
<span><span><span><i> class<span>="bi bi-link-45deg"</span>></i></span><span><span></span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="row text-center h3"</span>>
<span><span><span><label>></label></span>Link<span><span></span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="col-xxl-3 col-md-4"</span>>
<span><span><span><div> 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><div> class<span>="row text-center display-4"</span>>
<span><span><span><i> class<span>="bi bi-pencil-square"</span>></i></span><span><span></span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="row text-center h3"</span>>
<span><span><span><label>></label></span>Editor<span><span></span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span></span></span>
</div></span>></span>
</span>
> addpost.php:
<span><span><span><div> 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><div> class<span>="modal-dialog"</span>>
<span><span><span><div> class<span>="modal-content"</span>>
<span><span><span><div> class<span>="modal-header"</span>>
<span><span><span><h5 id="class-span-modal-title-span-id-span-headingModalLabel-span-gt"> class<span>="modal-title"</span> id<span>="headingModalLabel"</span>></h5></span>Add a heading:<span><span></span>></span>
</span> <span><span><span><button> type<span>="button"</span> class<span>="btn-close"</span> data-bs-dismiss<span>="modal"</span> aria-label<span>="Close"</span>></button></span><span><span></span>></span>
</span> <span><span><span></span></span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="modal-body"</span>>
<span><span><span><div> class<span>="mb-3"</span>>
<span><span><span><input> type<span>="text"</span> class<span>="form-control"</span> id<span>="headingContent"</span>></span>
</span> <span><span><span></span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span><div> class<span>="modal-footer"</span>>
<span><span><span><button> 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>></button></span>Cancel<span><span></span>></span>
</span> <span><span><span><button> 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>></button></span>Save<span><span></span>></span>
</span> <span><span><span></span></span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span> <span><span><span></span></span></span>
</div></span>></span>
</span><span><span><span></span></span></span>
</div></span>></span>
</span>
>设置这些PHP文件后,您应该能够使用Wysiwyg编辑器的编辑功能执行CMS的所有基本功能。制作自己的CMS时,请记住对输入进行消毒和参数化查询,以及其他安全措施,以使您的用户和应用程序免受某些漏洞的影响。 >现在我们已经创建了每个组件之一,包括编辑器实例,让我们尝试将帖子添加到我们的页面中。
以上是如何创建简单的CM,使编辑变得容易的详细内容。更多信息请关注PHP中文网其他相关文章!

与这些顶级开发人员新闻通讯有关最新技术趋势的了解! 这个精选的清单为每个人提供了一些东西,从AI爱好者到经验丰富的后端和前端开发人员。 选择您的收藏夹并节省时间搜索REL

该教程通过使用AWS服务来指导您通过构建无服务器图像处理管道。 我们将创建一个部署在ECS Fargate群集上的next.js前端,与API网关,Lambda函数,S3桶和DynamoDB进行交互。 Th

该试点程序是CNCF(云本机计算基础),安培计算,Equinix金属和驱动的合作,简化了CNCF GitHub项目的ARM64 CI/CD。 该计划解决了安全问题和绩效


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3汉化版
中文版,非常好用

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能