Skip to content

Commit 9d6fb76

Browse files
committed
docs
1 parent 90733ba commit 9d6fb76

31 files changed

Lines changed: 298 additions & 2 deletions

README.md

Lines changed: 107 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,107 @@
1-
#Teebb
2-
The Teebb content management framework base on the Symfony.
1+
#TEEBB内容管理系统使用文档
2+
TEEBB是基于Symfony框架开发的一款可自由扩展的内容管理系统。您可以自由使用本软件来构建您的博客、网站等应用。本项目将会长期开发维护,欢迎使用。
3+
TEEBB的原理设计参考了著名的Drupal,注重内容的扩展性与功能性,因为Drupal的学习曲线太高了,于是我开发了TEEBB,它更轻量也更容易上手。目前0.x版本已实现了内容管理和一些基本功能,
4+
注重内容类型网站的开发。在后续版本中将实现I18N(国际化),RESTful API,消息队列,缓存等等功能。如果您是Symfony初学者,TEEBB用到了Symfony的多个组件,是个不错的学习案例。
5+
欢迎您进行Fork,并提交Pull Request,我们一起开发维护TEEBB,如果后续TEEBB有获利计划,我将优先通知您参与并获取相应利益。
6+
![alt TEEBB控制台](docs/teebb_images/teebb-dashboard.png "TEEBB控制台")
7+
8+
###1.TEEBB的下载和安装说明
9+
TEEBB的运行环境:
10+
PHP 7.2.5及以上、Mysql 5.7.x、推荐安装:Symfony 命令行工具,详见:www.symfony.com
11+
12+
```
13+
#下载TEEBB
14+
composer create-project teebbstudios/teebb acme
15+
cd acme
16+
#安装JS库
17+
npm install
18+
gulp build
19+
#安装CKEDITOR 资源包
20+
symfony console ckeditor:install
21+
#TEEBB资源安装
22+
symfony console assets:install public --symlink
23+
#复制.env文件到.env.local, 并修改数据库DATABASE_URL及MAILER_DSN信息
24+
cp .env .env.local
25+
#初始化数据库
26+
symfony console teebb:database:init -d
27+
#运行服务器
28+
symfony serve
29+
#打开页面登录管理页面
30+
open http://127.0.0.1:8000/admin
31+
```
32+
> 初始管理员账号:admin
33+
> 初始管理员密码:admin
34+
35+
###2.TEEBB的版本号及开发周期说明
36+
TEEBB的版本号遵循语义化版本格式:主版本号.次版本号.修订号
37+
TEEBB的次版本号(例如:0.2.x,0.3.x)发布周期:至少每四个月发布一次。
38+
TEEBB的修订版本号(例如:0.1.1,0.1.2)发布周期:至少每三个星期发布一次。
39+
40+
> Tips:目前TEEBB 0.x版本的核心功能bundle仅包含在teebbstudios/core-bundle,并不利于后期维护,因此将在1.x版本重构TEEBB。
41+
42+
###3.TEEBB的使用介绍
43+
TEEBB的主题是内容管理,但是现实中各种各样不同类型的内容太多了,为了满足各种不同的需求以及实现灵活的扩展性,原理上我借鉴了国外的两个著名开源项目Drupal和Godot。
44+
做个假设:
45+
> 在另一个平行时空,我不是程序员而是一个名不见经传的在线小报记者,每天都忙于收集各种新闻,并发表在新闻网站上。
46+
> 我的新闻网站分为很多不同的栏目,有的栏目要求必须添加新闻图片及文字,有的栏目只用上传新闻文字,有的栏目只用上传新闻图片。
47+
> 传统的内容管理系统是怎么做的呢?
48+
> 它可能预先定义了一个统一的新闻格式,有标题、主体(Body)、封面图片等等所有可能用到的东西,然后我们创建对应的栏目分类词,再根据需要把新添加的新闻指定到对应的栏目中,这是一个好办法。但是我觉得这样灵活性及扩展性就不那么好了。
49+
> 如果我们能把新闻中所用到的标题、主体(Body)、图片等等信息抽取成不同类型的组件(我把这种组件称为“字段”,后面都称为“字段”),然后将用到的字段组合成不同的内容类型,这样会在最大程度上实现灵活性及扩展性。
50+
> 在TEEBB中,目前实现了内容、评论、分类、用户四种bundle包。这四种bundle的具体实现类型都可以组合不同的字段以实现不同的需求。
51+
52+
[3.1 内容bundle](docs/3-1conent-bundle.md)
53+
- [3.1.1 创建第一个内容类型](docs/3-1conent-bundle.md)
54+
[3.2 字段](docs/3-2field.md)
55+
- [3.2.1 TEEBB内置的字段](docs/3-2field.md)
56+
- [3.2.2 TEEBB中常用字段的设置](docs/3-2field.md)
57+
[3.3 内容](docs/3-3conent.md)
58+
- [3.3.1 添加内容](docs/3-3conent.md)
59+
- [3.3.2 内容的查询(未实现,后续版本实现)](docs/3-3conent.md)
60+
[3.4 分类bundle](docs/3-4taxonomy-bundle.md)
61+
- [3.4.1 创建分类类型](docs/3-4taxonomy-bundle.md)
62+
- [3.4.2 分类类型中字段的设置](docs/3-4taxonomy-bundle.md)
63+
- [3.4.3 添加分类词汇](docs/3-4taxonomy-bundle.md)
64+
- [3.4.4 分类字段的使用](docs/3-4taxonomy-bundle.md)
65+
[3.5 评论bundle](docs/3-5comment-bundle.md)
66+
- [3.5.1 创建评论类型](docs/3-5comment-bundle.md)
67+
- [3.5.2 评论类型中字段的设置](docs/3-5comment-bundle.md)
68+
- [3.5.3 评论字段的使用](docs/3-5comment-bundle.md)
69+
- [3.5.4 管理评论内容](docs/3-5comment-bundle.md)
70+
[3.6 用户与用户组](docs/3-6user-bundle-group.md)
71+
- [3.6.1 用户的概念](docs/3-6user-bundle-group.md)
72+
- [3.6.2 用户的字段管理(后续版本实现)](docs/3-6user-bundle-group.md)
73+
- [3.6.3 用户组及权限](docs/3-6user-bundle-group.md)
74+
[3.7 菜单系统](docs/3-7menu-system.md)
75+
- [3.7.1 创建第一个菜单](docs/3-7menu-system.md)
76+
- [3.7.2 菜单的显示](docs/3-7menu-system.md)
77+
[3.8 常用Twig函数及全局变量(将会有视频教程讲解,敬请期待)](docs/3-8twig-front-route.md)
78+
79+
###4.基于TEEBB的开发(将有免费视频教程,敬请期待)
80+
TEEBB的设计就是要高扩展性,因此我们可以在TEEBB上进行二次开发。TEEBB默认提供了内容bundle、分类bundle、评论bundle、用户bundle。
81+
如果有一天有个需求开发一个小型的在线商城。我们可以利用图像字段作为商品的图像信息,利用布尔值字段做为商品的上下架信息、全新或二手信息,利用小数字段为商品的价格信息等等。这样我们可以创建一个bundle作为SKU对象,再创建一个bundle做为商品对象并两者进行关联以实现商城功能。
82+
不止商城,其他类型的应用也完全可以在TEEBB上进行二次开发。
83+
Wooooo!这就是我对TEEBB的设想,如果我们基于TEEBB的二次开发能做些bundle产品并出售赚取一些利润,那就再好不过了。:)
84+
4.1 创建自定义字段
85+
- 4.1.1 FieldType注解介绍
86+
- 4.1.2 实现注解中的所有的类
87+
4.2 创建自定义bundle
88+
- 4.2.1 EntityType注解介绍
89+
- 4.2.2 实现EntityType中的所有类
90+
> Tips: 此节内容较多,文字无法完全表述,将有免费的视频教程推出。基于TEEBB的开发将以视频教程的形式发布在www.teebb.com上,敬请期待。
91+
92+
###5.TEEBB的Roadmap
93+
目前TEEBB发布了0.1.0版本,仍有不少功能急需完善,暂将一些未实现功能按优先级列下,暂不公布时间线,我把其他工作做完就会完善的,表着急啊:)。
94+
1. ckeditor编辑器的图像上传。
95+
2. 控制台Topbar及内容列表搜索过滤。
96+
3. 用户字段的实现及前端 分类 内容 字段的显示。
97+
4. 用户的字段管理。
98+
5. 缓存。
99+
6. RESTful API, 使用api-platform开发。
100+
7. 格式化器及ckeditor编辑器在使用时联动的优化。
101+
8. 控制台Topbar面包屑功能。
102+
9. bug修复。
103+
104+
###6.TEEBB开源协议
105+
本软件遵循MIT协议。如果您能在页面上注明您的应用使用了TEEBB,本人将万分感谢。:)
106+
###7.写在最后
107+
本人可接Symfony开发的工作,正规公司资质,可开增值税发票,如有开发业务请与我联系。QQ/微信:443580003

