initbiz / seostorm-plugin
10月份的SEO页面总控制
Requires
- php: >=7.0
- composer/installers: ~1.0
- october/system: >=2.1.12
- dev-master
- 4.9.0
- 4.8.4
- 4.8.3
- 4.8.2
- 4.8.1
- 4.8.0
- 4.7.0
- 4.6.1
- 4.6.0
- 4.5.2
- 4.5.1
- 4.5.0
- 4.4.3
- 4.4.2
- 4.4.1
- 4.4.0
- 4.3.0
- 4.2.2
- 4.2.1
- 4.2.0
- 4.1.1
- 4.1.0
- 4.0.8
- 4.0.7
- 4.0.6
- 4.0.5
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- 3.0.1
- 3.0.0
- 2.0.1
- 2.0.0
- dev-feature/sitemap-translate
- dev-feature/sitemap-translate-tomek
- dev-add-test-for-delete-media-item
- dev-feature/favicon
- dev-develop
- dev-feature/robots-favicon
- dev-feature/ignore-global-title-position
- dev-bugfix/fix-translate-attributes-on-static-page
- dev-feature/sitemap-translate-queue-fix
- dev-cleanup@1469
- dev-favicon
- dev-october-v1
- dev-dev-561-behavior
This package is auto-updated.
Last update: 2024-09-19 15:14:46 UTC
README
最初是从废弃的Arcane.SEO
插件分支而来,我们对其进行了许多改进并添加了许多新功能。
关键特性
- 自动在页面上生成标题和其他meta标签
- 从后端管理自定义meta标签
- 以简单的方式管理robots meta标签
- 从October的Mediafinder设置favicon
- 管理Open Graph参数
- 在不离开后端的情况下编辑
.htaccess
- 一键部分迁移自
Arcane.SEO
- 自动生成带有URL参数的
sitemap.xml
文件 - 支持
RainLab.Pages
, - 提供一种简单的方法来扩展后端中用于SEO参数的自定义模型
- 使用Twig参数填充meta标签
- 还有许多其他您会喜欢的特性 :)
使用SEO Storm
安装插件后,在网站的head
部分添加SEO
组件,无论是页面还是布局。
转到设置
-> SEO Storm
-> 常规设置
并配置以满足您的需求。
常见用例
页面的标题中的全局前缀/后缀
- 转到
设置
->SEO Storm
->常规设置
并将启用标题和描述meta标签
设置为开启
。 - 填写
站点名称
和站点名称分隔符
字段。 - 选择您希望将
站点名称
添加到开头还是结尾(前缀或后缀)。
自动根据模型(如博客文章)设置页面的标题
以下说明适用于任何其他可从页面访问的字段。您唯一需要决定的是您想通过什么变量来设置标题。在本例中,我们将使用我们页面上的问题
模型。
转到编辑器
-> 页面
-> 选择页面 -> 然后点击SEO Storm
按钮。使用下面的截图所示的Twig语法完成字段
相同的做法适用于大多数其他参数。有关更多信息,请参阅动态meta标签
部分。
生成你的sitemap.xml
转到设置
-> SEO Storm
-> 常规设置
并将启用sitemap.xml
设置为开启
。
这基本上就是您需要的一切。请确保您希望包含在sitemap.xml
中的所有页面都已勾选启用在sitemap.xml中
选项
如果您想进行更多高级定制,请参阅高级sitemap.xml
部分。
动态meta标签
在许多情况下,您希望根据页面上的变量动态设置meta属性。一个典型的例子是使用{{ post }}
变量的博客文章。使用动态meta标签
,我们可以根据此类变量设置属性。
当前使用Twig语法的标签
meta标题
meta描述
规范URL
高级robots
OG类型
OG标题
OG描述
OG图片
OG视频
Twitter卡片
Twitter标题
Twitter描述
Twitter图片
后备值
请注意,您基本上可以填充这些字段为Twig接受的任何内容。这包括空值的情况下的条件判断。例如,假设您有一个有两个字段的数据模型:name
和meta_title
。您想使用meta_title
字段来设置标题,但如果没有,您希望SEO Storm使用name
代替。您可以这样构建逻辑
{{ model.seo_options.meta_title ?: model.name }}
高级sitemap.xml
您可能希望根据页面中的模型(例如,博客文章的别名)在URL中填充参数。为了实现这一点,您可以在页面的设置中设置以下参数
- 模型类
- 模型参数
- 模型作用域
在以下示例中,我们有模型Question
,但您也可以轻松地使用Post
或其他此页面显示的值。
仔细看看这两个参数
- 将类(例如
Author\Plugin\Models\ModelClass
)到model_class
字段,以及 - 与URL中的参数相匹配的模型参数(例如
slug:slug
)。
第一个参数将告诉SEO Storm,对于此页面应使用哪个模型来生成站点地图中的URL。第二个参数是URL参数和模型属性之间的配对(哪个匹配哪个)。
模型参数
如上所述,定义的第一个参数是URL参数,而第二个参数是对应的模型属性。
例如:
post:slug
表示我们有一个post
参数在URL中,并且模型有一个slug
属性。
如果您想添加更多属性,请使用竖线字符(|
)分隔它们。例如:date:date|slug:slug
。
您可能想创建一个类似/blog/:category/:postslug
的URL。为了实现这一点,我们使用点符号来从相关对象中获取属性,如下例所示
postslug:slug|category:categories.slug
此方法适用于所有关系类型,但如果是一个“一对一”关系,请记住,将只使用第一个。
模型作用域
有时您可能想要过滤sitemap.xml
中列出的记录。为此,在模型中定义一个作用域,并在第三个参数中提供其名称。然后SEO Storm将使用它来过滤记录。更多关于作用域的信息在这里。另外,您可以在冒号字符之后传递作用域的参数,例如isPublished:yesterday
。
对于由RainLab.Blog
生成的帖子,您可以使用isPublished
只获取已发布的帖子。否则,所有帖子都将列在sitemap.xml
中。
Open Graph & Twitter卡片
您也可以使用SEO Storm设置Open Graph和Twitter卡属性。请注意,两者都使用OG
字段填充。(SEO Storm不支持为每个使用不同的内容)。
如果您想了解更多关于OG和Twitter卡的信息,请查看Facebook的Open Graph指南和Twitter卡指南。
当前支持的标签是
og:title
默认为页面的meta_title
或title
,og:description
默认为页面的meta_description
或Settings
中的site_description
,og:image
默认为Settings
中的site_image
,og:type
默认为website
,twitter:title
来自og:title
,twitter:description
来自og:description
,twitter:image
来自og:image
。
注意:请阅读上面链接的Facebook和Twitter的指南,了解这些标签的推荐值。查看动态元标签
部分,以了解哪些支持Twig语法。
带有SEO参数的自定义模型
SEO Storm 允许您轻松定义要动态添加SEO参数的模型。
您无需进行任何其他自定义操作 - SEO Storm 会处理扩展模型和在数据库中存储属性。我们称这样的模型为
Stormed
。要将模型注册为Stormed
,请在您的插件注册文件(Plugin.php
)中实现registerStormedModels
方法。
在您的 Plugin.php
文件中添加 registerStormedModels()
方法,例如
public function registerStormedModels() { return [ '\Author\Plugin\Models\ExampleModel' => [ 'placement' => 'tabs', ], ]; }
使用此定义,SEO Storm 将负责扩展模型和后端控制器中的表单小部件。以下示例将向 ExampleModel
添加SEO字段,如下所示(示例使用我们的 Question
模型)
如果您希望自定义后端显示的字段,可以在注册方法中使用 excludeFields
属性。您还可以使用否定语法,这样除了列出的字段之外,所有字段都将被删除。请参见以下示例
public function registerStormedModels() { return [ '\Author\Plugin\Models\ExampleModel' => [ 'placement' => 'tabs', 'excludeFields' => [ 'model_class', 'model_scope', 'model_params', ], ], '\Author\Plugin\Models\ExampleModel2' => [ 'placement' => 'secondaryTabs', 'excludeFields' => [ '*', 'meta_title', 'meta_description', 'og_image', 'og_ref_image', 'og_title', 'og_description', ], ], ]; }
以下参数在 registerStormedModels
方法中受支持
placement
定义字段将被渲染的位置。它可以是:fields
、tabs
和secondaryTabs
。prefix
定义要自动添加到字段定义中的关系前缀,默认为seo_options
(在更改它之前,您必须知道自己在做什么,因此请小心操作)。excludeFields
将根据上述描述排除表单中的字段。
注意:默认情况下,SEO Storm 负责处理 CMS 页面
和 静态页面
,因此您无需自行定义它们。
故障排除
问题:在社交媒体上粘贴链接时卡片看起来不好
原因:Open Graph 未启用或配置不正确。请参阅 Facebook的Open Graph指南 和 Twitter的Twitter卡片指南,以更好地了解参数。
未来计划/特性
- 使用模型的优先级排序
sitemap.xml
URL。 - 在生成
sitemap.xml
时考虑模型的所有SEO属性。