ginopane / wn-blogtaxonomy-plugin
一个强大的 Winter CMS 插件,通过有用的分类扩展了 Winter 博客插件
Requires
- php: >=7.2.9
- winter/wn-blog-plugin: ^2.0.0
Requires (Dev)
- phpmd/phpmd: ^2.10
- phpstan/phpstan: ^0.12.85
- squizlabs/php_codesniffer: ^3.6.0
- winter/storm: ^1.1
- winter/wn-backend-module: ^1.1
- winter/wn-cms-module: ^1.1
- winter/wn-system-module: ^1.1
- dev-master
- v3.6.0
- v3.5.1
- v3.5.0
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.6.1
- v2.6.0
- v2.5.0
- v2.4.0
- v2.3.1
- v2.3.0
- v2.2.1
- v2.2.0
- v2.1.1
- v2.1.0
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.14.2
- v1.14.1
- v1.14.0
- v1.13.2
- v1.13.1
- v1.13.0
- v1.12.0
- v1.11.1
- v1.11.0
- v1.10.0
- v1.9.0
- v1.8.0
- v1.7.0
- v1.6.0
- v1.5.4
- v1.5.3
- v1.5.2
- v1.5.1
- v1.5.0
- v1.4.0
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.0
- dev-develop
This package is auto-updated.
Last update: 2024-09-15 21:40:59 UTC
README
Winter Blog 插件的分类扩展。
源自 October CMS 的 Blog Taxonomy 插件的 3.0.5 版本。
目录
受到 Blog Tags Extension 和 Blog Series 插件的启发,Blog Taxonomy 以高质量和可靠的方式添加了标签和系列功能。每篇帖子可以属于一个系列,同时也可以有多个标签。
安装
Composer
可以通过 Composer 安装此插件。
composer require ginopane/wn-blogtaxonomy-plugin
之后,您需要确保插件将被安装到 Winter CMS 本身中。为此,您需要运行以下命令之一:
php artizan winter:up
或
php artizan plugin:refresh GinoPane.BlogTaxonomy
对原始博客插件的变化
分类
分类 用于对您的帖子进行广泛的分组。将这些视为网站的一般主题或目录。分类用于帮助确定您的博客真正关于什么。它是为了帮助读者在您的网站上找到正确类型的内容。分类是分层的,因此您可以定义子分类。
原始博客分类增强了在单个分类页面添加帖子的功能。
它们还与标签和系列一起以类似标签的新样式放置在后台 CMS 博客页面的 分类 选项卡中。
此外,自 3.0.0 版本以来,分类可以拥有封面图片和一组特色图片(分别对应 cover_image
和 featured_images
属性)。为启用或禁用此扩展,添加了两个新的后端设置。
标签
标签用于描述您的帖子的具体细节。将这些视为您网站的索引词。它们是您可以使用来细分内容的小数据。标签不是分层的。
系列
系列可以帮助您组织相关的帖子流。
类型
从 3.0.0 版本开始,帖子可以分配类型。可以通过插件的后端设置启用帖子类型支持。类型是一组可以与帖子关联的属性。类型作为单独的模型在后台创建和编辑。每个帖子类型定义了几个属性,当选择特定类型时,这些属性作为额外的表单输入添加。
插件翻译支持
从 1.5.0 版本开始,Blog Taxonomy 支持安装 Winter Translate 插件。所有标签和系列字段都可以进行翻译。
实现前端页面
帖子类型
帖子类型提供了额外的属性,可以分配给博客文章。每个属性在创建时都会有一个自己的代码(如文章、标签、系列等的 slug
)。这个代码可以用来访问单篇文章的属性值。为此,添加了以下方法:
typeAttribute(string code) - to get one attribute
typeAttributes() - to get all attributes
例如,如果您有一个带有 rating
代码的“评分”属性,您可以在模板中这样显示它:
<span>{{ post.typeAttribute('rating') }}</span>
组件
博客分类插件提供了一些基本的标记组件,这些组件对前端使用很有用。默认标记不是为了适应任何现有的前端主题,它只是一个示例,所以如果默认标记不适合您的网站,请随时从默认部分复制它,并用您自己的标记替换。
可用组件
- 系列导航 (
seriesNavigation
) - 为单篇文章提供系列内的导航。 - 系列中的帖子 (
postsInSeries
) - 列出提供的系列中的所有帖子。 - 带有标签的帖子 (
postsWithTag
) - 列出带有提供的标签的所有帖子。 - 相关帖子 (
relatedPosts
) - 提供与标签相关联的帖子列表。 - 系列列表 (
seriesList
) - 显示系列列表。 - 标签列表 (
tagList
) - 显示标签列表。 - 相关系列 (
relatedSeries
) - 提供相关系列列表。
系列导航
组件 seriesNavigation
为单篇文章提供系列内的导航。例如,您可以显示同一系列中的下一篇文章和上一篇文章,显示系列详情并链接到其页面等。
组件属性
- 帖子 slug - 从 URL 参数中获取由 slug 值指定的帖子的系列导航;例如,如果帖子 slug 是
:post
,则页面 URL 必须包含:post
参数,该参数的值将用作帖子 slug 来检索系列; - 系列页面 - 包含
postsInSeries
组件的 CMS 页面,用于显示单个系列内容和帖子; - 帖子页面 - 要显示单个博客帖子内容的博客帖子页面名称。
系列中的帖子
组件 postsInSeries
列出提供的系列中的所有帖子。该组件支持分页和帖子排序。
可用属性
- 系列 slug - 使用此 URL 参数中提供的 slug 值查找系列;例如,如果系列 slug 是
:series
,则页面 URL 必须包含:series
参数,该参数的值将用作系列 slug 来检索系列; - 帖子排序 - 帖子应该按哪个属性和方向排序;
- 页面参数 - 根据此 URL 参数计算分页;
- 每页项目数 - 每页应显示多少个项目(如果有),“0”显示所有项目;
- 帖子页面 - 显示单个博客帖子内容的博客帖子页面名称;
- 分类页面 - 显示单个博客分类内容的分类页面名称;
- 包含带有标签的帖子 - 额外包含带有当前系列标签的帖子;
- 包含分类 - 以逗号分隔的分类 ids/slugs 列表(可以混合使用);只有包含这些分类的帖子将包含在列表中;
- 排除帖子 - 以逗号分隔的帖子 ids/slugs 列表(可以混合使用);这些帖子将不会包含在列表中;
- 排除分类 - 以逗号分隔的分类 ids/slugs 列表(可以混合使用);具有这些分类的帖子将不会包含在列表中。
带有标签的帖子
组件 postsWithTag
列出带有提供的标签的所有帖子。该组件支持分页和帖子排序。
可用属性
- 标签 slug - 使用此 URL 参数中提供的 slug 值查找标签;例如,如果标签 slug 是
:tag
,则页面 URL 必须包含:tag
参数,该参数的值将用作标签 slug 来检索标签; - 包含系列帖子 - 此外包含属于当前标签的系列的所有帖子;
- 帖子排序 - 帖子应该按哪个属性和方向排序;
- 页面参数 - 根据此 URL 参数计算分页;
- 每页项目数 - 每页应显示多少个项目(如果有),“0”显示所有项目;
- 帖子页面 - 显示单个博客帖子内容的博客帖子页面名称;
- 分类页面 - 显示单个博客分类内容的分类页面名称;
- 包含分类 - 以逗号分隔的分类 ids/slugs 列表(可以混合使用);只有包含这些分类的帖子将包含在列表中;
- 排除帖子 - 以逗号分隔的帖子 ids/slugs 列表(可以混合使用);这些帖子将不会包含在列表中;
- 排除分类 - 以逗号分隔的分类 ids/slugs 列表(可以混合使用);具有这些分类的帖子将不会包含在列表中。
相关帖子
组件 relatedPosts
提供与标签相关的帖子列表,例如具有一些共同标签的帖子。
可用属性
- 帖子别名 - 从URL参数获取指定别名的相关帖子;例如,如果帖子别名是
:post
,则页面URL必须包含:post
参数,其值将用作帖子别名以检索相关帖子; - 限制 - 显示的帖子数量,0检索所有相关帖子;
- 帖子排序 - 帖子应该按哪个属性和方向排序;
- 帖子页面 - 要显示单个博客帖子内容的博客帖子页面名称。
系列列表
组件 seriesList
显示系列列表。
可用属性
- 显示空系列 - 是否显示没有任何帖子分配的系列;
- 限制 - 显示的系列数量,0检索所有系列;
- 系列顺序 - 系列列表应如何排序;
- 系列页面 - 包含
postsInSeries
组件的 CMS 页面,用于显示单个系列内容和帖子; - 获取相关帖子 - 如果启用,组件将获取相关帖子,以便它们可以通过系列项的
posts
属性正确(已发布)地可用;它执行额外的请求,因此会稍微降低性能; - 包含分类 - 以逗号分隔的分类ID/别名列表(可以混合使用);只有具有这些分类的帖子将被包含在系列相关的帖子计数和帖子列表中;
- 排除帖子 - 以逗号分隔的帖子ID/别名列表(可以混合使用);这些帖子将不会包含在系列相关的帖子计数和帖子列表中;
- 排除分类 - 以逗号分隔的分类ID/别名列表(可以混合使用);具有这些分类的帖子将不会包含在系列相关的帖子计数和帖子列表中。
标签列表
组件 tagList
显示标签列表。可用于构建标签云(因为每个标签的帖子计数都是可用的)。它还可以用于检索特定帖子的标签列表。
请记住,如果您在同一个页面上多次使用相同的组件(可能用于不同的目的),请使用不同的别名。
可用属性
- 显示空标签 - 是否显示未分配给任何帖子的标签;
- 标签顺序 - 标签应如何排序;
- 限制 - 显示的标签数量,0检索所有标签;
- 暴露总数 - 组件具有
totalCount
属性,它将包含所有标签的总数或仅“限制”下的标签数。例如,您总共有10个标签,但您使用了5个 限制。这将使组件只显示5个标签。启用 暴露总数 后,您仍然可以在totalCount
中获得“10”。否则,您将获得5; - 获取标记帖子 - 如果启用,组件将获取标记帖子,以便它们可以通过标签项的
posts
属性正确(已发布)地可用;它执行额外的请求,因此会稍微降低性能; - 包含系列标签 - 如果启用,组件将额外包含应用于帖子系列的标签(如果帖子有系列且系列有标签);
- 调试输出 - 允许启用调试输出到浏览器的控制台。需要由主题实现;
- 获取系列帖子计数 - 如果启用,组件将额外获取属于带有此标签的系列的帖子数量,因此可以创建更精确的标签云;
- 包含分类 - 以逗号分隔的分类ID/别名列表(可以混合使用);只有具有这些分类的帖子将被包含在标签相关的帖子计数和帖子列表中。
- 排除帖子 - 帖子ID/别名列表(可以混合使用),用逗号分隔;这些帖子将从与标签关联的帖子计数和帖子列表中排除。
- 排除分类 - 分类ID/别名列表(可以混合使用),用逗号分隔;具有这些分类的帖子将从与标签关联的帖子计数和帖子列表中排除。
如果您不需要完整的总数,请将其保留为
false
,因为这会为您提供更优化的结果。
- 包含标签过滤器 - 是否包含标签过滤器输入。标签过滤器是一个带有JavaScript的文本输入(由mark.js提供),允许您优雅地过滤标签列表。如果您要显示许多标签,请使用它,因为它允许快速搜索特定标签。可能的值是“从不”、“总是”和“当标签总数 > 限制”。所有这些都是自我描述的,但请注意,最后一个选项应在同时启用 限制 和 显示总数 时使用,因为否则可能会得到不期望的结果。组件公开
tagFilterEnabled
属性,当包含过滤器资产且可以使用过滤器时,将设置为true
。
默认标记会将JavaScript注入到
{% scripts %}
占位符中,请确保您的主题包含它。此外,默认代码需要jQuery。如果您没有它,请确保调整代码以满足您的需求。
- 帖子别名 - 从URL参数中获取指定别名的帖子标签;例如,如果帖子别名是
:post
,则页面URL必须包含:post
参数,其值将用作帖子别名以检索标签。
除非您想要显示针对特定帖子的标签,否则不需要将其设置为真实值。
- 标签页面 - 包含
postsWithTag
组件的CMS页面,用于显示单个标签内容(其帖子)。 - 标签页面 - 可能包含
tagList
组件的CMS页面,用于显示您拥有的所有标签。
相关系列
组件 relatedSeries
提供相关系列的列表。可以通过访问其属性 related_series
来获取单个系列的相关列表。唯一的区别是,组件会填充相关系列的URL。
可用属性
- 系列别名 - 使用此URL参数中提供的别名值查找相关系列;例如,如果系列别名是
:series
,则页面URL必须包含:series
参数,其值将用作系列别名以检索相关系列。 - 系列页面 - 包含
postsInSeries
组件的CMS页面,用于显示单个系列内容和帖子。