Add About Section to HomePageSettings and update HomePageController to include brand data. Modify HomeSettings to store new about section fields and update the homepage view to display these settings.

This commit is contained in:
2025-07-28 13:08:26 +05:00
parent d0985a71d5
commit b405cad6fe
8 changed files with 158 additions and 26 deletions

View File

@@ -7,6 +7,7 @@ use Filament\Forms\Components\Grid;
use Filament\Forms\Components\Section; use Filament\Forms\Components\Section;
use Filament\Forms\Components\TextInput; use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Textarea; use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\FileUpload;
use Filament\Forms\Form; use Filament\Forms\Form;
use Filament\Pages\Page; use Filament\Pages\Page;
use Filament\Pages\SettingsPage; use Filament\Pages\SettingsPage;
@@ -48,6 +49,78 @@ class HomePageSettings extends SettingsPage
])->columns(2), ])->columns(2),
]), ]),
Section::make('About Section')
->description('Manage the about section content on the homepage.')
->icon('heroicon-o-building-office-2')
->schema([
TextInput::make('about_subtitle')
->label('About Subtitle')
->maxLength(100),
TextInput::make('about_header')
->label('About Header')
->required()
->maxLength(255),
Textarea::make('about_paragraph')
->label('About Paragraph')
->rows(5)
->maxLength(65535),
Grid::make()->schema([
TextInput::make('about_projects_text')
->label('Projects Text')
->maxLength(100),
TextInput::make('about_projects_number')
->label('Projects Number')
->numeric(),
])->columns(2),
Grid::make()->schema([
TextInput::make('about_members_text')
->label('Members Text')
->maxLength(100),
TextInput::make('about_members_number')
->label('Members Number')
->numeric(),
])->columns(2),
Grid::make()->schema([
TextInput::make('about_reviews_text')
->label('Reviews Text')
->maxLength(100),
TextInput::make('about_reviews_number')
->label('Reviews Number')
->numeric(),
])->columns(2),
Grid::make()->schema([
TextInput::make('about_button_text')
->label('About Button Text')
->maxLength(50),
TextInput::make('about_button_url')
->label('About Button URL')
->maxLength(255)
->url(),
])->columns(2),
Grid::make()->schema([
FileUpload::make('about_image_one')
->label('About Image One (245x410)')
->image()
->maxSize(2048)
->disk('public')
->directory('about-images'),
FileUpload::make('about_image_two')
->label('About Image Two (375x391)')
->image()
->maxSize(2048)
->disk('public')
->directory('about-images'),
])->columns(2),
]),
Section::make('Background Video') Section::make('Background Video')
->description('Upload or link the background video for the hero section.') ->description('Upload or link the background video for the hero section.')
->icon('heroicon-o-camera') ->icon('heroicon-o-camera')

View File

@@ -2,12 +2,16 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\Brand;
use App\Settings\HomeSettings; use App\Settings\HomeSettings;
class HomePageController extends Controller class HomePageController extends Controller
{ {
public function index() public function index()
{ {
return view('web.pages.home.index'); $brands = Brand::query()->get(['id', 'image']);
$homeSettings = app(HomeSettings::class);
return view('web.pages.home.index', compact('homeSettings', 'brands'));
} }
} }

View File

@@ -42,12 +42,5 @@ class AppServiceProvider extends ServiceProvider
$view->with('settings', app(SiteSettings::class)); $view->with('settings', app(SiteSettings::class));
$view->with('socialMedia', app(SiteSocialSettings::class)); $view->with('socialMedia', app(SiteSocialSettings::class));
}); });
ViewFacade::composer('web.pages.home.index', function (View $view) {
$brands = Brand::query()->get(['id', 'image']);
$view->with('homepage', app(HomeSettings::class));
$view->with('brands', $brands);
});
} }
} }

View File

@@ -18,6 +18,32 @@ class HomeSettings extends Settings
public string $hero_link_button_text; public string $hero_link_button_text;
public string $about_subtitle;
public string $about_header;
public string $about_paragraph;
public int $about_projects_number;
public string $about_projects_text;
public int $about_members_number;
public string $about_members_text;
public int $about_reviews_number;
public string $about_reviews_text;
public string $about_button_text;
public string $about_button_url;
public string $about_image_one;
public string $about_image_two;
public static function group(): string public static function group(): string
{ {
return 'cms_homepage'; return 'cms_homepage';

View File

@@ -14,6 +14,7 @@ class DatabaseSeeder extends Seeder
public function run(): void public function run(): void
{ {
$this->call([ $this->call([
UsersTableSeeder::class,
BrandTableSeeder::class, BrandTableSeeder::class,
]); ]);
} }

View File

@@ -0,0 +1,21 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\User;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
User::create([
'name' => 'nurmuhammet',
'email' => 'nurmuhammet@mail.com',
'password' => bcrypt('payload10'),
]);
}
}

