Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 30.05.2016 19:51:00

battrack

Laravel 5 как правильно выводить мета-теги?

Есть основной шаблон, в котором есть место под вывод мета-тегов и заголовка страницы.
Каждый из контроллеров (для любой страницы сайта, будь то новости, статьи и т.д.) получает через модель нужную информацию, подключает нужную вьюшку и выводит эту информацию - все просто. Если, скажем, мы зашли внутрь новости, то метод Show контроллера передает во вьюшку через переменную $news всю нужную информацию о новости. В том числе и мета-теги и заголовок. Т.е. $news->meta...
Но, допустим, ситуация, когда у новости не заданы мета-теги, в этом случае нужно вывести мета-теги по умолчанию. Конечно, можно сделать это внутри контроллера новостей, но ведь разделов сайта много, не будешь же в каждом контроллере прописывать мета-теги по умолчанию Поэтому напрашивается вопрос: как организовать вывод мета-тегов таким образом, чтобы где-то в одном месте им присваивались бы значения по-умолчанию, а далее уже контроллеры в случае наличия мета-тегов для выводимой на страницу информации, заменяли бы эти мета-теги по умолчанию актуальными.

А в идеале сделать и вовсе так: создать некий отдельный контроллер, который отвечал бы за формирование мета-тегов, независимо от того в каком разделе находимся. И в шаблон выводил бы эти мета-теги типа такого { meta::showMetaTags }
Т.е. этот контроллер получал бы информацию о текущем разделе, брал бы из базы нужные данные и выводил в шаблон.

Кто-нибудь подскажет как это сделать?

#2 30.05.2016 20:04:11

Re: Laravel 5 как правильно выводить мета-теги?

Ну, к примеру

<meta property="og:title" content="{{ isset($post->title) ? $post->title : 'Default title' }}" />

Не в сети

#3 31.05.2016 05:25:57

Re: Laravel 5 как правильно выводить мета-теги?

Stokke пишет:
{{ isset($post->title) ? $post->title : 'Default title' }}

Для этого случая в Blade есть более короткая конструкция:

{{ $post->title or 'Default title' }}

Не в сети

#4 31.05.2016 09:37:14

battrack

Re: Laravel 5 как правильно выводить мета-теги?

Спасибо за ответ, он мне очень пригодится.
Но в данном случае я все-таки имел немного другое, наверное плохо описал.
Мне бы хотелось, чтобы в представление передавалась одна переменная, содержащая мета-теги (в вашем примере через условие выбирается либо мета-теги текущего контента, либо мета-тег по-умолчанию). В идеале, чтобы уже из контроллера шел нужный мета-тег, т.е. чтобы в контроллере в эту переменную записывались бы либо мета-теги данного контента, либо значение по-умолчанию. Получается, что в самом контроллере нужно иметь доступ к значению по умолчанию. Вот это мне и непонятно как сделать. В голове созрел один вариант, не знаю верный он или нет - сделать некий общий контроллер, от которого наследовать все остальные. И в этом общем контроллере записать в переменную нужное значение по-умолчанию, а уже далее в контроллерах потомках перезаписывать это свойство, в случае если получен мета-тег.
Так можно сделать?

#5 31.05.2016 10:48:13

Re: Laravel 5 как правильно выводить мета-теги?

по теме isset
- попробуйте перейти на empty
он и isset проверит и на пустышку, где пустышка : 0 (ноль), '' (кавычка-кавычка), null

Не в сети

#6 09.04.2017 16:33:15

Re: Laravel 5 как правильно выводить мета-теги?

Вот нашел.

https://github.com/Torann/laravel-meta- … /README.md

Изменено Artem87 (09.04.2017 16:33:43)

Не в сети

#7 01.05.2017 19:17:50

Re: Laravel 5 как правильно выводить мета-теги?

Привет всем. Помогите с проблемой.
Есть в шаблоне код:

<title>@if(isset($seo_title)){{ $seo_title . ' - ' . setting('title') }}@else{{ setting('title') . ' - ' . setting('meta_description') }}@endif</title>
        <!-- only set meta description and keywords if exists -->
    @if(isset($meta_description))
        <meta name="description" content="{{ $meta_description }}">
    @endif

В итоге выводится title вместе с description в мета-теге <title>, а нужно, чтобы и тот и тот. Хотя кому говорю - сами все знаете. Помогите пожалуйста.
P.S. Laravel 5.4

Не в сети

Подвал раздела