O P*_*O P 15 php opengraph laravel blade
这是我使用Laravel 5的Open Graph标签的当前实现:
app.blade.php
<title>@yield('title')</title>
<meta property="og:title" content="@yield('og-title', 'DEFAULT PAGE TITLE')">
<meta property="og:image" content="@yield('og-image', 'default.png')">
<meta property="og:url" content="@yield('og-url', '{{ Request::url() }}')">
<meta property="og:site_name" content="SITE NAME">
Run Code Online (Sandbox Code Playgroud)
page.blade.php
@extends('app')
@section('title', $article->title . ' | SITE NAME')
@section('og-title', $article->title)
@section('og-image', secure_url('img/news/' . $article->image .'.png'))
Run Code Online (Sandbox Code Playgroud)
它大部分都有效,但我有几个问题:
有没有办法使用的方式@yield()在@yield?
我试过<meta property="og:title" content="@yield('og-title', @yield('title'))">但它没用.
如何获取页面的当前SECURE URL?
{{ Request::url() }}回来http://example.com/page,但我想要https://example.com/page
作为元数据,如果您有任何建议可以改进我目前的OG方法,请告诉我.
有一种简单的方法可以实现您想要的目标。您可以做的是将OG元标记html移动到部分视图,您可以根据需要在每个页面上传递参数。例如,在您的主布局中,只需为 og 标签创建部分:
应用程序.blade.php
<title>@yield('title')</title>
@section('ogtags')
@show
Run Code Online (Sandbox Code Playgroud)
现在创建您的部分视图,让我们称之为:
og_tags.blade.php
<meta property="og:title" content="{{ $title or 'DEFAULT PAGE TITLE' }}">
<meta property="og:image" content="{{ $image or 'default.png' }}">
<meta property="og:url" content="{{ isset($url) ? $url : str_replace('http://', 'https://', Request::url()) }}">
Run Code Online (Sandbox Code Playgroud)
现在,您可以在视图中轻松添加 og 标签,如下所示:
home.blade.php
@extends('app')
@section('ogtags')
@include('og_tags', ['title' => 'my title', 'image' => 'my-image.png'])
@stop
@section('content')
your content here
@stop
Run Code Online (Sandbox Code Playgroud)
对于安全 url 问题,Request::url()返回页面的当前 url,如果是通过 HTTPS,则以 开头https://,否则以 开头http://。所以这就是为什么我只是将其替换为 https
str_replace('http://', 'https://', Request::url())
Run Code Online (Sandbox Code Playgroud)
如果您希望始终拥有 og_tags (如果您的视图没有定义此部分并且您想显示默认的部分),您可以像这样修改您的app.blade.php :
<title>@yield('title')</title>
@section('ogtags')
@include('og_tags')
@show
Run Code Online (Sandbox Code Playgroud)
这是Blade的一个很酷的部分,您可以将所有内容分割成更小的部分,然后将它们包含在动态参数中,或者只是创建视图编辑器来处理数据。
| 归档时间: |
|
| 查看次数: |
2995 次 |
| 最近记录: |