将元标记添加到 laravel 页面

Posted

技术标签:

【中文标题】将元标记添加到 laravel 页面【英文标题】:Add meta tags to laravel page 【发布时间】:2016-04-13 02:48:46 【问题描述】:

我正在尝试向我的 Laravel 页面添加描述和关键字。

这种方式有效吗?还是有什么问题?

@section('title')
trans('strings.About')
@stop
@section('description', 'Share text and photos with your friends and have fun')
@section('keywords', 'sharing, sharing text, text, sharing photo, photo,')
@section('robots', 'index, follow')
@section('revisit-after', 'content="3 days')

【问题讨论】:

【参考方案1】:

您是否正在扩展另一个使用所有这些sections 的模板?它们不能单独工作,它们需要在另一个模板中填充占位符。

应该是这样的:

<!-- layouts.master -->
<html>
    <head>
        <title>App Name - @yield('title')</title>
        <meta name="description" content="@yield('description')">
        <meta name="keywords" content="@yield('keywords')">
        <!-- etc -->
    </head>
    <body>
        ...
    </body>
</html>

然后你的模板应该扩展另一个模板。

@extends('layouts.master')
@section('title')
trans('strings.About')
@stop
@section('description', 'Share text and photos with your friends and have fun')
@section('keywords', 'sharing, sharing text, text, sharing photo, photo,')
@section('robots', 'index, follow')
@section('revisit-after', 'content="3 days')

至少,我是这样阅读他们的文档的:https://laravel.com/docs/5.2/blade

【讨论】:

【参考方案2】:

您只能使用我在下面提到的所有这些重要标签创建一个部分。和@yield这部分在应用布局&lt;head&gt;部分HTML代码。

@section('meta_tags')
    @if($obj)
        <title>$obj->title - env('SITE_URL', 'Site Name')</title>
        <meta name='description' itemprop='description' content='$obj->description' />
        <?php $tags = implode(',', $obj->tags); ?>
        <meta name='keywords' content='$tags' />
        <meta property='article:published_time' content='$obj->created_at' />
        <meta property='article:section' content='event' />

        <meta property="og:description" content="$obj->description" />
        <meta property="og:title" content="$obj->title" />
        <meta property="og:url" content="url()->current()" />
        <meta property="og:type" content="article" />
        <meta property="og:locale" content="en-us" />
        <meta property="og:locale:alternate" content="en-us" />
        <meta property="og:site_name" content="env('SITE_URL', 'Site Name')" />
        @foreach($obj->images as $image)
            <meta property="og:image" content="$image->url" />
        @endforeach
        <meta property="og:image:url" content="obj->image" />
        <meta property="og:image:size" content="300" />

        <meta name="twitter:card" content="summary" />
        <meta name="twitter:title" content="$obj->title" />
        <meta name="twitter:site" content="@BrnBhaskar" />
    @endif
@endsection

【讨论】:

【参考方案3】:

我有更好的! 创建像这样的包含文件'views/widgets/meta.blade.php'

<meta name="title" content=" $meta->meta_title "/>
<meta name="keywords" content=" $meta->meta_keywords "/>
<meta name="description" content=" $meta->meta_description "/>
<meta name="robots" content="index,follow"/> 
<meta name="revisit-after" content="7 days">
<meta name="coverage" content="Worldwide">
<meta name="distribution" content="Global">
<meta name="title" content=" $meta->meta_title ">
<meta name="author" content=" setting('site.title')">
<meta name="url" content=" request()->fullUrl() ">
@isset($metaArray->og_image)
<meta name="og_image" content=" asset('storage/' . $meta->og_image)  "/>
<meta name="og_secureImage" content=" asset('storage/' . $meta->og_image)  "/>
<meta name="og_imageAlt" content=" $meta->og_imageAlt "/>
<meta name="og_imageType" content=" $meta->og_imageType "/>
@endisset
<meta name="rating" content="General">
<meta property=”og:title” content=" $meta->meta_title "/>
<meta property="og:description" content=" $meta->meta_description "/>
<meta property=”og:type” content=” $meta->og_type ”/>
<meta property="og:locale" content="en_us" />
<meta property="og:sitename" content=" setting('site.title') " />
<meta property="og:url" content=" request()->fullUrl() "/>
<meta name="twitter:card" content="summary"/>
<meta name="twitter:site" content=" setting('site.twitter_site') "/>
<meta name="twitter:creator" content=" setting('site.twitter_creator') "/>

然后,只要您想包含元数据,只需将数组传递给包含

@include('widgets.meta',$meta)

你也可以用 $metaArray 替换 setting()。我正在使用航海者。

【讨论】:

以上是关于将元标记添加到 laravel 页面的主要内容,如果未能解决你的问题,请参考以下文章

将元标记关键字显示为数据库中的 JSON 数据似乎不起作用

Laravel 不使用 Eloquent 更新项目

Laravel - 创建一个会话数组并在每次重新加载页面时添加到它

Laravel 标记 CRUD

渲染中的 Laravel + Vue 错误:“SyntaxError:JSON 中位置 0 的意外标记 u”

渲染中的 Laravel + Vue 错误:“SyntaxError:JSON 中位置 0 的意外标记 u”