checlou / flat-file-cms-bundle
为symfony Web应用添加基于Markdown文件的CMS的Bundle
dev-main
2023-11-17 17:19 UTC
Requires
- php: >=7.2.5
- ext-mbstring: *
- erusev/parsedown: ^1.7
- erusev/parsedown-extra: ^0.8.1
- judev/php-htmltruncator: ^1.2
- symfony/asset: ^5.4|^6.0
- symfony/config: ^5.4|^6.0
- symfony/finder: ^5.4|^6.0
- symfony/framework-bundle: ^5.4|^6.0
- symfony/routing: ^5.4|^6.0
- symfony/twig-bridge: ^5.4|^6.0
- symfony/twig-bundle: ^5.4|^6.0
- symfony/yaml: ^5.4|^6.0
- twig/intl-extra: ^3.7
- twig/twig: ^2.12|^3.0
Requires (Dev)
- phpunit/phpunit: ^8
- symfony/browser-kit: ^5.4|^6.0
- symfony/css-selector: ^5.4|^6.0
- symfony/http-kernel: ^5.4|^6.0
- symfony/web-profiler-bundle: ^5.4|^6.0
This package is auto-updated.
Last update: 2024-09-17 19:18:51 UTC
README
用于在symfony应用中创建使用平面文件的CMS的symfony Bundle。
目的
为现有symfony应用中的CMS功能提供一个解决方案。
- Markdown文件中的内容
快速安装
要求:使用composer安装一个基本的symfony应用。
symfony new my_project_directory --version="6.3.*"
composer require checlou/flat-file-cms-bundle
在config/packages/checlou_flat_file_cms.yaml
中设置配置
checlou_flat_file_cms: content_path: '%kernel.project_dir%/var/cms'
将Tests/Functional/app/Website/cms
中的文件复制到var/cms
以创建一个基本的页面数据集。
主题化
默认主题是一个基本的bootstrap 4主题。您可以通过覆盖twig模板来覆盖它。
- 编写文档说明如何覆盖twig模板
内容示例
文件
文件名:a-page.md
--- title: Page title type: page slug: a-page.html --- Summary === Main content
两种不同类型的内容
- 页面:具有标题、摘要和主要内容的页面
- 帖子:具有标题、摘要和主要内容的帖子
默认值
- 类型:页面
- 别名:带
.html
扩展名和路径作为前缀的文件名 - 标题:不带扩展名的文件名
按文件夹组织
content/
├── a-page.md
├── index.md
├── blog/
│ ├── a-post.md
│ └── another-post.md
│ └── a-category/
│ └── a-post.md
index.md文件是用于显示CMS主页的内容。您可以使用这种类型的文件创建具有如下别名的页面:
/home
,在home/
文件夹中有一个index.md
文件
其他管理平面文件的方法
Pico CMS或Grav CMS
全功能的应用程序,用于管理使用平面文件的网站。但不能用于向现有应用添加CMS功能。请使用symfony组件。
Symfony Bundles
- https://github.com/maschmann/MarkdownContentBundle:太老了(最后提交在2015年)
Twig markdown到html
扩展,用于在twig模板中将markdown转换为html。我们没有使用它。我们应该使用它吗?
https://twig.symfony.ac.cn/doc/3.x/filters/markdown_to_html.html
想法
待办事项
- Page和Pages类的更多测试以及Twig扩展
- 短代码系统
- 通过配置和事件注入全局变量以在markdown中使用
- 内容缓存,无需解析文件即可重建
- 配置CMS,即使它在子文件夹中,也说明页面是独立的(没有父级)
- 用例:一个具有独立页面的特定文件夹
- 将Markdown文件的链接转换为页面的URL
- 用例:使用markdown编辑器的自动完成功能链接到另一个页面
- 命令,用于生成整个网站作为工件
- 用例:使用GitHub Pages托管网站
- 是否使用https://twig.symfony.ac.cn/doc/3.x/filters/markdown_to_html.html?