puzbie / meta
Meta 标签管理器,支持 Laravel 5 的钩子
v1.0.0
2015-06-12 10:15 UTC
Requires
- php: >=5.4.0
- illuminate/support: >=5.0
Requires (Dev)
- phpunit/phpunit: ~4.6
This package is not auto-updated.
Last update: 2024-09-28 17:54:37 UTC
README
安装
步骤 1: Composer
将包添加到您的 composer.json
{
"require": {
"puzbie/meta": "^1.0"
}
}
步骤 2: 配置
将以下内容添加到您的 config/app.php
文件中的 providers
数组中
'Puzbie\Meta\MetaServiceProvider',
您还可以选择性地将以下内容添加到 aliases
数组中
'Meta' => 'Puzbie\Meta\MetaFacade',
用法
基本建议用法
使用中间件为所有页面分配默认元标签
<?php namespace App\Http\Middleware; use Closure; use Meta; class MetaDefaults { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { Meta::setTag('charset', 'utf-8'); Meta::setTag('X-UA-Compatible', 'IE=edge'); Meta::setTag('viewport', 'width=device-width, initial-scale=1'); Meta::setTag('author', 'My Name'); Meta::setTag('csrf-token', csrf_token()); Meta::setTitle('My Site - The First Chapter'); Meta::setTag('description', 'If you are at a loss, we have the goss.'); return $next($request); } }
请注意,您还可以设置 TITLE 标签。这是因为您可能希望在某些社交标签中重复它。
请注意,标签已简化。该包将扩展它们以生成正确的标签。有关支持的标签完整列表,请参阅附录。但这里有一个示例
Meta::setTag('charset', 'utf-8');
Meta::setTag('X-UA-Compatible', 'IE=edge');
Meta::setTag('author', 'My Name');
这将扩展为
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content = "IE=edge"/>
<meta name="author" content = "My Name"/>
如果您的选择标签不受支持,则可以通过向 setTag 提供第三个参数来自定义它
Meta::setTag('mood', 'happy','status');
这将扩展为
<meta status="mood" content = "happy"/>
现在,在您的视图模板中,在头部部分添加以下内容
<!DOCTYPE html> <html lang="en"> <head> {!! Meta::dump() !!} ...
到目前为止,一切顺利。假设您想根据您所在的页面更改描述,或添加产品信息标签等?
只需在中间件之后和 dump 之前添加即可。您可以选择添加单个标签,或使用一些辅助方法生成社交标签。
如所包括
Meta::clear(); Meta::makeMozStandard(['title'=>'Your Site', 'url'=>'http://www.acesite.co.uk', 'description'=>'My Ace Site - its the best.', 'image'=>'http://www.acesite.co.uk/images/site.jpg', 'siteName'=>'My Ace Site', 'twitterId'=>'@MyTwitterId', 'creatorId'=>'@MyBlurbWritersTwitterId', 'fbAdmin'=>'12345678901234']);
上面的示例移除了默认的元设置,并生成了在此网站标准部分定义的社交标签:https://moz.com/blog/meta-data-templates-123
我与该网站没有任何关联,我只是发现它是一个有用的信息来源。
注意
- 我将在不久的将来添加更多文档。但测试应该会给你一些提示。
- 我已移除对各种twitter cards(产品、图库、图像等)的支持,因为它们自 7 月起已被弃用。如果您想,您仍然可以手动添加它们,使用 settag。
许可证
附录
当前支持标签
$this->tagTypes = ['keywords' => 'name',
'description' => 'name',
'subject' => 'name',
'copyright' => 'name',
'language' => 'name',
'robots' => 'name',
'revised' => 'name',
'abstract' => 'name',
'topic' => 'name',
'summary' => 'name',
'Classification' => 'name',
'author' => 'name',
'designer' => 'name',
'reply-to' => 'name',
'owner' => 'name',
'url' => 'name',
'identifier-URL' => 'name',
'directory' => 'name',
'pagename' => 'name',
'category' => 'name',
'coverage' => 'name',
'distribution' => 'name',
'rating' => 'name',
'revisit-after' => 'name',
'subtitle' => 'name',
'target' => 'name',
'HandheldFriendly' => 'name',
'MobileOptimized' => 'name',
'date' => 'name',
'search_date' => 'name',
'DC.title' => 'name',
'ResourceLoaderDynamicStyles' => 'name',
'medium' => 'name',
'syndication-source' => 'name',
'original-source' => 'name',
'verify-v1' => 'name',
'y_key' => 'name',
'pageKey' => 'name',
'apple-mobile-web-app-title' => 'name',
'apple-mobile-web-app-capable' => 'name',
'apple-touch-fullscreen' => 'name',
'apple-mobile-web-app-status-bar-style' => 'name',
'format-detection' => 'name',
'viewport' => 'name',
'msapplication-starturl' => 'name',
'msapplication-window' => 'name',
'msapplication-navbutton-color' => 'name',
'application-name' => 'name',
'msapplication-tooltip' => 'name',
'msapplication-task' => 'name',
'msvalidate.01' => 'name',
'msapplication-TileColor' => 'name',
'msapplication-square150x150logo' => 'name',
'msapplication-wide310x150logo' => 'name',
'msapplication-square310x310logo' => 'name',
'msapplication-notification' => 'name',
'csrf-param' => 'name',
'csrf-token' => 'name',
'charset' => '',
'+name' => 'itemprop',
'+description' => 'itemprop',
'+image' => 'itemprop',
'Expires' => 'http-equiv',
'Pragma' => 'http-equiv',
'Cache-Control' => 'http-equiv',
'imagetoolbar' => 'http-equiv',
'x-dns-prefetch-control' => 'http-equiv',
'X-UA-Compatible' => 'http-equiv',
'twitter:card' => 'name',
'twitter:site' => 'name',
'twitter:site:id' => 'name',
'twitter:creator' => 'name',
'twitter:creator:id' => 'name',
'twitter:description' => 'name',
'twitter:title' => 'name',
'twitter:image' => 'name',
'twitter:image:width' => 'name',
'twitter:image:height' => 'name',
'twitter:image0' => 'name',
'twitter:image1' => 'name',
'twitter:image2' => 'name',
'twitter:image3' => 'name',
'twitter:player' => 'name',
'twitter:player:width' => 'name',
'twitter:player:height' => 'name',
'twitter:player:stream' => 'name',
'twitter:player:stream:content_type' => 'name',
'twitter:data1' => 'name',
'twitter:label1' => 'name',
'twitter:data2' => 'name',
'twitter:label2' => 'name',
'twitter:app:name:iphone' => 'name',
'twitter:app:id:iphone' => 'name',
'twitter:app:url:iphone' => 'name',
'twitter:app:name:ipad' => 'name',
'twitter:app:id:ipad' => 'name',
'twitter:app:url:ipad' => 'name',
'twitter:app:name:googleplay' => 'name',
'twitter:app:id:googleplay' => 'name',
'twitter:app:url:googleplay' => 'name',
'twitter:app:country' => 'name',
'og:url' => 'property',
'og:title' => 'property',
'og:description' => 'property',
'og:site_name' => 'property',
'og:app_id' => 'property',
'og:type' => 'property',
'og:locale' => 'property',
'og:video' => 'property',
'og:video:url' => 'property',
'og:video:secure_url' => 'property',
'og:video:type' => 'property',
'og:video:width' => 'property',
'og:video:height' => 'property',
'og:image' => 'property',
'og:image:url' => 'property',
'og:image:secure_url' => 'property',
'og:image:type' => 'property',
'og:image:width' => 'property',
'og:image:height' => 'property',
'fb:admins' => 'property'
];