shel / blog
基于 fusion AFX 的 Neos CMS 博客包。也支持 atom feeds 和 AMP。
Requires
- neos/fusion-afx: ^1.1 || ^7.0
- neos/neos: ~4.3 || ~5.0 || ~7.0
- neos/seo: ~2.1 || ~3.0
This package is auto-updated.
Last update: 2024-09-23 08:07:39 UTC
README
我为包括我的个人博客在内的几个项目开发了此博客包。blog
使用 Fusion、AFX 和 YAML 构建
此博客包几乎所有的功能都基于 Fusion、AFX 和 YAML 配置。因此,它非常易于扩展和适应您的需求。
特性
- 每个博客源都有其自己的 Atom 源
- 显示最新博客条目的内容元素
- 具有自己的模板和导航元素的博客文章
- 类别用于组织文章,可选地有自己的源
- 支持 Twitter 和 Facebook 的社交按钮,可以扩展
- 易于定制
- 支持单个博客文章的 AMP
即将推出
- 作者页面,可以在文章中引用(可选)
- 使 AMP 样式更可定制,默认集成 https://www.ampstart.com/templates#news-blog
安装
将依赖项添加到您的站点包中,如下所示
composer require --no-update shel/blog
然后在项目根目录中运行 composer update
。
您可以根据需要覆盖和修改不同的内容元素
Shel.Blog:Document.Article
- 单个博客帖子Shel.Blog:Document.Feed
- 博客条目的容器,也用作存档和 Atom 源Shel.Blog:Document.Category
- 类别(或标签),可以由文章引用并渲染源Shel.Blog:Content.LatestArticles
- 渲染博客条目的排序列表,例如在主页上Shel.Blog:Constraint.Article
- 允许将内容类型添加到文章的混入
从版本 2.x 或 3.x 升级
许多原型和文档都被重构了,因此此升级将破坏您的网站。新的结构试图使用 Neos CMS 的最新最佳实践,并允许您轻松覆盖渲染的许多部分。
但是,有一个节点迁移来更新您的节点。更新后运行它,如下所示
./flow node:migrate 20190214140619
博客源和类别也获得了新的简介文本内容区域(SEO!)。通过运行此命令添加它们
./flow node:repair
但是,如果您在自己的包中覆盖了任何原型,您应该调整命名和结构。
集成的对 flattr
和 disqus
的支持已被移除。如果您仍然需要它,请自行添加。
有一个新的约束混入,用于确定在博客文章中允许哪种类型的元素。此更改可能会更改您网站的行为,因此您应该在您想要可用的内容类型中添加 'Shel.Blog:Constraint.Article': true
作为超类型。
设置新的源
安装后,您将有一个名为 Blog feed
的新页面类型。将其添加到您的站点 - 例如在站点根目录 - 并将其命名为 Feed
。之后您可以在检查器中配置一些内容。
显示条目数
最多显示多少个项目。作者
将包含在 xml 中的作者。源描述
一个简短描述,将包含在 xml 中。
设置页面渲染
默认情况下,Feed
、Category
和 Article
文档类型将从 Neos.Neos:Page
继承其渲染。因此,如果您在自己的网站包中扩展了这个原型,渲染应该可以正常工作,因为这个包将覆盖大多数项目用来渲染主要内容区域的 Neos.Neos:PrimaryContent
原型。这样,博客就会在您通常放置主要内容的地方渲染自己的内容。
如果不这样做,您可能会遇到像 No template path set. ...
这样的错误。然后您必须告诉包它应该使用哪个文档原型作为基础。
对于 Neos.Demo
网站包,它会看起来像这样
prototype(Shel.Blog:Document.GenericBlogPage) < prototype(Neos.NodeTypes:Page)
这样,feed、分类和文章文档类型将知道如何渲染。当然,您也可以为它们的每个原型指定一个不同的父原型,而不是 GenericBlogPage
。
它会看起来像这样
prototype(Shel.Blog:Document.Feed) < prototype(My.Package:MyFeedPage)
prototype(Shel.Blog:Document.Article) < prototype(My.Package:MyArticlePage)
更改 Feed
的父原型也会更改 Category
的原型,因为它是从 Feed
继承的。
请记住,您需要在某个地方渲染 Neos.Neos:PrimaryContent
对象以获取输出。
配置允许的内容类型
默认情况下,博客文章允许在 Neos.NodeTypes
中定义的大多数元素。要添加您自己的类型,将 'Shel.Blog:Constraint.Article': true
作为超类型添加到它们中。
这样做的原因是,可能会有新的元素通过插件添加进来,这些元素在标准或AMP模式下与博客配合得不是很好。
因此,您应该确保这些元素在那里能够很好地工作。
HTML内容
HTML版本将使用您的默认页面模板,并用您的博客文章替换 mainContent
区域。所有字段都是行内可编辑的,除了 发布日期
,这使得修改您的文章变得非常快!
每个博客文章都包含一个分页小部件,允许您导航到下一个/上一个博客文章。
Atom/XML feed
Atom/XML版本将使用其自己的渲染,大多数情况下您不需要在那里进行任何更改。它将包含您文章的完整版本,包括HTML。因此,它将包含图像等所有内容。所有类型为 Shel.Blog:Document.Feed
的活动页面都将自动在HTML头部作为元标签链接。
分类页面可以以相同的方式工作,但它们的feed链接默认是隐藏的。您可以通过在分类检查器选项中取消选中 隐藏feed链接
来启用此功能。
AMP渲染
由于AMP本身仍在开发中,此功能也在开发中。此包试图提供一些良好的默认设置,您可以从中开始并根据您的需求进行自定义。由于一切都是在Fusion中编写的,您可以覆盖和更改您想要的任何内容。
在您使用此包发布一些博客文章之后,几小时或几天内,谷歌应该能够找到每篇文章的AMP版本,并在其搜索结果中提供AMP版本。
每个博客文章都会自动在其 head
中包含一个指向其AMP版本的链接。此包包括AMP版本的默认CSS,并渲染主要内容区域。
如果您在博客文章中添加了额外的自定义内容元素,如视频和其他内容,您可能需要提供处理器以使它们与AMP兼容。请参阅 replaceImgTags
图像处理器作为示例。
每次您在博客页面上添加新功能时,请务必测试AMP版本!同时,请确保检查您现场网站的Google搜索控制台,因为它会通知您错误。
欢迎提交改进此功能的pull request!
自定义
该网站在 Shel.Blog:Layout.AmpPage
对象中以数组形式呈现。其体部分包含一个内容对象,该对象是一个数组,您可以通过添加额外内容来覆盖和扩展它。默认情况下,它提供了基本布局组件,如页眉、面包屑、博客内容和分页。
在样式表部分,该包提供的基本CSS文件以内联方式添加;请参阅 Shel.Blog:Component.AmpStyles
对象。您可以替换它或添加另一个样式表来修改输出。请记住,由于AMP的要求,样式需要以内联方式呈现。
请不要添加额外的JavaScript,因为当前AMP不支持JavaScript。
请访问 https://www.ampproject.org/docs/get_started/create 了解如何开始使用AMP。
调试
通过加载AMP版本并在url中添加 #development=1
来验证您的博客输出,以使用AMP的开发者模式。打开浏览器的开发者工具,AMP将显示其验证结果。
您可能已经安装的其他插件和包可能会破坏AMP兼容性!请使用浏览器验证器或其他描述此处的方法验证渲染代码。
在为AMP模式创建问题之前,请运行验证并将结果添加到问题中。
关闭AMP渲染模式
您可以使用此融合脚本将其关闭
root.shelBlogArticleAmp >
prototype(Neos.Neos:Page).head.ampLink >
路由
网站地图和分页的路由自动包含在 Settings.yaml
中。
您发现了问题或对改进有想法吗?
在GitHub上Fork此项目并创建一个pull request :) 如果您不是开发者,创建一个问题并告诉我您的想法!