Laravel |Получить указанные данные для текущей страницы - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь получить метаданные для каждой страницы. Каждая страница имеет уникальный слаг

В appServiceProvider У меня есть:

$view->with('seopage', Page::all());

В режиме просмотра лезвий (глава раздела) Iесть:

<title>
  @foreach($seopage as $sm)
    {{ $sm->main_title }}
  @endforeach
</title>
<meta name="description" content="
  @if(Request::is('/*'))                             
  @foreach($seopage as $sp)
  {{ $sp->site_description }}
  @endforeach
  @endif
">

Но сейчас у меня all titles и descriptions. Как я могу получить данные для указанной страницы?

В модели страницы есть unique SLUG variable. Спасибо

Ответы [ 2 ]

2 голосов
/ 28 октября 2019

В appServiceProvider вы можете поделиться страницей, которая принадлежит указанной странице:

$page = Page::where('slug', Request::path())->first();
View::share('seopage', $page);

И, в виду, вы можете получить общую переменную:

<meta name="description" content="
  @if(Request::is('/*') && isset($seopage))
  {{ $seopage->site_description }}
  @endif
">
0 голосов
/ 28 октября 2019

У вас должен быть уникальный столбец uri в таблице seopage

Используемое вами значение

use Illuminate\Support\Facades\Route;

.....

$uri = \Route::current()->uri;
$seopage =  Page::where('uri', $uri)->first();

if ($seopage) {
    $seo = sprintf(
        '<title>%s</title>'  . PHP_EOL
        . '<meta name="description" content="%s>',
        $seopage->main_title ,
        $seopage->site_description
    );
} else {
    $seo = '';
}
$view->with('seo', $seo);

В использовании Blade

{{ $seo }}
...