docs/3-1conent-bundle.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
####3.1 内容bundle
2+
内容bundle的主要功能是用于存储管理不同类型的内容。上文提到的新闻就由内容bundle存储管理。下文将完整实现一个新闻类型的创建及添加。
3+
4+
#####3.1.1 创建第一个内容类型
5+
Teebb已经内置了文章(article)和基本页面(page)两种内容类型,但是我们需要为我们的新闻创建新的类型,请看下图操作:
6+
![alt 添加内容类型](teebb_images/create-content-type.png "添加内容类型")
7+
8+
如上图我们填写内容类型表单并点击保存并添加字段或保存按钮即可,我们在下节会详细介绍字段。

docs/3-2field.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
####3.2 字段
2+
3+
#####3.2.1 TEEBB中的内置字段
4+
TEEBB内置了多个字段,现将各字段用途作如下介绍:
5+
常规类型:
6+
- 链接:该字段会在创建内容时添加链接设置表单,在前台页面会生成对应超链接,可用于在内容中引用外部链接。
7+
- 日期:该字段在会创建内容时添加日期设置表单,在前台页面显示日期值,并可使用此值做内容过滤。
8+
- 布尔值:该字段在创建内容时添加两个预设值,可根据预设值做内容过滤。
9+
- 评论:在内容显示页面底部生成评论显示及添加评论表单。
10+
- 邮件地址:在创建内容时输入邮件地址。
11+
文本类型:
12+
- 文本:基本的255字符长度文本,不过滤html标签。
13+
- 文本、已格式化: 基本的255字符长度文本,使用过滤器过滤html标签。
14+
- 长文本:使用textarea标签输入的不限长度文本,不过滤html标签。
15+
- 长文本、已格式化:使用textarea标签输入的不限长度文本,使用过滤器过滤html标签。
16+
- 长文本、已格式化带摘要:使用textarea标签输入的不限长度文本,使用过滤器过滤html标签,并带内容摘要框,如果摘要框为空则在提交内容时自动生成摘要。
17+
数值类型:
18+
- 小数:数据库中以DECIMAL格式(精度根据字段设置)存储的小数。
19+
- 浮点数:在数据库中以FLOAT类型存储。
20+
- 浮点数列表:根据预设的浮点值列表,在添加内容时选择一个或多个值,并在前台显示此值。
21+
- 整数:在Mysql数据库中以INT(11)类型存储。
22+
- 整数列表:根据预设的整数值列表,在添加内容时选择一个或多个值,并在前台显示此值。
23+
引用类型:
24+
- 文件:用于文件上传,可设置文件上传大小、文件后缀等,在前台则显示文件链接。
25+
- 分类:用于引用分类词汇对内容进行分类。
26+
- 内容:引用其他站内内容,常见的相关文章可使用此字段。
27+
- 用户:引用站内其他用户。(0.1.0版本暂未实现)
28+
- 图像:类似于文件上传,仅可上传图像类型,并可图像文件大小、文件后缀等。在前台显示图像。
29+
30+
现在我们给”新闻类型一“内容类型添加字段。
31+
如果您在上一步点击了“保存并添加字段“按钮,您将直接进入添加字段页面。也可以在“管理类型”-> “管理字段”->“添加字段”,给对应的类型添加字段,如下图:
32+
![alt 管理内容类型页面](teebb_images/add-content-field.png "管理内容类型页面")
33+
34+
![alt 管理内容字段页面](teebb_images/add-content-field-2.png "管理内容字段页面")
35+
36+
我们的“新闻类型一”需要标题、主体(Body)、图片三个字段,我们可以使用内容bundle自带的标题,只需要添加新闻主体、图像字段即可。
37+
下图我们首先设置好图像字段的标题并点击下方按钮进入字段设置页面:
38+
![alt 添加字段](teebb_images/add-image-field.png "添加字段")
39+
40+
#####3.2.2 TEEBB中常用字段的设置
41+
TEEBB中不同类型的字段有不同的设置,通用部分有:
42+
字段的标题:用于在添加内容表单或前台显示的字段标题。
43+
别名:用于获取字段的值或在URL中显示,此值必须唯一。
44+
字段的描述:简短描述字段的用途,用于添加内容表单行的帮助文本。
45+
数量限制:可设置字段表单的数量,也可设置为不限制。
46+
是否显示字段标题:用于在前台内容显示时,是否显示当前字段的标题。
47+
48+
现在,我们对前文新闻图片字段进行设置,我们可能需要上传多张图片,则可以在下图设置字段数量或修改为不限制,其他设置按照默认即可,设置完成点击“更新字段“按钮:
49+
![alt 图像字段设置](teebb_images/image-field-settings.png "图像字段设置")
50+
51+
对于新闻主体(Body),我们可以使用“长文本、已格式化带摘要”字段。按照上述步骤添加新闻主体字段,字段设置按照默认设置即可。
52+
> 字段设置一定要点击"更新字段"按钮,在此步骤TEEBB将为每个字段单独创建一张数据库表。否则将出现数据存储问题。
53+
54+
55+

