Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Есть основной шаблон, в котором есть место под вывод мета-тегов и заголовка страницы.
Каждый из контроллеров (для любой страницы сайта, будь то новости, статьи и т.д.) получает через модель нужную информацию, подключает нужную вьюшку и выводит эту информацию - все просто. Если, скажем, мы зашли внутрь новости, то метод Show контроллера передает во вьюшку через переменную $news всю нужную информацию о новости. В том числе и мета-теги и заголовок. Т.е. $news->meta...
Но, допустим, ситуация, когда у новости не заданы мета-теги, в этом случае нужно вывести мета-теги по умолчанию. Конечно, можно сделать это внутри контроллера новостей, но ведь разделов сайта много, не будешь же в каждом контроллере прописывать мета-теги по умолчанию Поэтому напрашивается вопрос: как организовать вывод мета-тегов таким образом, чтобы где-то в одном месте им присваивались бы значения по-умолчанию, а далее уже контроллеры в случае наличия мета-тегов для выводимой на страницу информации, заменяли бы эти мета-теги по умолчанию актуальными.
А в идеале сделать и вовсе так: создать некий отдельный контроллер, который отвечал бы за формирование мета-тегов, независимо от того в каком разделе находимся. И в шаблон выводил бы эти мета-теги типа такого { meta::showMetaTags }
Т.е. этот контроллер получал бы информацию о текущем разделе, брал бы из базы нужные данные и выводил в шаблон.
Кто-нибудь подскажет как это сделать?
Ну, к примеру
<meta property="og:title" content="{{ isset($post->title) ? $post->title : 'Default title' }}" />
Не в сети
{{ isset($post->title) ? $post->title : 'Default title' }}
Для этого случая в Blade есть более короткая конструкция:
{{ $post->title or 'Default title' }}
Не в сети
Спасибо за ответ, он мне очень пригодится.
Но в данном случае я все-таки имел немного другое, наверное плохо описал.
Мне бы хотелось, чтобы в представление передавалась одна переменная, содержащая мета-теги (в вашем примере через условие выбирается либо мета-теги текущего контента, либо мета-тег по-умолчанию). В идеале, чтобы уже из контроллера шел нужный мета-тег, т.е. чтобы в контроллере в эту переменную записывались бы либо мета-теги данного контента, либо значение по-умолчанию. Получается, что в самом контроллере нужно иметь доступ к значению по умолчанию. Вот это мне и непонятно как сделать. В голове созрел один вариант, не знаю верный он или нет - сделать некий общий контроллер, от которого наследовать все остальные. И в этом общем контроллере записать в переменную нужное значение по-умолчанию, а уже далее в контроллерах потомках перезаписывать это свойство, в случае если получен мета-тег.
Так можно сделать?
по теме isset
- попробуйте перейти на empty
он и isset проверит и на пустышку, где пустышка : 0 (ноль), '' (кавычка-кавычка), null
Не в сети
Вот нашел.
https://github.com/Torann/laravel-meta- … /README.md
Изменено Artem87 (09.04.2017 16:33:43)
Не в сети
Привет всем. Помогите с проблемой.
Есть в шаблоне код:
<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
Не в сети
Страницы 1