完善功能
This commit is contained in:
31
web10/resources/views/frontend/partials/ad-slot.blade.php
Normal file
31
web10/resources/views/frontend/partials/ad-slot.blade.php
Normal file
@@ -0,0 +1,31 @@
|
||||
@php
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
$ads = \App\Models\AdSlot::getActiveAds($slotKey ?? '');
|
||||
@endphp
|
||||
|
||||
@if($ads->isNotEmpty())
|
||||
<div class="ad-slot">
|
||||
@if(!empty($title))
|
||||
<div class="ad-slot-title">{{ $title }}</div>
|
||||
@endif
|
||||
<div class="ad-list">
|
||||
@foreach($ads as $ad)
|
||||
@php
|
||||
$url = route('ads.redirect', $ad->id);
|
||||
$target = $ad->link_target ?: '_blank';
|
||||
@endphp
|
||||
<a class="ad-item" href="{{ $url }}" target="{{ $target }}" rel="noopener">
|
||||
@if($ad->image)
|
||||
<img src="{{ Storage::url($ad->image) }}" alt="{{ $ad->title }}">
|
||||
@endif
|
||||
<div class="ad-item-body">
|
||||
<div class="ad-item-title">{{ $ad->title }}</div>
|
||||
@if($ad->description)
|
||||
<div class="ad-item-desc">{{ $ad->description }}</div>
|
||||
@endif
|
||||
</div>
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
18
web10/resources/views/frontend/partials/footer.blade.php
Normal file
18
web10/resources/views/frontend/partials/footer.blade.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<footer class="footer">
|
||||
<div class="footer-inner">
|
||||
<span>© {{ date('Y') }} {{ $siteTitle }}</span>
|
||||
@if($siteFooter)
|
||||
<span class="footer-text">{{ $siteFooter }}</span>
|
||||
@endif
|
||||
@if($icpNumber)
|
||||
<span class="footer-text">{{ $icpNumber }}</span>
|
||||
@endif
|
||||
@if(!empty($socialLinks))
|
||||
<span class="footer-links">
|
||||
@foreach($socialLinks as $link)
|
||||
<a href="{{ $link['url'] }}" target="_blank" rel="noopener">{{ $link['name'] }}</a>
|
||||
@endforeach
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
</footer>
|
||||
22
web10/resources/views/frontend/partials/header.blade.php
Normal file
22
web10/resources/views/frontend/partials/header.blade.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<header class="topbar">
|
||||
<div class="brand">
|
||||
<a href="{{ route('home') }}" class="brand-link">
|
||||
@if($siteLogo)
|
||||
<img src="{{ $siteLogo }}" alt="{{ $siteTitle }}" class="brand-logo">
|
||||
@else
|
||||
<span class="brand-text">{{ $siteTitle }}</span>
|
||||
@endif
|
||||
</a>
|
||||
</div>
|
||||
<nav class="topnav">
|
||||
<a href="{{ route('home') }}">首页</a>
|
||||
<a href="{{ route('categories.index') }}">分类</a>
|
||||
<a href="{{ route('articles.index') }}">文章</a>
|
||||
<a href="{{ route('about') }}">关于</a>
|
||||
</nav>
|
||||
<div class="topbar-actions">
|
||||
<button type="button" class="theme-toggle" id="theme-toggle" aria-label="切换主题">
|
||||
<span class="theme-icon">暗/亮</span>
|
||||
</button>
|
||||
</div>
|
||||
</header>
|
||||
31
web10/resources/views/frontend/partials/pagination.blade.php
Normal file
31
web10/resources/views/frontend/partials/pagination.blade.php
Normal file
@@ -0,0 +1,31 @@
|
||||
@if ($paginator->hasPages())
|
||||
<nav class="pagination">
|
||||
@if ($paginator->onFirstPage())
|
||||
<span class="page disabled">上一页</span>
|
||||
@else
|
||||
<a class="page" href="{{ $paginator->previousPageUrl() }}">上一页</a>
|
||||
@endif
|
||||
|
||||
@foreach ($elements as $element)
|
||||
@if (is_string($element))
|
||||
<span class="page disabled">{{ $element }}</span>
|
||||
@endif
|
||||
|
||||
@if (is_array($element))
|
||||
@foreach ($element as $page => $url)
|
||||
@if ($page == $paginator->currentPage())
|
||||
<span class="page active">{{ $page }}</span>
|
||||
@else
|
||||
<a class="page" href="{{ $url }}">{{ $page }}</a>
|
||||
@endif
|
||||
@endforeach
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
@if ($paginator->hasMorePages())
|
||||
<a class="page" href="{{ $paginator->nextPageUrl() }}">下一页</a>
|
||||
@else
|
||||
<span class="page disabled">下一页</span>
|
||||
@endif
|
||||
</nav>
|
||||
@endif
|
||||
@@ -0,0 +1,22 @@
|
||||
@php
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
@endphp
|
||||
|
||||
<div class="product-card">
|
||||
<a href="{{ route('products.show', $product->slug) }}" class="product-card-link">
|
||||
<div class="product-card-media">
|
||||
@if($product->cover)
|
||||
<img src="{{ Storage::url($product->cover) }}" alt="{{ $product->name }}">
|
||||
@else
|
||||
<div class="product-card-placeholder">{{ mb_substr($product->name, 0, 2) }}</div>
|
||||
@endif
|
||||
@if(\App\Models\SiteSetting::value('show_sponsor_label', '1') === '1' && $product->is_sponsored)
|
||||
<span class="sponsor-badge">推广</span>
|
||||
@endif
|
||||
</div>
|
||||
<div class="product-card-body">
|
||||
<div class="product-card-title">{{ $product->name }}</div>
|
||||
<div class="product-card-summary">{{ $product->summary }}</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
28
web10/resources/views/frontend/partials/sidebar.blade.php
Normal file
28
web10/resources/views/frontend/partials/sidebar.blade.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<div class="sidebar-block">
|
||||
<div class="sidebar-title">分类导航</div>
|
||||
<div class="category-list">
|
||||
@foreach($sidebarCategories as $category)
|
||||
<details class="category-group" @if($loop->first) open @endif>
|
||||
<summary>
|
||||
<span>
|
||||
@if($category->icon)
|
||||
<span class="icon">{{ $category->icon }}</span>
|
||||
@endif
|
||||
{{ $category->name }}
|
||||
</span>
|
||||
<span class="count">{{ $category->products_count }}</span>
|
||||
</summary>
|
||||
<ul>
|
||||
@foreach($category->children as $child)
|
||||
<li>
|
||||
<a href="{{ route('categories.show', $child->slug) }}">
|
||||
{{ $child->name }}
|
||||
<span class="count">{{ $child->products_count }}</span>
|
||||
</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</details>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user