docs/3-3conent.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
####3.3 内容
2+
3+
#####3.3.1 添加内容
4+
我们的“新闻类型一“内容类型已经创建完成,现在我将发表我的第一篇新闻。
5+
点击“内容”-> “添加内容”->“新闻类型一”:
6+
![alt 添加内容](teebb_images/add-content.png "添加内容")
7+
Bingo!您将会发现添加内容表单将各字段的表单都自动添加了进来,下面我们将新闻的内容填写进去,点击保存即可完成我们的第一篇新闻。
8+
![alt 添加内容表单](teebb_images/new-content-form.png "添加内容表单")
9+
> Tips:您可能想先写新闻主体,再上传图片。我们只需调整字段显示顺序即可:
10+
> 点击:“管理类型”->“新闻类型一”->“管理字段显示”,拖动左侧“十字箭头”即可调整字段顺序。记得点击“保存”。
11+
12+
![alt 调整字段顺序](teebb_images/modify-field-index.png "调整字段顺序")
13+
14+
#####3.3.2 内容的查询(未实现,后续版本实现)

docs/3-4taxonomy-bundle.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
####3.4 分类bundle
2+
分类bundle和内容bundle类似,不同的是分类bundle管理的是分类词汇(Term),不同的分类类型可以包含不同的字段。举例:常见的商城类APP分类中每个分类可能需要配一个小图片,我们可以创建分类类型,给分类类型添加图像字段以实现此效果。
3+
4+
#####3.4.1 创建分类类型
5+
和创建内容类型相似,点击:“添加分类”-> “保存”或 “保存并添加字段”。分类的别名将用于URL中也要全局唯一。
6+
7+
#####3.4.2 分类类型中字段的设置
8+
分类的字段和内容类型中的字段设置操作一致。
9+
10+
#####3.4.3 添加分类词汇
11+
当我们的内容类型中使用了“分类”字段,则需要首先在对应的分类类型下添加分类词汇。点击“管理分类”->选择对应的分类类型->“管理词汇”->“添加词汇”。如下图操作:
12+
![alt 管理分类](teebb_images/manage-taxonomy.png "管理分类")
13+
14+
![alt 添加分类词汇](teebb_images/add-term.png "添加分类词汇")
15+
16+
#####3.4.4 分类字段的使用
17+
在添加完几个词汇后,现在我们想给之前的“新闻分类一”添加一个分类引用。“内容”->“管理类型”->“管理字段”->“添加字段”->选择“分类”字段。如下图:
18+
![alt 添加分类字段](teebb_images/add-taxonomy-field.png "添加分类字段")
19+
20+
![alt 分类字段设置](teebb_images/taxonomy-field-settings.png "分类字段设置")
21+
> Tips: 分类字段设置图片中1号标记请选择要引用的分类类型。2号标记功能暂未实现,请忽略。
22+
23+
设置好分类字段后,我们重新添加/编辑内容。Wooooo! 分类字段的表单行已经出现了,我们输入相关的分类词汇,会下拉提示对应的词汇,并点击保存。
24+
![alt 分类字段表单](teebb_images/taxonomy-field.png "分类字段表单")

