puzbie/meta

Meta 标签管理器,支持 Laravel 5 的钩子

v1.0.0 2015-06-12 10:15 UTC

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

我与该网站没有任何关联,我只是发现它是一个有用的信息来源。

注意

  1. 我将在不久的将来添加更多文档。但测试应该会给你一些提示。
  2. 我已移除对各种twitter cards(产品、图库、图像等)的支持,因为它们自 7 月起已被弃用。如果您想,您仍然可以手动添加它们,使用 settag。

许可证

MIT

附录

当前支持标签

        $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'
        ];