nomidi silverstripe-seo-hero-tool
SEO英雄工具分析有助于优化网站以适应搜索引擎
Requires
- php: >=7.1.0
- dynamic/silverstripe-country-dropdown-field: ^1.2
This package is auto-updated.
Last update: 2024-08-26 01:32:57 UTC
README
SeoHeroTool 提供控制网站元信息选项。SeoHeroTool 一方面允许按页面更改设置(如元标题、OpenGraph 或 Twitter 信息),另一方面可以输入通用信息(如 Google Analytics、链接到 Facebook、Twitter 或例如输入重定向)。当页面设置在每个页面上输入时,通用设置可以通过 SeoHeroTool 图标访问。
由于许多同类型的页面(例如所有模拟页面)具有相同的元标题结构,因此可以通过 config.yml
文件定义这些页面的结构。
需求
- SilverStripe CMS ~3.2
安装
composer require nomidi/silverstripe-seo-hero-tool
或者,简单地从 github 下载 zip 文件。安装后,在您的项目上运行 dev/build?flush=1
。
SEO 英雄工具
安装 SEO 英雄工具后,每个页面都会出现一个名为 SEO 英雄工具 的标签。
SEO 英雄工具标签提供以下信息
- 片段预览
- SEO 标题
- 关键词
- 元数据
片段预览
片段预览是网页在搜索结果中显示的预览。如果您更新任何网站信息,则需要保存网站以获取更新的预览。
SEO 标题
SEO 标题是出现在每个网站 <title> 标签中的 部分的内容。默认情况下,这是网站的 标题。
可以通过 config.yml 文件定义 SEO 标题。这部分在 创建配置中的默认设置 中解释。但也可以手动设置 SEO 标题。出现的顺序如下
- 默认标题
- 配置中的标题
- 通过 SEO 英雄工具输入的标题
实际使用的 SEO 标题作为占位符输入。如果此页面类型有标题配置,则配置中的标题将显示在 SEO 标题下方。
关键词
关键词部分仅用于 SEO 英雄工具的专业版。输入的关键词用于页面分析。当前的 W 问题仅在 SEO 英雄工具的专业版中以德语提供。
元数据
元数据包含有关元信息的信息
- 索引
- 规范 URL
- 元描述
- Google Schema Org 数据
默认情况下,元描述是内容的第一个 140 个字符。从那里开始,直到最后一个空格将全部删除,以避免显示不完整的单词。可以覆盖元描述。
也可以通过 config.yml 文件配置元描述。这与标题或规范 URL 的配置方式相同。
规范 URL 也可以通过 config.yml 文件配置。
如果为此页面类型定义了任何 Schema 数据,则将在 Google Schema Org 数据下显示。如果无法解析字段(例如缺少字段),则预览将显示任何错误。
在Facebook下,您可以找到有关在该网站上分享此站点的所有信息。这些信息将在网站上以OpenGraph格式进行解析。
默认情况下,Facebook标题与SEO标题相同。元描述默认为元描述。网站类型默认为
website
。这可以通过SeoHeroToolDataObject
进行配置。如果通过配置设置网站类型,则可以覆盖特定页面的类型。为了这样做,请选择不同的类型并勾选复选框覆盖配置设置。
可以通过配置定义Facebook图片。要这样做,只需将以下内容添加到您的SeoHeroToolDataObject
FBImage: $functionname()
将functionname替换为实际函数名。请注意,此函数需要返回绝对路径。一个名为Photo的单个has_one图像的示例如下
public function returnMyImage() { return $this->Photo()->AbsoluteURL; }
在Twitter下,您可以找到有关在该网站上分享此站点的所有信息。这些信息将以Twitter自己的格式进行解析。
Twitter标题默认与SEO标题相同。元描述默认为元描述。
可以通过配置定义Twitter图片。要这样做,只需将以下内容添加到您的SeoHeroToolDataObject
TWImage: $functionname()
将functionname替换为实际函数名。请注意,此函数需要返回绝对路径。一个名为Photo的单个has_one图像的示例如下
public function returnMyImage() { return $this->Photo()->AbsoluteURL; }
在配置中创建默认设置
定义页面类型的标题
此定义发生在`mysite/_config/config.yml`。
SeoHeroToolDataObject: Page: Title: - $Title # reads the field Title - $LastEdited # reads the date from the field LastEdited WithoutSpace: false # defines that all entries above are separated by a space TestPage: Title: - $Title # reads the field Title - " at " # just the string " at " - $LastEdited # the date from the field LastEdited - $MyTest() # the value of the method MyTest within the class TestPage - $TestObject.Title # The title of the Has_One Connection with TestObject DateFormat: SpecialFormat # Each Datefield shall be formated in a special format DateFormatting: d/m # each datefield will be output just by date and month (you can use here the normal php date values) WithoutSpace: true # no space between entries SiteConfigTitle: true # the title from the SiteConfig will be attached ( default false) FBType: article # The og:type for this site will be article (default website) FBImage: $myFBImage() # needs to return an absolute path , value of the method myFBImage() within the class TestPage TWImage: $myTWImage() # needs to return an absolute path , value of the method myTWImage() within the class TestPage
此配置将产生以下结果:所有类型为页面的页面将有一个元标题,该标题由页面的标题
后跟一个空格,然后是页面的最后编辑
日期组成。如果此页面的标题为首页
,最后编辑日期为2017-04-30 10:13:12
,则结果为元标题首页 30/04/2017
。默认情况下,所有日期字段都将使用Silverstripe的date()
函数输出。
所有类型为TestPage的页面将有一个更复杂的元标题。这些页面在各个条目之间没有空格。 $Title
的工作方式如上例所示。" at "
只在$Title
的值之后添加这些字符。 $MyTest
在TestPage类中运行MyTest方法。请注意,此方法需要返回值。$TestObject.Title
从与TestObject
的has_one连接返回标题
。DateFormat
可以有以下值:Nice、Year、Nice24和SpecialFormat。除SpecialFormat外,其他值使用默认的Silverstripe函数来格式化日期。如果DateFormat为SpecialFormat,则使用DateFormatting字段。在这里,允许使用用于Silverstripe日期格式方法配置的配置。d/m将导致天和月。 WithoutSpace: true
定义了在各个条目之间不会输入空格。SiteConfigTitle: true
定义了将在末尾添加SiteConfig的标题。FBType: article
定义了所有类型为TestPage的站点都将具有og:type的值为article
。这里的默认值是website
。FBImage: $myFBImage
定义了所有类型为TestPage的站点都将具有og:image,其URL为方法$myFBImage
的返回值。TWImage: $myTWImage
定义了所有类型为TestPage的站点都将具有twitter:image,其URL为方法$myTWImage
的返回值。
重要事项
- 无法直接定义has-many或many-many连接。为此,请在您的类中创建一个返回所需值的方法,然后使用
$myMethodName()
通过该方法。 - 当通过
config.yml
配置页面类型时,它可以在后端被覆盖。后端中的信息始终会覆盖配置设置。 - 当你修改了
config.yml
后,记得执行dev/build?flush=1
来应用新的设置。
定义页面类型的模式数据
使用 SeoHeroTool,可以为页面类型定义一个始终属于网站的 json 模式。这个定义发生在 `mysite/_config/config.yml'。
SeoHeroToolSchemaDataObject: LocationPage: @type: "Test" address: @type: "PostalAddress" addressLocality: $DummyObject.Title postalCode: "12345" streetAddress: $getStreet() name: $Title telephone: "XXX XXX" email: "mail@example.com"
上述配置将产生以下输出。
<script type="application/ld+json"> { "@type": "Test", "address": { "@type": "PostalAddress", "addressLocality": "London", "postalCode": "12345", "streetAddress": "John Doe Avenue 1" }, "name": "Dummy Page Title", "telephone": "01234 23234234", "email": "mail@exampl.com" } </script>
SeoHeroToolSchemaDataObject 的配置与 SeoHeroToolDataObject 的配置非常相似。你可以通过直接输入来使用普通字符串。要使用类的变量,只需以一个起始 $ 符号开始输入。一个 Has-One 连接可以通过一个起始 $ 符号后跟 Has-One 连接的名称来表示。然后添加点分隔的变量。可以访问类的公共方法,方法名为起始 $ 和结束 ()。要从 LocationPage 类访问公共方法 getStreet(),只需输入 $getStreet()
。
重要事项
- 无法直接定义 has-many、many-many 以及类似的关联。为此,请编写一个返回正确值的方法。
- 可以在后端查看此网站的 json 配置输出。只需在具有配置开关的页面上切换到 SeoHeroTool 选项卡,并打开元数据。
- 如果配置中存在 任何 错误,你也会在后端看到这些错误。
- 在修改
config.yml
后,请务必运行dev/build?flush=1
。
常规设置
在常规设置下可以配置以下选项
- Google Analytics
- Schema.org 公司
- 机器人以及 .htaccess 编辑器
Google Analytics
Google Analytics 允许轻松将 Google Analytics 集成到网站中。
在站点模式下激活 定义 Google Analytics 应该在哪种环境模式下激活。可能的值有 dev、live、test、All。 All 包含所有环境模式。在字段上方,你可以看到当前环境模式是否与所选选项匹配。请注意,此设置仅在点击保存后更新。
Schema Org 公司
Schema Org 公司允许在后端直接输入有关公司的一些信息。这些信息主要用于搜索引擎,并将被它们使用。在 营业时间 选项卡中也可以定义营业时间。这对于拥有餐厅或商店等店铺的企业特别有用。在最后一个选项卡 社交链接 中,可以输入有关使用的社交网络的信息(见社交媒体渠道)。这些信息将被用于 Schema Org JSON 对象,也将用于例如社交循环。
社交媒体渠道
每个社交链接包含以下信息
- 名称
- 链接
- 用户名
- 图标名称
- 在社交循环中显示
- 排序
名称可以从选择中选取,或者如果网络不在列表中,可以手动输入。链接应该是完整的 http-链接。用户名对于 Twitter 是必要的,因为这将也会显示在 Twitter 元数据中。图标名称在社交循环中添加为类名时很有用。在社交循环中可用 定义此网络是否将在 $SocialLoop
函数中显示。社交循环中的排序 定义在社交循环中的位置。有关更多信息,请参阅 社交媒体循环。
社交媒体循环
如果您想要循环显示所有已输入并具有循环显示选项的社交媒体频道,可以通过循环$SocialLoop
来实现。默认情况下,它将按照排序值的升序返回社交媒体频道。但可以通过Silverstripe方法轻松更改。要按名称升序循环显示社交媒体频道,只需执行以下循环
<% loop $SocialLoop(Name,ASC) %>
$Title<br/>
<% end_loop %>
这将按名称升序显示所有具有在社交循环功能中可用选项的社交媒体频道标题。
机器人以及 .htaccess 编辑器
目前,机器人(Robots)和.htaccess编辑器仅允许插入301重定向链接。新301重定向链接将进行合理性测试,但请注意,使用此工具可能会破坏网站。因此,只有有经验的用户才应使用此工具。
待办事项
- 为SeoHeroTool设置添加自定义图标
- 美化通用设置结构,使其需要更少的点击
- 为机器人(Robots)和.htaccess编辑器添加更多功能
- 添加配置设置以启用/禁用机器人(Robots)和.htaccess编辑器
- 更新README.md以反映CanonicalURL和BetterMetaDescription的更改
要添加自己的功能请求,请使用此项目的Github Issues