将元标记添加到 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
这部分在应用布局<head>
部分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 页面的主要内容,如果未能解决你的问题,请参考以下文章
Laravel - 创建一个会话数组并在每次重新加载页面时添加到它