Laravel по-русски

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

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

#1 01.03.2016 21:39:10

Возможно ли из шаблона BLADE получить мета? (title, keywords) ?

Возможно ли из шаблона BLADE получить мета? (title, keywords) ?
Например структура такая:

index состоит из:
инклюдим хедер
создаем контент
инклюдим сайдбар
инклюдим футер

Так вот, получается сайдбар появляется на любой странице. Как в нем можно получить мета заголовки не используя js?
Роутер ссылается на шаблон. В момент подключения контента определенной страницы я делаю так:
Роутер ссылается например на index, в нем содержание такое:

@section(’title’, ’тут тайтл’)
@section(’description’, ’тут описание’)
@include(’layouts.header’)
@include(’layouts.sidebar’)
@include(’layouts.footer’)

Так вот, как мне в sidebar Поймать маетатеги?

Не в сети

#2 01.03.2016 22:04:17

Re: Возможно ли из шаблона BLADE получить мета? (title, keywords) ?

Наверно лучшим решением будет тогда так:
Вы также можете передать массив данных во включаемый шаблон:
@include(’view.name’, [’some’ ⇒ ’data’])

Получается что то типа этого:
<?php $title = Тут тайтл’; ?>
@section(’title’, title)
@include(’view.name’, [’title’ ⇒ ’title’])

И в секции name мы можем получить наши переменные.
Это ли не чудо?

В Битриксе делается так, что довольно удобно. В каждой директории лежит файл .sections.php
В нем прописываются мета данные.
По сути такая логика может быть реализована с помощью view()->share()

То есть до вывода нужной вьюхи, берем данные из нужной .sections.php
И посылаем через view()->share()
Второй вариант более удобный в плане обслуживания сео.
Но не писать мета в контроллере это точно! Как мне посоветовали… Потом можно будет сойти с ума в плане обслуживания СЕО
Кто за и против? Есть другие предложения?

Кто скажет для чего это?
Вот пример:
Нужно создать в сайдбаре кнопки социалок, без их js
Что бы сформировать ссылку для расшаривания страницы нужно url тайтл и описание как минимум.

Не в сети

#3 02.03.2016 01:00:30

iy_expert
Откуда: Ukraine. Rivne
Сообщений: 19

Re: Возможно ли из шаблона BLADE получить мета? (title, keywords) ?

Я так делал:
Например, на страницу новости нужно тоже было добавлять title, keywords.
В контроллере так: return view('template.news', ['item' => $news, ...]);
Этот шаблон примерно такой:
@extends('template._layout.base')
@section('content')
     {{ $item->title }}
@endsection

А в template._layout.base я также там где нужно делаю вывод:
{{ $item->seoTitle }}

И все работает)

Не в сети

#4 02.03.2016 01:08:20

Re: Возможно ли из шаблона BLADE получить мета? (title, keywords) ?

Я так делал…

В контроллере так: return view(’template.news’, [’item’ ⇒ $news, …]);

А где у вас $news определялась? Можно подробней про такой вариант?

Изменено chelkaz (02.03.2016 01:09:18)

Не в сети

#5 02.03.2016 01:12:17

iy_expert
Откуда: Ukraine. Rivne
Сообщений: 19

Re: Возможно ли из шаблона BLADE получить мета? (title, keywords) ?

chelkaz пишет:

А где у вас $news определялась? Можно подробней про такой вариант?

В контроллере строкой выше), например так:
$news = $news->getNewsByUrl($url);

Не в сети

#6 02.03.2016 01:25:43

Artdevue
Откуда: Kiev
Сообщений: 119
Сайт

Re: Возможно ли из шаблона BLADE получить мета? (title, keywords) ?

Я немного по другому поступаю, изначально в контролере который буду наследовать всё объявляю, типа того

class BaseController extends Controller
 {
 	public $title = [];
    public $description = null;
    public $breadcrumb = [];
    public $isAjax = false;
    // ........

    function __construct()
    {
    	array_push($this->title, Config::get('app.site_name'));

    	View::share('title', implode(' :: ', $this->title));
    	View::share('description', $this->description);
    	View::share('breadcrumb', $this->breadcrumb);
    	View::share('isAjax', $this->isAjax);
    	// .......
    }
 }

 class CatalogsController extends BaseController
 {
 	public function level_one($id)
 	{
 		$catalog = Catalog::first($id);

 		array_push($this->title,  $catalog->title);
 		$this->description,  $catalog->description);
 		// ....
 	} 	
 }

удобно, что можно несколько уровней добавлять,  к примеру каталог с вложениями, плюс доступны в любом шаблоне


If you think it’s expensive to hire a professional to do the job, wait until you hire an amateur.

Не в сети

#7 02.03.2016 01:46:31

duster
Откуда: Мельбурн
Сообщений: 148

Re: Возможно ли из шаблона BLADE получить мета? (title, keywords) ?

PHP
@include(’layouts.header’)
@include(
’layouts.sidebar’)
@include(
’layouts.footer’)

Вы неправильно понимаете, что такое layout. Все эти три шаблона — это partials.

Layout — это шаблон-разметка, обычно главный шаблон, который включает внутри себя весь скелет (набор секций).

Не в сети

#8 02.03.2016 15:14:46

Re: Возможно ли из шаблона BLADE получить мета? (title, keywords) ?

Вы неправильно понимаете, что такое layout. Все эти три шаблона — это partials.
Layout — это шаблон-разметка, обычно главный шаблон, который включает внутри себя весь скелет (набор секций).

Простите, а как в моем случаи тогда сделать?

Получается так? Например основной макет (Заготовку например index я делаю так)
Например:
<html>
<head>
@section(’title’, ’default’)
@section(’description’, ’default’)
</head>
<body>

@section(’content’)
Контент по умолчанию
@endsection

@section(’sidebar’)
Сайдбар по умолчанию
@endsection

<body>
</html>

И потом уже @extends(’layouts.index’) работать?

Не в сети

#9 03.03.2016 05:44:16

duster
Откуда: Мельбурн
Сообщений: 148

Re: Возможно ли из шаблона BLADE получить мета? (title, keywords) ?

chelkaz пишет:

И потом уже @extends('layouts.index') работать?

Да-да!

Потом чтобы слегка поменять дизайн сайта - достаточно будет только layout отредактировать, поэтому он и называется layout - разметка.

А теги удобно устанавливать каким-нибудь модулем типа https://github.com/eusonlito/laravel-Meta

Не в сети

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