View File

@@ -6,11 +6,25 @@ return new class extends SettingsMigration
{ {
public function up(): void public function up(): void
{ {
$this->migrator->add('cms_homepage.bg_video', '/web/assets/video/banner.mp4'); $this->migrator->add('cms_homepage.bg_video', 'http://127.0.0.1:8000/web/assets/video/banner.mp4');
$this->migrator->add('cms_homepage.hero_badge_text', 'Expert Solutions'); $this->migrator->add('cms_homepage.hero_badge_text', 'Expert Solutions');
$this->migrator->add('cms_homepage.hero_header', 'Shaping Future'); $this->migrator->add('cms_homepage.hero_header', 'Shaping Future');
$this->migrator->add('cms_homepage.hero_sub_header', 'Architecture'); $this->migrator->add('cms_homepage.hero_sub_header', 'Architecture');
$this->migrator->add('cms_homepage.hero_link_button_url', 'http://gujurly.com'); $this->migrator->add('cms_homepage.hero_link_button_url', 'http://gujurly.com');
$this->migrator->add('cms_homepage.hero_link_button_text', 'Start today'); $this->migrator->add('cms_homepage.hero_link_button_text', 'Start today');
$this->migrator->add('cms_homepage.about_subtitle', 'About Our Company');
$this->migrator->add('cms_homepage.about_header', 'Leading Construction Innovation With Digital Consulting');
$this->migrator->add('cms_homepage.about_paragraph', 'We focus on optimizing efficiency, managing risks, and delivering innovative solutions tailored to meet unique project needs and enhance productivity.');
$this->migrator->add('cms_homepage.about_projects_number', 678);
$this->migrator->add('cms_homepage.about_projects_text', 'Complete Projects');
$this->migrator->add('cms_homepage.about_members_number', 120);
$this->migrator->add('cms_homepage.about_members_text', 'Team Members');
$this->migrator->add('cms_homepage.about_reviews_number', 635);
$this->migrator->add('cms_homepage.about_reviews_text', 'Client Reviews');
$this->migrator->add('cms_homepage.about_button_text', 'Our Story');
$this->migrator->add('cms_homepage.about_button_url', 'http://gujurly.com');
$this->migrator->add('cms_homepage.about_image_one', 'http://127.0.0.1:8000/web/assets/img/about/about-5.jpg');
$this->migrator->add('cms_homepage.about_image_two', 'http://127.0.0.1:8000/web/assets/img/about/about-6.jpg');
} }
}; };

View File

