gpt4 book ai didi

php - Blade 模板,@yield 中的@yield()

转载 作者:IT王子 更新时间:2023-10-28 23:56:18 25 4
gpt4 key购买 nike

这是我目前使用 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">

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'))

大部分情况下它都有效,但我有几个问题:

  1. 有没有办法使用@yield()@yield

    我试过了 <meta property="og:title" content="@yield('og-title', @yield('title'))">但它没有用。

  2. 如何获取页面的当前 SECURE url?

    {{ Request::url() }}返回 http://example.com/page , 但我想要 https://example.com/page

作为元,如果您有任何改进我当前 OG 方法的建议,请告诉我。

最佳答案

有一种简单的方法可以实现您想要的。您可以做的是将 OG 元标记 html 移动到部分 View ,您可以根据需要在每个页面上向其传递参数。例如,在您的主布局中,只需为 og 标签创建部分:

app.blade.php

<title>@yield('title')</title>
@section('ogtags')

@show

现在创建您的分部 View ,我们称它为:

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()) }}">

所以现在在您的 View 中,您可以像这样轻松添加 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

对于安全 url 问题,Request::url() 返回页面的当前 url,如果是通过 HTTPS 它将以 https:// 开头否则它将以 http:// 开头。所以这就是为什么我只是将其替换为始终为 https

str_replace('http://', 'https://', Request::url())

如果您希望始终拥有 og_tags(以防您的 View 未定义此部分并且您希望显示默认部分),您可以像这样修改您的 app.blade.php:

<title>@yield('title')</title>
@section('ogtags')
@include('og_tags')
@show

这是 Blade 的精彩部分您可以将所有内容拆分成更小的部分,然后将它们包含在动态参数中,或者只创建 View 组合器来处理数据。

关于php - Blade 模板,@yield 中的@yield(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30420679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com