docs/3-5comment-bundle.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
####3.5 评论bundle
2+
评论bundle和内容bundle、分类bundle操作基本相同。
3+
4+
#####3.5.1 创建评论类型
5+
TEEBB已经内置了“默认评论”类型。您也可以创建不同类型的评论。操作方法与创建内容类型相同。
6+
7+
#####3.5.2 评论类型中字段的设置
8+
评论类型中字段的设置与前几节相同。
9+
10+
#####3.5.3 评论字段的使用
11+
现在我们给“新闻类型一”的内容添加评论功能。和之前操作一样,给“新闻类型一”添加“评论”字段。“类型”->“管理类型”->“新闻类型一”->“管理字段”->“添加字段”->选择“评论”字段。
12+
> Tips:“评论”类型字段的显示顺序永远在内容页面最底部,多个“评论”字段则按字段顺序依次排列到页面底部。
13+
14+
![alt 评论字段设置](teebb_images/comment-field-settings.png "评论字段设置")
15+
设置完“评论字段”,我们需要为每篇内容单独打开评论。因此,请您在创建内容类型时确定是否需要评论功能,以免不必要的工作。
16+
17+
在新建/编辑内容页面您将看到下图所示“评论”字段的表单:
18+
![alt 内容中的评论字段](teebb_images/content-comment-setting.png "内容中的评论字段")
19+
20+
> Tips: 评论功能只在前台页面显示。TEEBB默认只有已注册登录的用户可以发表评论,且评论内容经过审核后才可显示。
21+
22+
#####3.5.4 管理评论内容
23+
“评论”->“管理评论类型”->“管理评论”。您可以在此页面对已提交的评论进行操作。
24+
![alt 管理评论](teebb_images/manage-submit-commtents.png "管理评论")

