Studyportals的CMS

1.2.1 2022-01-24 16:06 UTC

This package is auto-updated.

Last update: 2022-01-27 08:39:47 UTC


README

Mastersportal.com 等背后的路由和页面组合框架

开发

需要 PHP 7.2

composer install

过去几年中,测试覆盖率已经大幅提高,但仍未完成。提供了一组广泛的集成测试;许多单元测试仍然缺失...

composer run phpunit

除了 PHPUnit,完全符合 PHPStanPSR-12PHPMD 的一个子集。

composer run phpstan
composer run phpstan:tests # slightly relaxed for tests/**

composer run phpcs

composer run phpmd
composer run phpmd:tests # slightly (more) relaxed for tests/**

Git钩子

此项目使用 composer-git-hooks 来启用以下Git钩子

  • pre-push – 运行上面列出的所有测试。
  • checkout – 在切换分支时,运行一个 自动更新脚本 并检查仓库是否与 repo-template-php 保持同步。
  • pre-commit – 阻止在 masterdevelop 分支中直接提交;使用pull请求代替。

使用CMS

除了下面提供的单个代码片段外,目前尚无文档可提供... 😇

路由逻辑(例如将 path/to/a/page.html 转换为实际要显示的页面)是CMS的一部分。每个具体的实现都必须提供自己的逻辑来处理更广泛的环境。例如,从HTTP服务器接收信号、优雅地处理错误条件、发出HTTP重定向和管理客户端缓存行为等不是由CMS管理的。

CMS的最基本实现可能看起来像这样

$site = $this->siteHandler->createSite();
$this->templateHandler->initTemplate($site);

// Set page according to virtual-path (e.g. via Apache RewriteRules)

$virtual_path = trim(
    $this->inputHandler->get(INPUT_GET, 'virtual_path') ?? ''
);

$site->getPageTree()->setPageByPath($virtual_path);

// Show page

echo (string) $site->getPage()->display();

CMS的起源

CMS的起源可以追溯到大约2004年。自2007年中期以来,它一直在为 Mastersportal.com(及其前身 MastersPortal.eu) 提供动力。

它最初是一个完整的 内容管理系统(因此得名及其许多组件),但随着时间的推移,它已经发展成为现在的路由和页面组合框架。

多年以来被 移除 的显著特性

  • 一个允许实时修改网站、配置存储在SQL数据库中的拖放式WYSIWYG管理界面 – 被用PHP类定义的静态页面树替换。
  • 多语言支持(通过Accept-Language头部实现),包括一个交互式的WYSIWYG编辑器,允许所有静态界面元素在原地进行翻译——这种方法的复杂性远远超过了其回报;鉴于当前的内容管理系统(CMS)结构,可以在该包之上构建一个更简单但同样有效的解决方案。
  • 动态(即运行时)的资产“打包器”,将众多JavaScript和CSS文件缩减为有限的资产“打包”(包括网站范围和单个页面级别)——由一个由Webpack驱动的构建过程所取代(不属于此存储库)。

多年来的杰出贡献者