2017-11-09 7 views
0

So betreibe ich ein Laravel 5.4 Projekt und wir haben ein System, bei dem jede Seite getrennt META-Tags korrekt erfordern würde, um zu zeigen, wenn die Leute Urls tweet usw. Also meine Frage:Inject Meta-Tags pro Seite

Wie kann ich gehen über den folgenden Code in meine Kopf-Tags injizieren?

z.B. Ein neuer Artikel könnte wie folgt aussehen:

<meta name="twitter:card" content="summary"> 
<meta name="twitter:site" content="@mysite"> 
<meta name="twitter:title" content="News Article - Donald Trumps Twitter Deleted!"> 
<meta name="twitter:image" content="imageurl"> 
<meta name="twitter:description" content="Donald Trump lost access to his twitter for..."> 
<meta name="twitter:domain" content="https://www.example.com"> 
<meta name="description" content="Donald Trump lost access to his twitter for..."/> 
<meta name="keywords" content="News, Donald, Trump, Media, Reporting, Urgent, Breaking, Twitter"/> 

.

Während etwas zu sagen, ein Forum Post würde wie folgt aussehen:

<meta name="twitter:card" content="summary"> 
<meta name="twitter:site" content="@mysite"> 
<meta name="twitter:title" content="Forum - Welcome to the forum!"> 
<meta name="twitter:image" content="imageurl"> 
<meta name="twitter:description" content="Hey there and welcome to our forum! For the chance to win $250 please..."> 
<meta name="twitter:domain" content="https://www.example.com"> 
<meta name="description" content="Hey there and welcome to our forum! For the chance to win $250 please..."/> 
<meta name="keywords" content="Forum, Thread, Post, Win, Welcome, Twitter"/> 

.

Also, wie? Ich bin so verwirrt, nachdem ich eine Stunde damit verbracht habe!

Antwort

0

Kasse die Laravel docs über Template-Vererbung (https://laravel.com/docs/5.2/blade#template-inheritance)

Sie können als die Meta-Daten in Ihren <head></head> injizieren durch @section('title',$article->title) in Ihrer Klinge

Beispiel für Ihre Situation mit:

<head> 
    <meta name="twitter:title" content="@yield('twitter_title')"> 
    <meta name="twitter:image" content="@yield('twitter_image')"> 
</head> 

In Ihrer Klinge:

@extends('layouts.layout') //This loads the default blade with your <head></head> section 

@section('twitter_title',$article->title) 
@section('twitter_image',$article->image) 
+0

Also habe ich den Code wie oben gezeigt hinzugefügt. Erste Box (Kopf- und Meta-Sachen) habe ich in meine layout.blade.php Datei reingeschmissen. Das zweite Bit habe ich in die home.blade.php Datei geworfen. Es schien nicht zu funktionieren. Scheint, die Daten von @section in meiner home.blade.php nicht an meine layout.blade.php anzuhängen. – Andrew

+0

Können Sie Ihren von Ihnen erstellten Code bereitstellen? Haben Sie Fehler? Edit: Ich nehme an, Sie haben Ihre layout.blade.php in Ihre home.blade.php mit folgender Zeile geladen: '@extens ('layouts.layout')' (wo Layouts Ihr Ordner ist, der 'layout.blade enthält. php' – Dennis

+0

Ich habe diesen Schritt verpasst.So arbeitet das jetzt, aber jetzt fragt es mich nach verschiedenen Variablen in der Datei layout.blade.php, zB $ ip $ port $ default_css, die in der Datei home.blade.php definiert werden muss Es gibt eine Möglichkeit, damit die andere Datei weiter zu lesen? – Andrew