shel/blog

基于 fusion AFX 的 Neos CMS 博客包。也支持 atom feeds 和 AMP。

安装数: 4,601

依赖项: 0

建议者: 0

安全: 0

星标: 12

关注者: 6

分支: 14

开放性问题: 3

类型:neos-plugin

5.4.2 2021-07-28 13:19 UTC

README

Latest Stable Version Total Downloads License

我为包括我的个人博客在内的几个项目开发了此博客包。blog

使用 Fusion、AFX 和 YAML 构建

此博客包几乎所有的功能都基于 Fusion、AFX 和 YAML 配置。因此,它非常易于扩展和适应您的需求。

特性

  • 每个博客源都有其自己的 Atom 源
  • 显示最新博客条目的内容元素
  • 具有自己的模板和导航元素的博客文章
  • 类别用于组织文章,可选地有自己的源
  • 支持 Twitter 和 Facebook 的社交按钮,可以扩展
  • 易于定制
  • 支持单个博客文章的 AMP

即将推出

安装

将依赖项添加到您的站点包中,如下所示

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  

但是,如果您在自己的包中覆盖了任何原型,您应该调整命名和结构。

集成的对 flattrdisqus 的支持已被移除。如果您仍然需要它,请自行添加。

有一个新的约束混入,用于确定在博客文章中允许哪种类型的元素。此更改可能会更改您网站的行为,因此您应该在您想要可用的内容类型中添加 'Shel.Blog:Constraint.Article': true 作为超类型。

设置新的源

安装后,您将有一个名为 Blog feed 的新页面类型。将其添加到您的站点 - 例如在站点根目录 - 并将其命名为 Feed。之后您可以在检查器中配置一些内容。

  • 显示条目数 最多显示多少个项目。
  • 作者 将包含在 xml 中的作者。
  • 源描述 一个简短描述,将包含在 xml 中。

设置页面渲染

默认情况下,FeedCategoryArticle 文档类型将从 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 :) 如果您不是开发者,创建一个问题并告诉我您的想法!