@@ -5,7 +5,7 @@
<div class="banner__four"> <div class="banner__four">
{{-- BG video --}} {{-- BG video --}}
<div class="bg-video"> <div class="bg-video">
<video autoplay muted loop id="myVideo"><source src="{{ $homepage->bg_video }}" type="video/mp4"></video> <video autoplay muted loop id="myVideo"><source src="{{ $homeSettings->bg_video }}" type="video/mp4"></video>
</div> </div>
{{-- Hero --}} {{-- Hero --}}
@@ -13,13 +13,13 @@
<div class="row"> <div class="row">
<div class="col-xl-12"> <div class="col-xl-12">
<div class="banner__four-content"> <div class="banner__four-content">
<span class="subtitle wow fadeInLeft" data-wow-delay=".4s">{{ $homepage->hero_badge_text }}</span> <span class="subtitle wow fadeInLeft" data-wow-delay=".4s">{{ $homeSettings->hero_badge_text }}</span>
<div class="title_split_anim"> <div class="title_split_anim">
<h1>{{ $homepage->hero_header }}</h1> <h1>{{ $homeSettings->hero_header }}</h1>
<h2>{{ $homepage->hero_sub_header }}</h2> <h2>{{ $homeSettings->hero_sub_header }}</h2>
</div> </div>
<div class="item_bounce"> <div class="item_bounce">
<a class="build_button" href="{{ $homepage->hero_link_button_url }}">{{ $homepage->hero_link_button_text }}<i class="flaticon-right-up"></i></a> <a class="build_button" href="{{ $homeSettings->hero_link_button_url }}">{{ $homeSettings->hero_link_button_text }}<i class="flaticon-right-up"></i></a>
</div> </div>
<a href="#"><img class="h_rotate" src="/web/assets/img/shape/content.png" alt="image"></a> <a href="#"><img class="h_rotate" src="/web/assets/img/shape/content.png" alt="image"></a>
</div> </div>
@@ -65,16 +65,16 @@
<div class="row al-center"> <div class="row al-center">
<div class="col-lg-3 lg-mb-25"> <div class="col-lg-3 lg-mb-25">
<div class="about__four-left wow img_top_animation"> <div class="about__four-left wow img_top_animation">
<img src="/web/assets/img/about/about-5.jpg" alt="image"> <img src="/storage/{{ $homeSettings->about_image_one }}" alt="image">
</div> </div>
</div> </div>
<div class="col-lg-9"> <div class="col-lg-9">
<div class="about__four-title"> <div class="about__four-title">
<span class="subtitle wow fadeInLeft" data-wow-delay=".4s">About Our Company</span> <span class="subtitle wow fadeInLeft" data-wow-delay=".4s">{{ $homeSettings->about_subtitle }}</span>
<h2 class="title_split_anim mb-20">Leading Construction Innovation With Digital Consulting</h2> <h2 class="title_split_anim mb-20">{{ $homeSettings->about_header }}</h2>
<p class="wow fadeInUp" data-wow-delay=".4s">We focus on optimizing efficiency, managing risks, and delivering innovative solutions tailored to meet unique project needs and enhance productivity.</p> <p class="wow fadeInUp" data-wow-delay=".4s">{{ $homeSettings->about_paragraph }}</p>
<div class="item_bounce"> <div class="item_bounce">
<a class="build_button mt-25" href="history.html">Our Story<i class="flaticon-right-up"></i></a> <a class="build_button mt-25" href="{{ $homeSettings->about_button_url }}">{{ $homeSettings->about_button_text }}<i class="flaticon-right-up"></i></a>
</div> </div>
</div> </div>
</div> </div>
@@ -86,24 +86,24 @@
<div class="col-md-4 col-sm-6 wow fadeInUp" data-wow-delay=".4s"> <div class="col-md-4 col-sm-6 wow fadeInUp" data-wow-delay=".4s">
<div class="about__four-counter-item"> <div class="about__four-counter-item">
<div class="box"> <div class="box">
<h2><span class="counter">678</span>+</h2> <h2><span class="counter">{{ $homeSettings->about_projects_number }}</span>+</h2>
<span>Complete Projects</span> <span>{{ $homeSettings->about_projects_text }}</span>
</div> </div>
</div> </div>
</div> </div>
<div class="col-md-4 col-sm-6 wow fadeInUp" data-wow-delay=".7s"> <div class="col-md-4 col-sm-6 wow fadeInUp" data-wow-delay=".7s">
<div class="about__four-counter-item borders t-center md-t-left"> <div class="about__four-counter-item borders t-center md-t-left">
<div class="box"> <div class="box">
<h2><span class="counter">120</span>+</h2> <h2><span class="counter">{{ $homeSettings->about_members_number }}</span>+</h2>
<span>Team Members</span> <span>{{ $homeSettings->about_members_text }}</span>
</div> </div>
</div> </div>
</div> </div>
<div class="col-md-4 col-sm-6 wow fadeInUp" data-wow-delay="1s"> <div class="col-md-4 col-sm-6 wow fadeInUp" data-wow-delay="1s">
<div class="about__four-counter-item t-right md-t-left"> <div class="about__four-counter-item t-right md-t-left">
<div class="box"> <div class="box">
<h2><span class="counter">635</span>+</h2> <h2><span class="counter">{{ $homeSettings->about_reviews_number }}</span>+</h2>
<span>Client Reviews</span> <span>{{ $homeSettings->about_reviews_text }}</span>
</div> </div>
</div> </div>
</div> </div>
@@ -112,7 +112,7 @@
</div> </div>
<div class="col-lg-4 lg-mt-25"> <div class="col-lg-4 lg-mt-25">
<div class="about__four-right t-right wow img_right_animation"> <div class="about__four-right t-right wow img_right_animation">
<img src="/web/assets/img/about/about-6.jpg" alt="image"> <img src="/storage/{{ $homeSettings->about_image_two }}" alt="image">
</div> </div>
</div> </div>
</div> </div>