This commit is contained in:
谢宇宁
2026-09-24 12:42:30 +07:00
parent e14b3863fb
commit 613db5cb79
15 changed files with 758 additions and 660 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
{{define "downloadAppFloat"}} {{if .appConfig.AppAddr}}
<link rel="stylesheet" href="/static/css/downloadAppFloat.css?v=5" />
<link rel="stylesheet" href="/static/css/downloadAppFloat.css?v=6" />
<a
class="download-fab"
href="{{.appConfig.AppAddr}}"
+14 -1
View File
@@ -1,5 +1,5 @@
{{define "footer"}}
<link rel="stylesheet" href="/static/css/footer.css?v=14" />
<link rel="stylesheet" href="/static/css/footer.css?v=15" />
<footer class="home-mobile-footer">
<img class="home-mobile-footer-logo" src="/static/images/logo.png?v=3" width="127" height="40" alt="黄果短剧" title="黄果短剧" />
<div class="home-mobile-footer-legal">
@@ -35,6 +35,19 @@
<img src="/static/images/figma-home/mobile/footer-top.svg" width="36" height="36" alt="" />
</button>
</div>
{{if or .appConfig.NewURLAddr .appConfig.NewURLAddr1 .appConfig.ForeverURLAddr}}
<div class="home-mobile-footer-addrs" aria-label="访问地址">
{{if .appConfig.NewURLAddr}}
<a class="home-mobile-footer-addr" href="{{.appConfig.NewURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer"><span>最新地址</span><span class="home-mobile-footer-addr-url">{{.appConfig.NewURLAddr}}</span></a>
{{end}}
{{if .appConfig.NewURLAddr1}}
<a class="home-mobile-footer-addr" href="{{.appConfig.NewURLAddr1}}" target="_blank" rel="sponsored nofollow noopener noreferrer"><span>备用地址</span><span class="home-mobile-footer-addr-url">{{.appConfig.NewURLAddr1}}</span></a>
{{end}}
{{if .appConfig.ForeverURLAddr}}
<a class="home-mobile-footer-addr" href="{{.appConfig.ForeverURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer"><span>海外永久地址</span><span class="home-mobile-footer-addr-url">{{.appConfig.ForeverURLAddr}}</span></a>
{{end}}
</div>
{{end}}
</footer>
<footer class="footer-box">
<div class="footer-outer">
+13 -2
View File
@@ -1,5 +1,5 @@
{{define "header"}}
<link rel="stylesheet" href="/static/css/header.css?v=14" />
<link rel="stylesheet" href="/static/css/header.css?v=17" />
<header class="site-header">
<div class="header-inner">
<button
@@ -67,6 +67,17 @@
/>
</form>
{{if .appConfig.AppAddr}}
<a class="header-mobile-icon-link" href="{{.appConfig.AppAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer" data-download-app-open aria-label="下载 App">
<img class="header-mobile-icon-img--lg" src="/static/images/header-download.svg?v=2" width="18" height="18" alt="" />
</a>
{{end}}
{{$headerBizHref := footerContactURL "商务合作" "" .appConfig.GmailAddr .appConfig.TGGroup .appConfig.CustomerServiceHost}}
{{if $headerBizHref}}
<a class="header-mobile-icon-link" href="{{$headerBizHref}}"{{if hasPrefix $headerBizHref "http"}} target="_blank" rel="sponsored nofollow noopener noreferrer"{{end}} aria-label="商务合作 Telegram">
<img src="/static/images/figma-home/mobile/drawer-telegram.svg" width="16" height="16" alt="" />
</a>
{{end}}
<a class="header-mobile-search-link" href="/search/" aria-label="前往搜索页">
<img src="/static/images/figma-home/mobile/search.svg" width="16" height="16" alt="" />
</a>
@@ -157,6 +168,6 @@
<script defer src="/static/js/common/request.js?v=3"></script>
<script defer src="/static/common/imgDecypt.js?v=2"></script>
<script defer src="/static/js/pages/header.js?v=9"></script>
<script defer src="/static/js/pages/header.js?v=10"></script>
<script defer src="/static/js/pages/dialogLoader.js?v=7"></script>
{{template "toast" .}} {{template "eightPop" .}} {{template "dialogAd" .}} {{end}}
+56 -67
View File
@@ -20,7 +20,8 @@
<script type="application/ld+json">{{.jsonLD}}</script>
{{end}}
<link rel="stylesheet" href="/static/css/index.css?v=27">
<link rel="stylesheet" href="/static/css/detail.css?v=30">
<link rel="stylesheet" href="/static/css/detail.css?v=31">
<link rel="stylesheet" href="/static/css/detailHero.css?v=3">
</head>
@@ -55,90 +56,78 @@
</nav>
<div class="detail-layout">
<div class="detail-main">
<section class="detail-hero">
<img class="detail-cover lazy" src="/static/images/placeholder.png?v=2" data-src="{{coverURL .Cover .Banner}}" alt="{{.Title}}" title="{{.Title}}" />
<div class="detail-hero-main">
<div class="detail-hero-info">
{{$detailTags := namedTags .TagIDs .TagNames .TagSlugs}}
{{if $detailTags}}
<div class="detail-tags">
{{range $detailTags}}
{{if .URL}}
<a class="detail-tag" href="{{.URL}}" data-tag-href="{{.URL}}">{{.Name}}</a>
{{else}}
<span class="detail-tag">{{.Name}}</span>
{{end}}
{{end}}
</div>
<section class="dh-card dh-hero">
<a class="dh-poster" href="{{playURL .Slug .ID}}" aria-label="播放《{{.Title}}》">
<img class="dh-poster-img lazy" src="/static/images/placeholder.png?v=2" data-src="{{coverURL .Cover .Banner}}" alt="{{.Title}}" title="{{.Title}}" />
{{if .IsFeatured}}<span class="dh-poster-badge">爆剧</span>{{else if .IsRecommend}}<span class="dh-poster-badge">黄果原创</span>{{else if .IsNew}}<span class="dh-poster-badge">上新</span>{{end}}
{{if .TotalEpisode}}<span class="dh-poster-eps">{{if eq .UpdateStatus 2}}全{{.TotalEpisode}}集{{else}}更新至{{.TotalEpisode}}集{{end}}</span>{{end}}
<span class="dh-poster-play" aria-hidden="true"><img src="/static/images/player.svg" alt="" /></span>
</a>
<div class="dh-info">
<div class="dh-brand">
<img class="dh-brand-avatar" src="/favicon.png?v=3" width="36" height="36" alt="" />
<span>黄果短剧官方</span>
</div>
<h1 class="dh-title">{{.Title}}</h1>
<div class="dh-meta">
<span>{{updateStatusText .UpdateStatus}}</span>
{{if .TotalEpisode}}<span>共 {{.TotalEpisode}} 集</span>{{end}}
<span>{{browseText .CountBrowse}}</span>
{{with playletDateText .OnlineAt .MediaCreatedAt .CreatedAt}}<span>{{.}} 上线</span>{{end}}
</div>
<h2 class="dh-intro-title">{{.Title}}剧情简介</h2>
<p class="dh-intro" data-dh-intro>{{if .Desc}}{{.Desc}}{{else}}暂无简介{{end}}</p>
<button class="dh-intro-toggle" type="button" data-dh-intro-toggle hidden>展开</button>
{{$detailTags := namedTags .TagIDs .TagNames .TagSlugs}}
{{if $detailTags}}
<div class="dh-tags">
{{range $detailTags}}
{{if .URL}}<a class="dh-tag" href="{{.URL}}">{{.Name}}</a>{{else}}<span class="dh-tag">{{.Name}}</span>{{end}}
{{end}}
<h1 class="detail-title">{{.Title}}</h1>
<div class="detail-meta">
<span class="detail-meta-pc">
<span>集数:{{if .TotalEpisode}}{{.TotalEpisode}}集{{else}}更新中{{end}}</span>
<span>上线时间 : {{playletDateText .OnlineAt .MediaCreatedAt .CreatedAt}}</span>
</span>
<span class="detail-meta-h5">
<span>{{if .TotalEpisode}}全{{.TotalEpisode}}集{{else}}短剧{{end}}</span>
<span class="detail-meta-dot">·</span>
<span>{{browseText .CountBrowse}}</span>
</span>
</div>
</div>
<div class="detail-intro-block">
<h2 class="detail-intro-title">简介</h2>
<p class="detail-intro"><span class="detail-intro-prefix-pc">简介:</span>{{if .Desc}}{{.Desc}}{{else}}暂无简介{{end}}</p>
{{end}}
{{$themes := namedThemeTags .ThemeIDs .ThemeNames .ThemeSlugs}}
{{if $themes}}
<div class="dh-themes">
<span class="dh-themes-label">所属专题</span>
{{range $themes}}
{{if .URL}}<a class="dh-theme" href="{{.URL}}">{{.Name}}</a>{{else}}<span class="dh-theme">{{.Name}}</span>{{end}}
{{end}}
</div>
<div class="detail-actions">
<a class="detail-play-btn" href="{{playURL .Slug .ID}}"><img src="/static/images/player.svg" alt="" />立即播放</a>
<div class="detail-action-group">
<button class="detail-action" type="button" data-detail-share data-playlet-id="{{.ID}}">
<span class="detail-action-icon">
<img src="/static/images/share.svg" alt="分享" />
</span>
<span>分享</span>
</button>
<span class="detail-action-sep"></span>
<a class="detail-action" href="/feedback/">
<span class="detail-action-icon">
<img src="/static/images/feedback.svg" alt="反馈" />
</span>
<span>反馈</span>
</a>
</div>
{{end}}
<div class="dh-actions">
<a class="dh-btn dh-btn--primary" href="{{playURL .Slug .ID}}"><img src="/static/images/player.svg" alt="" />立即播放</a>
<button class="dh-btn" type="button" data-detail-share data-playlet-id="{{.ID}}"><img src="/static/images/share.svg" alt="" />分享</button>
<a class="dh-btn" href="/feedback/"><img src="/static/images/feedback.svg" alt="" />反馈</a>
</div>
</div>
</section>
{{template "contentPromo" $}}
<section class="detail-episodes">
<div class="detail-episodes-head">
<h2 class="detail-section-label">剧集</h2>
<div class="detail-episodes-status">
<span>{{updateStatusText .UpdateStatus}}{{if .TotalEpisode}} 共{{.TotalEpisode}}集{{end}}</span>
<img class="detail-episodes-status-icon" src="/static/images/arrow_right.svg" alt="查看选集" />
<section class="dh-card dh-episodes" data-dh-episodes>
<div class="dh-episodes-head">
<div>
<h2 class="dh-episodes-title">{{.Title}}选集</h2>
<div class="dh-episodes-sub">{{if .TotalEpisode}}共 {{.TotalEpisode}} 集 · {{end}}{{updateStatusText .UpdateStatus}}</div>
</div>
<span class="dh-episodes-hint">点击集数直接播放</span>
</div>
{{with $.episodeRanges}}
<div class="detail-episode-ranges">
{{range $i, $r := .}}
<button class="detail-episode-range{{if eq $i 0}} detail-episode-range--active{{end}}" type="button" data-range-start="{{$r.Start}}" data-range-end="{{$r.End}}">{{$r.Label}}</button>
{{if gt (len $.episodeRanges) 1}}
<div class="dh-ranges">
{{range $i, $r := $.episodeRanges}}
<button class="dh-range{{if eq $i 0}} is-active{{end}}" type="button" data-range-start="{{$r.Start}}" data-range-end="{{$r.End}}">{{$r.Label}}</button>
{{end}}
</div>
{{end}}
<div class="detail-episode-list">
<div class="dh-ep-grid">
{{$playletID := .ID}}
{{$playletSlug := .Slug}}
{{range .PlayletChapterInfo}}
{{if .AllowWatch}}
<a class="detail-episode" href="{{chapterPlayURL $playletSlug $playletID .ID}}" data-ep="{{.CurrentEpisode}}">
<span class="detail-episode-pc">第{{.CurrentEpisode}}集</span>
</a>
<a class="dh-ep" href="{{chapterPlayURL $playletSlug $playletID .ID}}" data-ep="{{.CurrentEpisode}}" aria-label="第{{.CurrentEpisode}}集">{{printf "%02d" .CurrentEpisode}}</a>
{{else}}
<a class="detail-episode detail-episode--locked" href="javascript:;" data-episode-locked data-ep="{{.CurrentEpisode}}" aria-label="第{{.CurrentEpisode}}集,下载APP观看">
<span class="detail-episode-pc">第{{.CurrentEpisode}}集</span>
<span class="detail-episode-lock" aria-hidden="true">APP</span>
</a>
<a class="dh-ep dh-ep--locked" href="javascript:;" data-episode-locked data-ep="{{.CurrentEpisode}}" aria-label="第{{.CurrentEpisode}}集,下载APP观看">{{printf "%02d" .CurrentEpisode}}<span class="dh-ep-lock" aria-hidden="true">APP</span></a>
{{end}}
{{else}}
<div class="section-empty">暂无剧集</div>
@@ -183,6 +172,6 @@
</main>
{{end}}
{{template "footer" .}}
<script src="/static/js/pages/detail.js?v=15"></script>
<script src="/static/js/pages/detail.js?v=16"></script>
</body>
</html>
+8 -4
View File
@@ -17,7 +17,7 @@
{{if .jsonLD}}
<script type="application/ld+json">{{.jsonLD}}</script>
{{end}}
<link rel="stylesheet" href="/static/css/index.css?v=38">
<link rel="stylesheet" href="/static/css/index.css?v=39">
{{/* PC 需要 Swiper 样式;H5 延后按需注入,避免首屏下载与强制重排 */}}
<link rel="stylesheet" href="/static/common/swiper-bundle.min.css" media="(min-width: 768px)">
<link rel="preload" href="/static/common/swiper-bundle.min.js" as="script" media="(min-width: 768px)">
@@ -73,7 +73,8 @@
</div>
{{end}}
{{if .announcements}}
{{$cfg := .appConfig}}
{{if or .announcements $cfg.ForeverURLAddr $cfg.NewURLAddr $cfg.NewURLAddr1}}
<div class="home-announcement" role="note" aria-label="站内公告">
<div class="home-announcement-label">
<picture>
@@ -83,8 +84,8 @@
</div>
<div class="home-announcement-content">
<div class="home-announcement-marquee">
<span class="home-announcement-copy">{{range $i, $announcement := .announcements}}{{if $i}}<span class="home-announcement-separator" aria-hidden="true"> · </span>{{end}}{{if $announcement.Title}}<span class="home-announcement-title">{{$announcement.Title}}</span>{{if $announcement.Content}}:{{end}}{{end}}{{$announcement.Content}}{{end}}</span>
<span class="home-announcement-copy" aria-hidden="true">{{range $i, $announcement := .announcements}}{{if $i}}<span class="home-announcement-separator"> · </span>{{end}}{{if $announcement.Title}}<span class="home-announcement-title">{{$announcement.Title}}</span>{{if $announcement.Content}}:{{end}}{{end}}{{$announcement.Content}}{{end}}</span>
<span class="home-announcement-copy">{{template "homeAnnouncementItems" .}}</span>
<span class="home-announcement-copy" aria-hidden="true">{{template "homeAnnouncementItems" .}}</span>
</div>
</div>
</div>
@@ -210,3 +211,6 @@
</body>
</html>
{{/* 跑马灯内容:后台公告在前,随后是官方访问地址 */}}
{{define "homeAnnouncementItems"}}{{$cfg := .appConfig}}{{$n := 0}}{{range .announcements}}{{if $n}}<span class="home-announcement-separator" aria-hidden="true"> · </span>{{end}}{{$n = 1}}{{if .Title}}<span class="home-announcement-title">{{.Title}}</span>{{if .Content}}:{{end}}{{end}}{{.Content}}{{end}}{{if $cfg.ForeverURLAddr}}{{if $n}}<span class="home-announcement-separator" aria-hidden="true"> · </span>{{end}}{{$n = 1}}<span class="home-announcement-title">海外永久地址</span>:<a class="home-announcement-link" href="{{$cfg.ForeverURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">{{$cfg.ForeverURLAddr}}</a>{{end}}{{if $cfg.NewURLAddr}}{{if $n}}<span class="home-announcement-separator" aria-hidden="true"> · </span>{{end}}{{$n = 1}}<span class="home-announcement-title">最新地址</span>:<a class="home-announcement-link" href="{{$cfg.NewURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">{{$cfg.NewURLAddr}}</a>{{end}}{{if $cfg.NewURLAddr1}}{{if $n}}<span class="home-announcement-separator" aria-hidden="true"> · </span>{{end}}{{$n = 1}}<span class="home-announcement-title">备用地址</span>:<a class="home-announcement-link" href="{{$cfg.NewURLAddr1}}" target="_blank" rel="sponsored nofollow noopener noreferrer">{{$cfg.NewURLAddr1}}</a>{{end}}<span class="home-announcement-separator" aria-hidden="true"> · </span>请收藏以上地址,防止迷路{{end}}
+1 -1
View File
@@ -26,7 +26,7 @@
<script type="application/ld+json">{{.jsonLD}}</script>
{{end}}
<link rel="stylesheet" href="/static/css/index.css?v=27">
<link rel="stylesheet" href="/static/css/detail.css?v=30">
<link rel="stylesheet" href="/static/css/detail.css?v=31">
<link rel="stylesheet" href="/static/css/play.css?v=27">
<link rel="stylesheet" href="/static/common/DPlayer.min.css">
<script defer src="/static/common/hls.min.js"></script>