hansschouten/phpagebuilder

一款用于管理任何PHP项目中页面的拖放式页面构建工具。


README

PHPagebuilder

PHPagebuilder

PHPagebuilder是一款用于管理任何PHP项目中页面的拖放式页面构建工具。

PHPagebuilder可以用作超轻量级CMS,快速搭建新网站,也可以集成到现有项目或您喜欢的框架(如这个版本用于Laravel)。服务器端代码不依赖于任何其他库,运行速度极快。它包含一个可选的网站管理器,具有Bootstrap UI,并集成了最受欢迎的开源拖放式页面构建器:GrapesJS。此包注重定制,允许您配置、禁用或替换其任何模块。

目录

它如何帮助我?

无论您是新手还是经验丰富的Web开发者,如果您发现自己处于以下情况之一,PHPagebuilder都可以使您的生活更轻松

  • 您只想创建一个基本的网站,您可以从任何设备轻松管理。
  • 您在安装、配置、更新或使用功能丰富的CMS系统(如Wordpress、Drupal)时感到迷茫。
  • 您不喜欢您尝试过的CMS中的有限页面编辑器。
  • 您希望在几小时内为客户构建一个定制的网站。
  • 您的客户在像Drupal这样的功能丰富的管理面板中感到迷茫。
  • 您讨厌依赖混乱的插件来实现您可以用纯PHP立即编写的功能,但仍然希望有一些管理功能,以便其他人可以管理您创建的网站。
  • 您希望拥有高级功能(搜索功能、显示远程数据源的视图等),并易于由您的客户管理。

功能

页面构建器

PHPagebuilder拥有一个基于GrapesJS的页面构建器。PageBuilder

网站管理器

网站管理器内置了Bootstrap UI。这个网站管理器提供基本功能,例如添加或删除页面,以及编辑页面设置,如页面标题或URL。点击编辑按钮将打开页面构建器。 网站管理器

您不想使用网站管理器?不用担心,它包含在直接使用PHPagebuilder的用户中。请阅读这里了解如何禁用或替换网站管理器。

安装

要安装PHPagebuilder,您可以遵循快速入门路径,快速创建新网站,或者将其集成到您自己的框架或喜欢的项目结构中。

要求

  • PHP版本 >= 7
  • 一个酷炫的项目

快速开始 🚀

如果您想快速开始一个新项目,并具有拖放页面管理功能,您可以下载boilerplate项目结构,并遵循那里的步骤。

集成到现有项目或框架中

使用Composer添加代码

如果您使用Composer来管理PHP依赖项,您可以简单地运行

composer require hansschouten/phpagebuilder

接下来,可以使用以下PHP代码初始化PHPagebuilder

require_once __DIR__ . '/vendor/autoload.php';

$config = require __DIR__ . '/config.php';

$builder = new PHPageBuilder\PHPageBuilder($config);
$builder->handleRequest();

config.php应包含config/config.example.php的副本,并填入您的设置。

不使用Composer添加代码

您没有使用Composer?没关系,此项目是用纯PHP编写的,没有任何依赖项,因此可以直接包含在任何PHP项目中!

只需将最新版本下载到项目中的一个单独文件夹中(我们命名为phpagebuilder)。

接下来,您只需在应该启动页面构建器的PHP文件中包含以下代码

$installationFolder = __DIR__ . '/phpagebuilder';
require_once $installationFolder . '/src/Core/helpers.php';
spl_autoload_register('phpb_autoload');

$config = require __DIR__ . '/config.php';

$builder = new PHPageBuilder\PHPageBuilder($config);
$builder->handleRequest();

config.php应包含config/config.example.php的副本,并填入您的设置。

配置数据库

如果您直接使用PHPagebuilder,它需要一个数据库来存储您的页面。只需创建一个数据库,并运行config/create-tables.sql中的查询。接下来,将数据库凭据添加到您的配置文件中。

创建主题

config.php包含一个配置键theme,其中指定了themes_folderactive_theme。要创建一个新主题,请向配置的主题文件夹中添加一个新的文件夹。此文件夹的名称将是主题的标识符,可用于在theme > active_theme配置中选择主题。

