fokke / markup-metadata
在ProcessWire网站上渲染元标签。
Requires
- php: >=7.1
- wireframe-framework/processwire-composer-installer: ^1.0.0
README
ProcessWire的HTML文档头部分渲染元标签的模块。请注意,此模块不是一个完整的SEO解决方案,而是一个基于模块配置渲染元标签的简单工具。也支持添加自定义元标签。
内置元标签
以下元标签默认支持
- 由页面标题和站点名称组成的文档标题
- 字符集
- 规范
- 视口
- 描述
- 关键词
- hreflang标签
- 开放图
- og:title
- og:site_name
- og:type
- og:url
- og:description
- og:image
- og:image:width
- og:image:height
- og:image:alt
- Twitter元标签
- twitter:card
- twitter:site
- twitter:creator
- twitter:title
- twitter:description
- twitter:image
- twitter:image:alt
- Facebook元标签
- fb:app_id
安装
使用Composer安装
composer require fokke/markup-metadata
手动安装
将模块文件提取到 site/modules/MarkupMetadata
目录。
用法
// Initialize module instance $metadata = $modules->get('MarkupMetadata'); // Optionally set your custom meta tags, or overwrite module configuration before rendering... // Render metadata echo $metadata->render();
公共方法
setMeta($tag, $attrs, $content)
设置自定义元标签。
string $tag
要使用的HTML标签名array|null $attrs
可选的HTML标签属性数组,格式如下:'name' => 'value'
string|null $content
可选的元素内部内容。最可能的情况是这仅用于<title>
标签。
$metadata->setMeta('meta', [ 'name' => 'author', 'content' => 'Jerry Cotton', ]); // <meta name="author" content="Jerry Cotton">
render()
渲染所有元标签
$metadata->render();
配置
安装模块后,检查模块配置页面以获取可用选项。如果您愿意,所有这些选项都可以在代码中设置或覆盖,如下所示
// Add this line before rendering $metadata->site_name = 'My custom site name'; // Set multiple properties $metadata->setArray([ 'page_title' => 'My custom title', 'site_name' => 'My custom site name', 'description' => 'My custom description', ]);
page_url
类型: string
此URL将在canonical
和og:url
元标签中使用。如果未设置,页面URL将动态构建为base_url、当前页面URL和URL段(如果已定义)。
base_url
类型: string
,默认值: 'https://domain.com'
用作构建当前页面URL的基础。
charset
类型: string
,默认值: 'utf-8'
用于charset
元标签。
viewport
类型: string
,默认值: 'width=device-width, initial-scale=1.0'
用于viewport
元标签。
keywords
类型: string
用于keywords
元标签。如果未设置,将使用当前页面的关键词。请参阅keywords_selector。
keywords_selector
类型: string
,默认值: 'keywords'
此选择器将用于通过$page->get()
方法获取当前页面关键词。
document_title
类型: string
默认情况下,文档标题将由page_title、document_title_separator和site_name组成。如果您想完全自定义文档标题,则可以覆盖此属性。
page_title
类型: string
值将用于title
、og:title
和twitter:title
元标签。如果未设置,将使用当前页面的标题。请参阅page_title_selector。
页面标题选择器
类型: string
此选择器将用于使用$page->get()
方法获取当前页面标题。
文档标题分隔符
类型:string
,默认:'-'
该值将用于在文档标题中分隔页面标题和站点名称。
站点名称
类型:string
,默认:'站点名称'
该值将在页面标题之后添加到文档标题中。它也将用于og:site_name
元标签。
描述
类型: string
用于description
、og:description
和twitter:description
元标签。如果未设置,将使用当前页面的描述。请参阅描述选择器。
描述选择器
类型:string
,默认:'summary'
此选择器将用于使用$page->get()
方法获取当前页面描述。
描述最大长度
类型:integer
,默认:'160'
描述将被截断到指定的字符数。
描述截断模式
类型:string
,默认:'word'
选择与$sanitizer->truncate()
方法一起使用的截断模式。
图片
类型:\ProcessWire\Pageimage
用于og:image
和twitter:image
元标签。默认情况下,模块将尝试使用图片选择器从当前页面获取图片。此图片将被调整到由图片宽度和图片高度属性定义的尺寸。
图片选择器
类型:string
,默认:'image'
此选择器将用于使用$page->get()
方法获取当前页面图片。
图片宽度
类型:integer
,默认:1200
图片将被调整到指定的宽度。
图片高度
类型:integer
,默认:630
图片将被调整到指定的宽度。
图片替代字段
类型:string
,默认:alt
此字段的值将被用作图片的替代文本。为您的图片字段启用自定义字段并指定字段名称。
图片继承
类型:boolean
,默认:false
如果无法从当前页面找到图片,模块将尝试从最近的父页面(包括主页)中找到图片。
图片备用页面
类型:\ProcessWire\Page
,默认:null
如果无法从当前页面(可能启用了继承)找到图片,模块将尝试从给定的页面中找到图片。请使用此功能为所有页面定义默认图片。将使用上面定义的选择器来查找图片。
渲染hreflang
类型:boolean
,默认:false
切换hreflang标签的渲染开/关。要启用,请设置值为true
。为了渲染hreflang标签,必须满足以下要求
- 您的网站至少设置了两种语言
- 已安装LanguageSupportPageNames模块
- 在属性hreflang_code_field中定义的字段存在,并且您的语言模板包括该字段。
- 语言代码字段在每个语言页面中都已填充。如果语言代码字段为空,则不会为该语言渲染hreflang标签。
hreflang_code_field
类型:string
,默认:'languageCode'
此字段名称将用于定义每个语言页面的语言代码。
渲染og
类型:boolean
,默认:true
切换Open Graph标签的渲染开关。要禁用,设置值为false
。
og_type
类型:string
,默认:'website'
页面/资源的Open Graph类型。用于og:type
元标签。
render_twitter
类型:boolean
,默认:false
切换Twitter标签的渲染开关。要启用,设置值为true
。
twitter_card
类型:string
,默认:'summary_large_image'
Twitter卡片类型,可以是summary
、summary_large_image
、app
或player
之一。用于twitter:card
元标签。
twitter_site
类型:string
,默认:null
Twitter用户名。用于twitter:site
元标签。
twitter_creator
类型:string
,默认:null
Twitter用户名。用于twitter:creator
元标签。
render_facebook
类型:boolean
,默认:false
切换Facebook标签的渲染开关。要启用,设置值为true
。
facebook_app_id
类型:string
,默认:null
Facebook应用程序ID。用于fb:app_id
元标签。