docs/3-6user-bundle-group.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
####3.6 用户与用户组
2+
3+
#####3.6.1 用户的概念
4+
TEEBB中的用户(User)也用到了bundle,可以增加修改字段以实现用户信息的扩展性,但是用户只有默认一种类型。
5+
6+
#####3.6.2 用户的字段设置(后续版本实现)
7+
8+
#####3.6.3 用户组及权限
9+
在TEEBB中我们使用用户组也管理用户的权限,如果修改了用户所在的用户组,则用户的roles属性也会相应改变,此功能主是要为了方便的使用Symfony中的Security组件,对用户访问进行控制。
10+
![alt 管理用户组](teebb_images/user-group-role.png "管理用户组")
11+
12+
![alt 对应组的用户都将有对应的roles](teebb_images/user-table-roles.png "对应组的用户都将有对应的roles")

docs/3-7menu-system.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
####3.7 菜单系统
2+
菜单系统是我的最爱,虽然通常一个网站用到菜单不多,但我仍花了些心思在菜单上以使菜单能够更加灵活。菜单系统的设计参考了wordpress的菜单。
3+
菜单功能的实现使用了KnpMenuBundle,这个bundle功能很全面,是做菜单系统的首选。
4+
5+
#####3.7.1 创建第一个菜单
6+
点击“菜单”->“添加菜单”->输入菜单名、菜单别名、菜单描述->保存。和其他的别名一样,菜单别名也必须唯一,后期展示菜单时将用到菜单别名。
7+
![alt 添加菜单](teebb_images/add-menu.png "添加菜单")
8+
9+
点击“菜单”->“管理菜单”->选择对应菜单“管理菜单项”,将进入菜单项编辑页面。
10+
![alt 管理菜单项页面](teebb_images/manage-menu.png "管理菜单项页面")
11+
选择左侧菜单项点击“添加到菜单”即可将菜单项添加到菜单。
12+
1号标记:可以对菜单名称进行修改,但菜单别名不会修改。
13+
2号标记:鼠标放置在菜单项时会呈现“十字箭头”,可拖动菜单项实现菜单项的顺序和父子关系调整。
14+
3号标记:可以对菜单项链接名称进行调整。
15+
最后记得点击“保存菜单“按钮。这一步很关键。:)
16+
17+
#####3.7.2 菜单的显示
18+
我们的菜单系统使用了KnpMenuBundle,我们使用KnpMenuBundle的Twig函数来显示菜单。
19+
```twig
20+
{#此处“demo“换成我们的菜单别名即可。#}
21+
{{ knp_menu_render('demo') }}
22+
```
23+
![alt 测试菜单的显示](teebb_images/menu-show.png "测试菜单的显示")
24+
25+
如果你需要使用自己的菜单模板管理菜单的显示,可以给knp_menu_render方法添加template参数。我们的边栏菜单便使用了模板。
26+
```twig
27+
{{ knp_menu_render('demo', {template: 'template.html.twig'}) }}
28+
```
29+
更多的使用方法请参考KnpMenuBundle文档。https://symfony.com/doc/current/bundles/KnpMenuBundle/index.html
30+

0 commit comments

Comments
 (0)