agence-adeliom/easy-page-bundle
为 Symfony 设计的简单轻量级 CMS 套件
Requires
- php: >=8.0.2
- ext-json: *
- agence-adeliom/easy-common-bundle: ^2.0.122
- agence-adeliom/easy-seo-bundle: ^2.0.122
- easycorp/easyadmin-bundle: ^3.4 || ^v4.0
- stof/doctrine-extensions-bundle: ^1.6
- symfony/config: ^5.4 || ^6.0
- symfony/dependency-injection: ^5.4 || ^6.0
- symfony/deprecation-contracts: ^2.2 || ^v3.0
- symfony/event-dispatcher: ^5.4 || ^6.0
- symfony/form: ^5.4 || ^6.0
- symfony/framework-bundle: ^5.4 || ^6.0
- symfony/http-kernel: ^5.4 || ^6.0
- symfony/options-resolver: ^5.4 || ^6.0
- symfony/property-access: ^5.4 || ^6.0
- symfony/webpack-encore-bundle: ^1.10
- dev-main
- 3.x-dev
- 2.x-dev
- 2.0.122
- 2.0.121
- 2.0.120
- 2.0.119
- 2.0.118
- 2.0.117
- 2.0.116
- 2.0.115
- 2.0.114
- 2.0.112
- 2.0.111
- 2.0.110
- 2.0.109
- 2.0.108
- 2.0.107
- 2.0.106
- 2.0.105
- 2.0.104
- 2.0.103
- 2.0.102
- 2.0.101
- 2.0.100
- 2.0.99
- 2.0.98
- 2.0.97
- 2.0.96
- 2.0.95
- 2.0.94
- 2.0.93
- 2.0.92
- 2.0.91
- 2.0.90
- 2.0.89
- 2.0.88
- 2.0.87
- 2.0.86
- 2.0.85
- 2.0.84
- 2.0.83
- 2.0.82
- 2.0.81
- 2.0.80
- 2.0.79
- 2.0.78
- 2.0.77
- 2.0.76
- 2.0.75
- 2.0.74
- 2.0.73
- 2.0.72
- 2.0.71
- 2.0.70
- 2.0.69
- 2.0.68
- 2.0.67
- 2.0.66
- 2.0.65
- 2.0.64
- 2.0.63
- 2.0.62
- 2.0.61
- 2.0.60
- 2.0.59
- 2.0.57
- 2.0.56
- 2.0.55
- 2.0.54
- 2.0.53
- 2.0.52
- 2.0.49
- 2.0.48
- 2.0.47
- 2.0.46
- 2.0.45
- 2.0.44
- 2.0.43
- 2.0.42
- 2.0.41
- 2.0.40
- 2.0.39
- 2.0.38
- 2.0.37
- 2.0.36
- 2.0.35
- 2.0.34
- 2.0.33
- 2.0.32
- 2.0.31
- 2.0.30
- 2.0.29
- 2.0.28
- 2.0.27
- 2.0.26
- 2.0.25
- 2.0.24
- 2.0.23
- 2.0.22
- 2.0.19
- 2.0.18
- 2.0.17
- 2.0.16
- 2.0.15
- 2.0.10
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 1.0.1
- 1.0.0
- dev-develop
This package is auto-updated.
Last update: 2024-08-29 10:29:42 UTC
README
Easy Page Bundle
Easyadmin 的基本 CMS 系统
使用 Symfony Flex 进行安装
添加我们的 recipes 端点
{ "extra": { "symfony": { "endpoint": [ "https://api.github.com/repos/agence-adeliom/symfony-recipes/contents/index.json?ref=flex/main", ... "flex://defaults" ], "allow-contrib": true } } }
使用 composer 进行安装
composer require agence-adeliom/easy-page-bundle
版本
设置数据库
使用 doctrine 迁移
php bin/console doctrine:migration:diff php bin/console doctrine:migration:migrate
不使用
php bin/console doctrine:schema:update --force
文档
在 Easyadmin 控制台中管理页面
前往您的仪表板控制器,例如: src/Controller/Admin/DashboardController.php
<?php namespace App\Controller\Admin; ... use App\Entity\EasyPage\Page; class DashboardController extends AbstractDashboardController { ... public function configureMenuItems(): iterable { ... yield MenuItem::section('easy.page.admin.menu.contents'); // (Optional) yield MenuItem::linkToCrud('easy.page.admin.menu.pages', 'fa fa-file-alt', Page::class); ...
查看页面
PageController 通过一个单一的 index() 方法处理一些查看页面的方法。
两者的 URI 都是简单的 /{slug},其中 slug 是...页面。
如果您的页面有一个父级,则 URI 如下所示:/ {parentSlug}/{slug}。
您会注意到,我们在生成的 URL 中尊重页面层次。
只要页面是父子关系,您就可以浏览复杂页面列表。
这允许您有像这样的 URL:例如,http://www.mysite.com/about/company/team/members 只会显示成员页面,但其父级有父级,依此类推,直到您达到“根”父级。对于类别也是同样的行为。
注意:这正是为什么您必须为路由使用特定规则的原因,否则您可能会遇到许多“404”错误。
根据单个页面生成路由
如果您在视图或控制器中有一个 Page
对象,您可以使用 getTree()
方法获取整个树状结构,该方法将通过所有父级导航,并返回基于分隔符参数的字符串(默认为 /
,用于 URL)。
让我们通过一个这样的树状结构来举一个例子
/ - Home (root url)
├─ /welcome - Welcome page (set as "homepage", so "Home" will be the same)
│ ├─ /welcome/our-company - Our company
│ ├─ /welcome/our-company/financial - Financial
│ └─ /welcome/our-company/team - Team
└─ Contact
假设我们想要生成“团队”页面的 URL。你有一个这样的 Page
对象在你的视图/控制器中。
{# Page : "Team" #} {{ path('easy_page_index', {"slugs": page.tree}) }} {# Will show : /welcome/our-company/team #}
或者在控制器中
// Page : "Team" $url = $this->generateUrl('easy_page_index', ['slugs' => $page->getTree()]); // $url === /welcome/our-company/team
主页
主页总是第一个设置 template
属性为 homepage
的 Page
对象。请确保只有一个元素被定义为主页,否则您可能会得到意外的结果。
设计
您有一些选项来自定义简单 CMS 的设计。
使用不同的布局
显然,默认布局没有样式。
要更改布局,只需更改 OrbitaleCmsBundle 配置以添加您自己的布局
# config/packages/easy_page.yml easy_page: layouts: front: { resource: @App/layout.html.twig } # The Twig path to your layout
无需覆盖任何内容,您就可以轻松更改 CMS 的布局!
查看 默认布局 以了解哪些 Twig 块是必须的,以确保正确渲染页面。
高级布局配置
布局的基本配置是指定要扩展的模板。
但是,如果您查看配置参考,您将看到还有许多其他参数可以用来定义布局
布局配置原型
- name (用于布局列表的键所用的属性)
您布局的名称。仅为了可读性,也许可以从配置(如果需要)直接获取。 - resource:
用于渲染所有页面的 Twig 模板(见上文部分) - assets_css 和 assets_js
要发送给Twigasset()
函数的任何资产。CSS在stylesheets
块中渲染,js在javascripts
块中。 - 主机:
您想要布局与之匹配的精确域名。 - 模式:
您想要与此布局匹配的路径的正则表达式。如果您想为页面使用不同的布局,这会很有用。例如,您可以指定^/page/
模式的布局,以及^/about-us/
的另一个布局。如果您指定一个非常深的模式,甚至可以更改单个页面的布局!
如果您需要获取原型默认值,请参阅配置参考。
⚠️ 警告! 将使用第一个匹配的布局,就像路由会做的那样,因此请确保以正确的顺序配置它们!
空值将不被考虑。
配置参考
# config/packages/easy_page.yml easy_page: page_class: ~ # Required, must extend Easy Page class page_repository: Adeliom\EasyPageBundle\Repository\PageRepository page_controller: Adeliom\EasyPageBundle\Controller\PageController layouts: # Prototype name: name: ~ # Optional, it's automatically set from the key if it's a string resource: ~ # Required, must be a valid twig template assets_css: [] # Injected with the `asset()` twig function assets_js: [] # Injected with the `asset()` twig function assets_webpack: [] # Injected with the `encore_entry_link_tags()` and `encore_entry_script_tags()` twig functions pattern: ~ # Regexp host: ~ # Exact value cache: enabled: false ttl: 300