主题应具有以下文件夹结构

  • /blocks
    blocks文件夹包含每个可以在页面构建器中使用的块的子文件夹。单个块的文件夹包含一个view.php或一个view.html。如果使用view.html,则块内容(HTML元素)可以在页面构建器内完全编辑。如果使用view.php,则块可以使用服务器端逻辑(PHP)进行渲染,因此无法从页面构建器内更改HTML内容。
  • /layouts
    layouts文件夹包含每个页面布局的子文件夹。页面布局包含一个定义带有所有样式表和脚本的基础HTML结构的view.php文件,这些样式表和脚本用于在该类型页面上拖拽的块。每个布局都需要在页面上添加HTML块的位置放置字符串:<?= $body ?>
  • /public
    公共文件夹包含所有公开可访问的资产(CSS、JavaScript、图片等)。可以使用 [theme-url] 短代码指向当前活动主题的公共文件夹中的文件。例如,文件 public/css/style.css 可以通过 <link rel="stylesheet" href="[theme-url]/css/style.css"> 加载。

块内嵌块

将块包含到块或布局文件中

可以使用短代码将块包含在另一个块或布局文件中。例如,将短代码 [block slug="header"] 添加到 layouts/master/view.php 中,包含块 blocks/header/view.php 在使用 master 布局的每个页面中。

页面构建器中的嵌套块

要允许在页面构建器中将块拖放到块中,应添加一个块容器。要在块视图文件中添加块容器,只需在所需位置添加 [blocks-container]。以下 HTML 语法允许将块拖放到 Bootstrap 容器元素内部

<div class="container">
    [blocks-container]
</div>

另一种方法是向 HTML 元素添加 phpb-blocks-container 属性,如本例所示

<div class="row">
    <div class="col-md-6" phpb-blocks-container>
    </div>
    <div class="col-md-6" phpb-blocks-container>
    </div>
</div>

扩展 PHPageBuilder

PHPageBuilder 允许您非常容易地为您的主題创建新的块和布局。这对于构建特定的网站和模板来说很棒,但如果您在 CMS 环境中使用 PHPageBuilder,您可能希望提供插件/模块创建他们自己的块,而无需修改您主题中现有的组件。

PHPageBuilder 允许您从插件、Composer 包或任何其他环境注册块、布局和资产(CSS、JS)。

添加新块

/**
 * @param string $slug - A Unique identifier for the block. Prefix author to avoid conflict.
 * @param string $directoryPath - Path to the directory of the Block.
 */
\PHPageBuilder\Extensions::registerBlock($slug, $directoryPath);

// Registering an example block:

\PHPageBuilder\Extensions::registerBlock('foo-navbar', MY_PLUGIN_DIRECTORY . '/blocks/foo-navbar');

添加新布局

/**
 * @param string $slug - A Unique identifier for the layout. Prefix author to avoid conflict.
 * @param string $directoryPath - Path to the directory of the Layout.
 */
\PHPageBuilder\Extensions::registerLayout($slug, $directoryPath);

// Registering an example layout:

\PHPageBuilder\Extensions::registerLayout('foo-master', MY_PLUGIN_DIRECTORY . '/layouts/foo-master');

添加资产(CSS & JS)

/**
 * @param string $src                           - URL of the Asset file.
 * @param string $type                          - 'style' or 'script' 
 * @param string $location                      - 'header' or 'footer'
 * @param array['$key' => '$value'] $attributes - Array of attributes to add to the tag.
 */
\PHPageBuilder\Extensions::registerAsset($src, $type, $location, $attributes = []);

// Registering assets:

\PHPageBuilder\Extensions::registerAsset('/assets/bootstrap.css', 'style', 'header');
\PHPageBuilder\Extensions::registerAsset('/assets/alpine.min.js', 'script', 'header', [
    'defer' => true
]);

块和布局的创建方式与在 创建主题 中描述的方式相同,但它们不受任何主题目录的限制。

定制 PHPageBuilder

PHPagebuilder 是以定制为设计的。它附带一个广泛的示例配置文件,您可以通过它轻松地调整页面构建器以满足您的需求。

PHPagebuilder 由四个模块(Auth、网站管理器、页面构建器、路由)组成,您可以选择禁用或替换为您的实现。要替换模块为您的实现,实现相应的契约,并在配置文件中将默认类替换为您的类。

定制网站管理器

禁用模块

您在项目中已经有管理员登录功能吗?那么,您可以通过将配置中的 use_website_manager 设置为 false 来禁用网站管理器模块。接下来,您可以在项目中使用或实现页面创建/编辑/删除功能,然后直接启动页面构建器。您可以通过使用 PHPageBuilder\Modules\GrapesJS\PageBuilder 类从您的项目渲染页面构建器。

替换模块

如果您想使用 PHPagebuilder 的 CMS 路由功能,但想使用不同的网站管理器,您可以将网站管理器替换为您自己的实现。确保在配置中将 use_website_manager 设置为 true,实现 WebsiteManagerContract 并将您自己的类添加到配置文件中。