domogled/pruga-web

PHP 站点另类

dev-master 2022-02-21 12:26 UTC

This package is auto-updated.

Last update: 2024-09-21 16:44:49 UTC


README

这是一个简单的静态网站生成器,它利用了 PHP 语言的原始简洁模板语言的力量。

静态网站

通过运行脚本 ./bin/build-pages.php 会创建一个名为 public 的目录,并在其中找到 HTML 页面。将此目录放置在 Web 服务器上。在服务器上不需要任何 php。网站是静态的。

网站内容

好吧,但网页是从哪里来的?在 pages 目录中创建一个名为 index.phtml 的文件,其中将包含主页的内容。在 index.phtml 文件的子目录中的文件将是子页面。

./pages/index.phtml > https:// ./pages/blog/index.phtml > https:///blog ./pages/blog/edit/index.phtml > https:///blog/edit

构建脚本 ./src/build-pages.php 首先遍历 pages 目录并查找所有 index.phtml 文件。然后处理每个这样的文件作为 路由。处理的结果是位于 public 目录中的相应 index.html 文件。HTTP 服务器通常被设置为提供文件名为 index.html 的内容作为默认内容。因此,我们得到了漂亮的 URL 地址,并且可以对其进行各种设置。

pages 目录中还可以有其他文件,例如用于 PHP 服务器的 GET.phpPOST.php,以及用于前端的前端 JavaScript 文件。

模板和构建系统

PHP 本身就是一个模板系统。我们大量使用它。因此,源代码文件具有 .phtml 扩展名。在这里可以使用 PHP 语言的全部力量,但请务必明智地使用。此解决方案的哲学是在 index.phtml 文件中创建页面的内容。我的意思是指您可能放在 <article> 元素中或 <div id="main"> 中的部分。在 index.phtml 中不会有菜单、侧边栏、页眉或页脚。

构建脚本不会立即处理例如 pages/blog/category/index.phtml 文件,而是首先检查是否存在 pages/blog/category/layout.phtml 文件。如果不存在(我建议不要创建它),它将向上查找布局:pages/blog/layout.phtmlpages/layout.phtml。如果这些也不存在,则使用默认的 templates/layout.phtml

这样,可以为整个网站设置根目录中的自定义布局,并为所有页面设置不同的布局。

TODO:如何工作的示意图

在其他模板系统中称为块的东西在这里是这样解决的。通过使用 <?= $this->bocni_menu() ?> 将侧边菜单插入到页面中。这是通过系统拥有的单个类 class RouteBuilder::__call() 中的魔法来实现的。否则,我试图使用纯函数和杂质函数来解决问题,但在这个例子中,我发现在对象导向编程(OOP)方面的力量很有帮助。因此,在模板中调用 <?= $this->bocni_menu() ?> 后,会执行以下操作:在同一目录(同一路由)中查找 bocni_menu.phtml 文件。如果不存在,则类似于 layout.phtml 一样处理。它在上级目录中查找,直到找到 pages/bocni_menu.phtml,如果那里也没有,则尝试 templates/bocni_menu.phtml

这是一个非常灵活且简单的系统,并且很直观。

元数据

模板中可以使用在 meta.php 文件中设置的变量。实际上,构建脚本会读取这些 meta.php 文件,并在查找模板之前按相反的顺序加载它们。

TODO:示意图比文字多