initbiz/seostorm-plugin

10月份的SEO页面总控制

安装: 42

依赖项: 0

建议者: 0

安全: 0

星标: 26

关注者: 4

分支: 14

公开问题: 3

类型:october-plugin


README

SEO Storm - ultimate SEO tool for OctoberCMS

最初是从废弃的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 -> 常规设置并配置以满足您的需求。

常见用例

页面的标题中的全局前缀/后缀

  1. 转到设置 -> SEO Storm -> 常规设置并将启用标题和描述meta标签设置为开启
  2. 填写站点名称站点名称分隔符字段。
  3. 选择您希望将站点名称添加到开头还是结尾(前缀或后缀)。

Global prefix/suffix in the page's title

自动根据模型(如博客文章)设置页面的标题

以下说明适用于任何其他可从页面访问的字段。您唯一需要决定的是您想通过什么变量来设置标题。在本例中,我们将使用我们页面上的问题模型。

转到编辑器 -> 页面 -> 选择页面 -> 然后点击SEO Storm按钮。使用下面的截图所示的Twig语法完成字段

Automatically set the meta attribute based on model values

相同的做法适用于大多数其他参数。有关更多信息,请参阅动态meta标签部分。

生成你的sitemap.xml

转到设置 -> SEO Storm -> 常规设置并将启用sitemap.xml设置为开启

这基本上就是您需要的一切。请确保您希望包含在sitemap.xml中的所有页面都已勾选启用在sitemap.xml中选项

Enable in sitemap.xml checkbox

如果您想进行更多高级定制,请参阅高级sitemap.xml部分。

动态meta标签

在许多情况下,您希望根据页面上的变量动态设置meta属性。一个典型的例子是使用{{ post }}变量的博客文章。使用动态meta标签,我们可以根据此类变量设置属性。

当前使用Twig语法的标签

  • meta标题
  • meta描述
  • 规范URL
  • 高级robots
  • OG类型
  • OG标题
  • OG描述
  • OG图片
  • OG视频
  • Twitter卡片
  • Twitter标题
  • Twitter描述
  • Twitter图片

后备值

请注意,您基本上可以填充这些字段为Twig接受的任何内容。这包括空值的情况下的条件判断。例如,假设您有一个有两个字段的数据模型:namemeta_title。您想使用meta_title字段来设置标题,但如果没有,您希望SEO Storm使用name代替。您可以这样构建逻辑

    {{ model.seo_options.meta_title ?: model.name }}

高级sitemap.xml

您可能希望根据页面中的模型(例如,博客文章的别名)在URL中填充参数。为了实现这一点,您可以在页面的设置中设置以下参数

  1. 模型类
  2. 模型参数
  3. 模型作用域

在以下示例中,我们有模型Question,但您也可以轻松地使用Post或其他此页面显示的值。

Advanced sitemap.xml configuration

仔细看看这两个参数

  1. 将类(例如Author\Plugin\Models\ModelClass)到model_class字段,以及
  2. 与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卡指南

Open Graph and Twitter attributes

当前支持的标签是

  • og:title默认为页面的meta_titletitle
  • og:description默认为页面的meta_descriptionSettings中的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 模型)

Example stormed model registration

如果您希望自定义后端显示的字段,可以在注册方法中使用 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 定义字段将被渲染的位置。它可以是: fieldstabssecondaryTabs
  • prefix 定义要自动添加到字段定义中的关系前缀,默认为 seo_options(在更改它之前,您必须知道自己在做什么,因此请小心操作)。
  • excludeFields 将根据上述描述排除表单中的字段。

注意:默认情况下,SEO Storm 负责处理 CMS 页面静态页面,因此您无需自行定义它们。

故障排除

问题:在社交媒体上粘贴链接时卡片看起来不好

原因:Open Graph 未启用或配置不正确。请参阅 Facebook的Open Graph指南Twitter的Twitter卡片指南,以更好地了解参数。

未来计划/特性

  1. 使用模型的优先级排序 sitemap.xml URL。
  2. 在生成 sitemap.xml 时考虑模型的所有SEO属性。