matfish / craft-blogify
为 CraftCMS 定制的即插即用博客
Requires
- craftcms/cms: ^5.0.4
- craftcms/redactor: ^4.0.0
README
Blogify 为使用 CraftCMS 构建博客提供了一键式解决方案。
安装插件后,它会创建数据结构和模板,并允许您生成假帖子,以便您可以立即开始定制您的博客。Blogify 随带许多 Twig 优化,使模板中的代码声明性更强、更简单。
点击 这里 查看零配置结果的全演示。
安装
- 包含包
composer require matfish/craft-blogify
- 安装插件
php craft plugin/install blogify
- (可选但推荐用于开发) 种植一些帖子
php craft blogify/seed
默认为 10 篇帖子。您可以通过传递 --count
选项来种植任意数量的帖子。
就是这样!现在转到 {yoursite.dev}/blog/index
并查看博客的实际效果。
规格
Blogify 向 Craft 添加以下数据结构
- 一个“博客列表”(或索引)单页。
- 一个“博客”频道
- 一个“作者页面”单页(所有作者帖子)
- 一个“博客分类”类别组和相应的类别模板,用于显示与给定类别相关的所有帖子。
- 一个“博客标签”标签组
- 一个“标签页面”单页(所有具有给定标签的帖子)
- 一个“博客资产”资产卷。
- 一个“博客缩略图”转换。
博客频道中的每个帖子都有以下字段
- 标题
- 图像
- 摘要
- 内容(一个 Redactor 字段)
- 类别
- 标签
Twig 增强
初始主题演示了以下所有增强的使用。
全局变量
Blogify 提供一个全局 blogify
变量,具有以下属性
categories
所有博客类别usedCategories
所有至少与一个帖子关联的博客类别tags
所有博客标签
全局方法
blogifyRecentPosts
获取最近帖子。例如blogifyRecentPosts().limit(4).all()
blogifySearch
搜索博客(标题和内容字段)。例如blogifySearch('foo')
blogifyPopularPosts
获取最受欢迎的帖子(见下文)。
此外,实体包含以下上下文方法
条目(帖子)
categories
获取帖子类别relatedPosts
获取与给定帖子类别之一关联的其他帖子tags
获取帖子标签next
获取下一篇帖子prev
获取上一篇帖子image
获取帖子图像thumbnail
获取帖子缩略图(在设置->资产->图像转换->博客缩略图下定义)excerpt
获取帖子摘要content
获取帖子内容(支持 Matrix 字段渲染。见下文)
类别
posts
获取与给定类别相关的帖子
标签
posts
获取具有给定标签的帖子
用户(作者)
posts
获取作者帖子
注意:除非方法获取单个实体(例如 entry.image
),否则 Blogify 将返回一个查询对象,可以进一步扩展查询,例如 author.posts.limit(3).all()
。
使用 Matrix 字段作为帖子内容
默认情况下,提供的帖子内容字段是 Redactor 字段。如果您希望使用功能强大的 Matrix 字段,我们为您提供支持
- 转到设置->字段->帖子内容
- 将字段类型更改为 Matrix 并构建您的块。
- 在
blogify/post
下添加一个_matrix
文件夹 - 为每个块类型添加一个模板,命名方式为处理。
每个部分将暴露一个包含所有字段的block
变量。例如,如果您的块处理程序为postHeading
并且它有一个heading
字段,则创建一个blogify/post/_matrix/postHeading.twig
文件
<h2>{{block.heading}}</h2>
- 渲染文章内容
<div class="post-content"> {{ entry.content | raw }} </div>
请注意,您可以通过插件的配置更改模板文件夹路径。创建一个config/blogify.php
文件
return [ // matrix templates path relative to the templates folder 'matrixTemplatesPath'=>'my/matrix/path' ];
记录文章查看次数
Blogify允许您跟踪您文章的受欢迎程度,因此您可以按受欢迎程度排序并显示查看次数。此选项默认禁用。您可以通过一条命令启用它
php craft blogify/views/record
这将向您的文章添加一个只读的“文章查看次数”字段(在标题右侧)。现在,每次有人查看文章时,Blogify都会自动增加查看次数,同时排除草稿和预览。
排除IP
由于您可能不想记录您自己的查看次数,您可以通过在config/blogify.php
中添加以下内容来排除某些IP以触发事件
return [ 'postViewsExcludeIps'=>[ '192.168.10.1' ] ];
现在您可以在模板中按受欢迎程度排序(当然按降序排序)
blogifyPopularPosts().limit(5).all()
要排除没有查看次数的文章,请将true
传递给方法调用
blogifyPopularPosts(true).limit(5).all()
最后,在模板中显示查看次数,只需调用
{{entry.views}}
多个站点
安装Blogify后,它将注册所有分类组和所有现有站点的所有部分,具有相同的URL(相对于站点根URL)和相同的模板。
如果您需要在站点之间更改模板内容,可以使用
如果您仍然需要复制整个模板,您可以将其复制到您的站点文件夹中,同时保持相同的文件夹结构 **(例如 templates/de/blogify/listing/_entry.twig
) 这将提示Craft在访问具有处理程序de
的站点时将此模板加载为覆盖。请参阅:https://craftcms.com/docs/4.x/sites.html#step-4-update-your-templates
** 注意,您还可以将其复制到一个不保留相同文件夹结构的路径,在这种情况下,您需要在Craft的后端为新部分/分类组定义一个新的模板路径。
修改
Blogify被设计为一个博客的坚实起点。您可以自由扩展和修改数据结构和模板,同时注意以下事项
- 不要更改任何实体的处理程序。
- 不要删除任何数据结构。
- 卸载插件将删除所有数据,包括
blogify
模板文件夹。
许可证
您可以在开发环境中使用Blogify,直到您喜欢。一旦您的站点上线,您必须为插件购买许可证。许可证可通过Craft插件商店购买。
有关更多信息,请参阅Craft的商业插件许可。
要求
此插件需要Craft CMS 3.7.0或更高版本。
问题和讨论指南
请只为错误报告打开新的问题。 对于功能请求和问题,请打开一个新的讨论。在讨论功能请求时,请在标题前加上[FR]。