Theme
Primary Color

تغيير عنوان كل صفحة تستخدم نفس ال Layout

إذا كان لديك مجموعة من الصفحات تستخدم نفس ال Layout 

وتريد تخصيص عنوان لكل صفحة يظهر في تبويب المتصفح 

يمكنك استخدام @yield داخل ال Layout وتحديد قيمة العنوان باستخدام @section داخل كل صفحة


لدينا ال Layout التالي الذي تستخدمه الصفحات ويحتوي على عنوان ثابت وهو Page

resources/views/layouts/main.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Page</title>
</head>
<body>
  <div class="main-content">
    @yield('content')
  </div>
</body>
</html>

وتستخدم صفحة ال Dashboard هذا ال Layout بالشكل التالي

resources/views/pages/dashboard.blade.php
@extends('layouts.main')

@section('content')
  Dashboard Page
@endsection

وتستخدم صفحة ال Profile نفس ال Layout بهذا الشكل

resources/views/pages/profile.blade.php
@extends('layouts.main')

@section('content')
  Profile Page
@endsection

الآن عنوان تبويب المتصفح سيكون Page في الصفحتين لأن العنوان مكتوب بشكل ثابت داخل ال Layout

لجعل العنوان يتغير حسب الصفحة سنستبدل العنوان الثابت باستخدام @yield

<title>@yield('title', 'Default Title')</title>

القيمة title هي اسم ال Section التي سنحددها داخل كل صفحة 

والقيمة Default Title هي العنوان الافتراضي الذي سيظهر إذا لم تحدد الصفحة هذه ال Section

وهنا كود ال Layout بعد التعديل

resources/views/layouts/main.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>@yield('title', 'Default Title')</title>
</head>
<body>
  <div class="main-content">
    @yield('content')
  </div>
</body>
</html>

الآن نحدد عنوان صفحة ال Dashboard باستخدام @section بهذا الشكل

resources/views/pages/dashboard.blade.php
@extends('layouts.main')

@section('title', 'Dashboard')

@section('content')
  Dashboard Page
@endsection

ثم نحدد عنوان صفحة ال Profile بنفس الطريقة

resources/views/pages/profile.blade.php
@extends('layouts.main')

@section('title', 'Profile')

@section('content')
  Profile Page
@endsection
  • لاحظ أن الصيغة المختصرة @section('title', 'Dashboard') لا تحتاج إلى @endsection لأننا مررنا قيمة ال Section مباشرة
  • الآن عند فتح صفحة ال Dashboard سيظهر عنوان Dashboard في تبويب المتصفح وعند فتح صفحة ال Profile سيظهر عنوان Profile
  • وأي صفحة تستخدم نفس ال Layout ولا تحدد ال Section المسماة title سيظهر لها العنوان الافتراضي Default Title
framework laravel learn لارافيل