Initial commit

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
谢宇宁
2026-10-22 14:47:17 +07:00
co-authored by Claude Opus 5.5
commit 3639d2184a
574 changed files with 61690 additions and 0 deletions
+23
View File
@@ -0,0 +1,23 @@
{{define "analytics"}}
<!-- Yandex.Metrika counter -->
<script type="text/javascript">
(function(m,e,t,r,i,k,a){
m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)
})(window, document,'script','https://mc.yandex.ru/metrika/tag.js?id={{if .isNavPage}}112390883{{else}}112967594{{end}}', 'ym');
ym({{if .isNavPage}}112390883{{else}}112967594{{end}}, 'init', {ssr:true, webvisor:true, clickmap:true, ecommerce:"dataLayer", referrer: document.referrer, url: location.href, accurateTrackBounce:true, trackLinks:true});
</script>
<!-- /Yandex.Metrika counter -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id={{if .isNavPage}}G-SY26Y2MSHS{{else}}G-B5KGM8S5J1{{end}}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{if .isNavPage}}G-SY26Y2MSHS{{else}}G-B5KGM8S5J1{{end}}');
</script>
{{end}}
+87
View File
@@ -0,0 +1,87 @@
{{define "contentPromo"}}
{{template "squarePromo" dict "Ads" .appConfig.DetailTopList "SlotKey" "detail_top" "SlotName" "详情顶部广告" "Label" "推广内容" "PCOnly" "1"}}
{{end}}
{{define "contentOfficialInfo"}}
{{$cfg := .appConfig}}
{{if or $cfg.NewURLAddr $cfg.OfficialAppAddr $cfg.NewURLAddr1 $cfg.NewURLAddr2 $cfg.ForeverURLAddr $cfg.TGGroup $cfg.QQ $cfg.GmailAddr}}
<section class="content-official-info" aria-label="官方信息">
{{if $cfg.NewURLAddr}}
<p>官方入口:<br><a href="{{$cfg.NewURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">{{$cfg.NewURLAddr}}</a></p>
{{end}}
{{if $cfg.NewURLAddr1}}
<p>最新地址发布页:<br><a href="{{$cfg.NewURLAddr1}}" target="_blank" rel="sponsored nofollow noopener noreferrer">{{$cfg.NewURLAddr1}}</a> 👈务必牢记,防止迷路</p>
{{end}}
{{if $cfg.NewURLAddr2}}
<p>备用访问地址:<br><a href="{{$cfg.NewURLAddr2}}" target="_blank" rel="sponsored nofollow noopener noreferrer">{{$cfg.NewURLAddr2}}</a></p>
{{end}}
{{if $cfg.ForeverURLAddr}}
<p>海外永久地址:<br><a href="{{$cfg.ForeverURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">{{$cfg.ForeverURLAddr}}</a></p>
{{end}}
{{if $cfg.OfficialAppAddr}}
<p>官方APP下载:<br><a href="{{$cfg.OfficialAppAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">{{$cfg.OfficialAppAddr}}</a></p>
{{end}}
{{if $cfg.TGGroup}}
<p><a href="{{$cfg.TGGroup}}" target="_blank" rel="sponsored nofollow noopener noreferrer">点击加入黄果短剧官方Telegram群</a></p>
{{end}}
{{if $cfg.QQ}}
<p>黄果短剧官方QQ群:{{$cfg.QQ}}</p>
{{end}}
{{if $cfg.GmailAddr}}
<p>发送邮件到 <a href="mailto:{{$cfg.GmailAddr}}">{{$cfg.GmailAddr}}</a> 获取最新地址</p>
{{end}}
</section>
{{end}}
{{end}}
{{define "contentAds"}}
{{if .appConfig.DetailBannerList}}
<div class="content-ad-stack" aria-label="广告">
{{range $ad := .appConfig.DetailBannerList}}
<a {{if $ad.Link}}href="{{$ad.Link}}" target="_blank" rel="sponsored nofollow noopener noreferrer"{{else}}aria-disabled="true"{{end}} data-creative-id="{{$ad.ID}}">
<img class="lazy" src="/static/images/placeholder.png?v=2" data-src="{{$ad.Images}}" alt="{{$ad.Title}}" title="{{$ad.Title}}" />
</a>
{{end}}
</div>
{{end}}
{{end}}
{{define "contentHotSidebar"}}
<section class="detail-related" data-related-section>
<div class="detail-related-head">
<h2 class="detail-related-title">
<span class="detail-related-title-pc">热门短剧</span>
<span class="detail-related-title-h5">猜你喜欢</span>
</h2>
<button class="detail-related-refresh" type="button" data-related-refresh>
<span>换一换</span>
<img src="/static/images/refresh.svg" alt="换一批" />
</button>
</div>
<div class="card-grid" data-related-grid>
{{range .RelatedRecommendData}}
<a class="poster-card" href="{{detailURL .Slug .ID}}">
<div class="poster-cover">
<img src="/static/images/placeholder.png?v=2" class="poster-cover-img lazy" data-src="{{coverURL .Cover .Banner}}" alt="{{.Title}}" title="{{.Title}}" />
{{template "posterCornerBadges" .}}
{{template "posterLikeBadge" .}}
{{with episodeLabel .TotalEpisode}}
<div class="episode-badge"><div class="text-white-xs">{{.}}</div></div>
{{end}}
</div>
<div class="poster-card-body">
<div class="poster-card-title">{{.Title}}</div>
{{if .Desc}}<div class="poster-card-subtitle">{{.Desc}}</div>{{end}}
<div class="poster-card-meta">
{{template "posterCardTag" .}}
<div class="flex-spacer"></div>
<div class="poster-card-heat">{{formatHeat .HeatValue}}</div>
</div>
</div>
</a>
{{else}}
<div class="section-empty">暂无相关推荐</div>
{{end}}
</div>
</section>
{{end}}
+39
View File
@@ -0,0 +1,39 @@
{{define "dialogAd"}}
{{if .appConfig.DialogList}}
<link rel="stylesheet" href="/static/css/dialogAd.css?v=4" />
<div
class="dialog-ad-mask"
id="dialogAd"
data-dialog-ad
hidden
>
{{range $index, $dialog := .appConfig.DialogList}}
<div
class="dialog-ad-panel"
data-dialog-ad-item
data-dialog-ad-index="{{$index}}"
data-dialog-ad-id="{{$dialog.ID}}"
data-creative-id="{{$dialog.ID}}"
role="dialog"
aria-modal="true"
aria-label="{{if $dialog.Title}}{{$dialog.Title}}{{else}}广告{{end}}"
hidden
>
{{if $dialog.Link}}
<a class="dialog-ad-media" href="{{$dialog.Link}}" target="_blank" rel="sponsored nofollow noopener noreferrer" aria-label="{{if $dialog.Title}}{{$dialog.Title}}{{else}}查看广告{{end}}" data-creative-id="{{$dialog.ID}}">
<img class="dialog-ad-image" src="/static/images/placeholder.png?v=2" data-dialog-ad-src="{{$dialog.Images}}" alt="{{$dialog.Title}}" title="{{$dialog.Title}}" decoding="async" />
</a>
{{else}}
<div class="dialog-ad-media">
<img class="dialog-ad-image" src="/static/images/placeholder.png?v=2" data-dialog-ad-src="{{$dialog.Images}}" alt="{{$dialog.Title}}" title="{{$dialog.Title}}" decoding="async" />
</div>
{{end}}
<button class="dialog-ad-close" type="button" data-dialog-ad-close aria-label="关闭广告">
<img src="/static/images/figma-dialog-ad/close.svg" width="36" height="36" alt="" />
</button>
</div>
{{end}}
</div>
<script defer src="/static/js/pages/dialogAd.js?v=5"></script>
{{end}}
{{end}}
+25
View File
@@ -0,0 +1,25 @@
{{define "downloadAppDialog"}}
<div
class="download-app-dialog-mask"
id="downloadAppDialog"
data-download-app-dialog
data-download-app-url="{{if .appConfig}}{{.appConfig.AppAddr}}{{end}}"
>
<div class="download-app-dialog-stack">
<div class="download-app-dialog-card" role="dialog" aria-modal="true" aria-labelledby="downloadAppDialogTitle">
<picture class="download-app-dialog-brand">
<source media="(max-width: 767px)" srcset="/static/images/figma-dialogs/download-logo-mobile.svg?v=3" />
<img src="/static/images/figma-dialogs/download-logo-pc.svg?v=3" alt="黄果短剧" title="黄果短剧 App" />
</picture>
<div class="download-app-dialog-title" id="downloadAppDialogTitle">扫码下载「黄果短剧 App」</div>
<div class="download-app-dialog-desc">海量短剧,随时畅看</div>
<div class="download-app-dialog-qr" data-download-qr-box aria-label="下载二维码"></div>
<a class="download-app-dialog-url" href="#" target="_blank" rel="sponsored nofollow noopener noreferrer" data-download-url></a>
<a class="download-app-dialog-cta" href="#" target="_blank" rel="sponsored nofollow noopener noreferrer" data-download-app-cta>下载app 免费看</a>
</div>
<button class="download-app-dialog-close" type="button" aria-label="关闭" data-download-app-close>
<img src="/static/images/figma-dialogs/dialog-close.svg" alt="" />
</button>
</div>
</div>
{{end}}
+40
View File
@@ -0,0 +1,40 @@
{{define "downloadAppFloat"}} {{if .appConfig.AppAddr}}
<link rel="stylesheet" href="/static/css/downloadAppFloat.css?v=6" />
<a
class="download-fab"
href="{{.appConfig.AppAddr}}"
target="_blank"
rel="sponsored nofollow noopener noreferrer"
aria-label="下载 App"
>
<img
class="download-fab-icon"
src="/static/images/phone.svg"
alt="下载黄果短剧APP"
/>
<span class="download-fab-text">下载 App</span>
</a>
<script>
(function () {
var button = document.querySelector(".download-fab");
if (!button) return;
var revealTimer = 0;
function reveal() {
revealTimer = 0;
button.classList.remove("is-scrolling");
}
function onScroll() {
button.classList.add("is-scrolling");
if (revealTimer) window.clearTimeout(revealTimer);
revealTimer = window.setTimeout(reveal, 180);
}
window.addEventListener("scroll", onScroll, { passive: true });
document.addEventListener("scroll", onScroll, {
passive: true,
capture: true,
});
})();
</script>
{{end}} {{end}}
+22
View File
@@ -0,0 +1,22 @@
{{define "eightPop"}}
<link rel="stylesheet" href="/static/css/eightPop.css?v=4" />
<div class="eight-pop-mask" id="eightPop" hidden>
<div class="eight-pop-dialog">
<div class="eight-pop-card" role="dialog" aria-modal="true" aria-labelledby="eightPopTitle" aria-describedby="eightPopDesc">
<img class="eight-pop-icon" src="/static/images/figma-age/age-18.svg" width="78" height="78" alt="" />
<div class="eight-pop-copy">
<h2 class="eight-pop-title" id="eightPopTitle">这是个成人网站</h2>
<p class="eight-pop-desc" id="eightPopDesc">本网站包含有年龄限制的内容,包括裸体和露骨色情素材的内容。 点击继续即表示您确认您已年满 18 岁,或在您访问本网站时所在的司法管辖区已是成年人。</p>
</div>
<div class="eight-pop-actions">
<button class="eight-pop-btn eight-pop-btn--confirm" type="button" data-eight-pop-confirm>我已年满18岁-进入</button>
<button class="eight-pop-btn eight-pop-btn--exit" type="button" data-eight-pop-exit>我未满18岁-退出</button>
</div>
</div>
<button class="eight-pop-close" type="button" data-eight-pop-exit aria-label="关闭并退出访问">
<img src="/static/images/figma-age/close.svg" width="36" height="36" alt="" />
</button>
</div>
</div>
<script src="/static/js/pages/eightPop.js?v=4"></script>
{{end}}
+24
View File
@@ -0,0 +1,24 @@
{{define "empty"}}
<link rel="stylesheet" href="/static/css/empty.css">
<div class="empty-state">
<div class="empty-illus" aria-hidden="true">
<div class="empty-illus-glow"></div>
<div class="empty-illus-card">
<div class="empty-illus-line empty-illus-line--1"></div>
<div class="empty-illus-line empty-illus-line--2"></div>
<div class="empty-illus-line empty-illus-line--3"></div>
</div>
<div class="empty-illus-dot empty-illus-dot--1"></div>
<div class="empty-illus-dot empty-illus-dot--2"></div>
<div class="empty-illus-dot empty-illus-dot--3"></div>
</div>
<div class="empty-copy">
<div class="empty-title">{{if .emptyTitle}}{{.emptyTitle}}{{else}}这里还没有内容{{end}}</div>
<div class="empty-desc">{{if .emptyDesc}}{{.emptyDesc}}{{else}}暂时没有找到相关短剧,换个分类或返回首页看看吧{{end}}</div>
</div>
<div class="empty-actions">
<a class="empty-btn empty-btn--primary" href="/">返回首页</a>
<button class="empty-btn empty-btn--secondary" type="button" onclick="location.reload()">重新加载</button>
</div>
</div>
{{end}}
+185
View File
@@ -0,0 +1,185 @@
{{define "footer"}}
<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">
<p>黄果短剧- 全网更新最快最全的短剧!一直致力于免费为广大色友提供最优质的短剧内容,欢迎分享给你的小伙伴们~</p>
<p>© 2005-2026 黄果短剧 品牌. All rights reserved.</p>
</div>
<nav class="home-mobile-footer-links" aria-label="页脚导航">
{{if .footer.NavList}}
{{with index .footer.NavList 0}}
{{if .TranslationList}}
{{template "footerNavItems" .TranslationList}}
{{end}}
{{end}}
{{end}}
</nav>
<div class="home-mobile-footer-divider" aria-hidden="true"></div>
<div class="home-mobile-footer-actions">
<div class="home-mobile-footer-social" aria-label="社交媒体">
<span aria-hidden="true"><img src="/static/images/figma-home/mobile/footer-youtube.svg" width="38" height="38" alt="" /></span>
<span aria-hidden="true"><img src="/static/images/figma-home/mobile/footer-instagram.svg" width="38" height="38" alt="" /></span>
{{if .appConfig.TGGroup}}
<a href="{{.appConfig.TGGroup}}" target="_blank" rel="sponsored nofollow noopener noreferrer" aria-label="Telegram"><img src="/static/images/figma-home/mobile/footer-telegram.svg" width="38" height="38" alt="" /></a>
{{else}}
<span aria-hidden="true"><img src="/static/images/figma-home/mobile/footer-telegram.svg" width="38" height="38" alt="" /></span>
{{end}}
{{if .appConfig.TwitterAddr}}
<a href="{{.appConfig.TwitterAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer" aria-label="X"><img src="/static/images/figma-home/mobile/footer-x.svg" width="38" height="38" alt="" /></a>
{{else}}
<span aria-hidden="true"><img src="/static/images/figma-home/mobile/footer-x.svg" width="38" height="38" alt="" /></span>
{{end}}
</div>
<button class="home-mobile-footer-top" type="button" aria-label="回到顶部">
<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">
<div class="footer-main">
<div class="footer-product">
{{if or .footer.Brand.Title .footer.Brand.Content}}
<div class="footer-brand">
{{if .footer.Brand.Title}}
<a class="footer-brand-lockup" href="/">
<img class="footer-logo" src="/static/images/logo.png?v=3" alt="{{.footer.Brand.Title}}" title="{{.footer.Brand.Title}}" />
</a>
{{end}}
{{if .footer.Brand.Content}}
<div class="footer-muted-text">{{.footer.Brand.Content}}</div>
{{end}}
</div>
{{end}}
{{if or .appConfig.NewURLAddr .appConfig.NewURLAddr1 .appConfig.ForeverURLAddr}}
<div class="footer-contact" aria-label="访问地址">
<div class="footer-col-title">访问地址</div>
{{if .appConfig.NewURLAddr}}
<a class="footer-contact-line" href="{{.appConfig.NewURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer"><span class="footer-contact-label">最新地址</span><span class="footer-contact-url">{{.appConfig.NewURLAddr}}</span></a>
{{end}}
{{if .appConfig.NewURLAddr1}}
<a class="footer-contact-line" href="{{.appConfig.NewURLAddr1}}" target="_blank" rel="sponsored nofollow noopener noreferrer"><span class="footer-contact-label">备用地址</span><span class="footer-contact-url">{{.appConfig.NewURLAddr1}}</span></a>
{{end}}
{{if .appConfig.ForeverURLAddr}}
<a class="footer-contact-line" href="{{.appConfig.ForeverURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer"><span class="footer-contact-label">海外永久地址</span><span class="footer-contact-url">{{.appConfig.ForeverURLAddr}}</span></a>
{{end}}
</div>
{{end}}
</div>
{{if .footer.NavList}}
{{with index .footer.NavList 0}}
{{if .TranslationList}}
<div class="footer-nav-col">
<div class="footer-col-title">帮助与支持</div>
<nav class="footer-links footer-muted-text" aria-label="页脚导航">
{{template "footerNavItems" .TranslationList}}
</nav>
</div>
{{end}}
{{end}}
{{end}}
</div>
<div class="footer-divider"></div>
<div class="footer-bottom">
{{if .footer.Brand.Title}}
<div class="footer-copy">© 2005-2026 {{.footer.Brand.Title}}. All rights reserved.</div>
{{end}}
{{if or .appConfig.TwitterAddr .appConfig.TGGroup}}
<div class="footer-social">
<div class="footer-social-label">联系我们</div>
<div class="footer-icons">
{{if .appConfig.TwitterAddr}}
<a class="footer-icon-link" href="{{.appConfig.TwitterAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer" aria-label="X">
<img class="footer-icon-outer" src="/static/images/x.svg" alt="X" />
</a>
{{end}}
{{if and .appConfig.TwitterAddr .appConfig.TGGroup}}
<div class="footer-icon-divider"></div>
{{end}}
{{if .appConfig.TGGroup}}
<a class="footer-icon-link" href="{{.appConfig.TGGroup}}" target="_blank" rel="sponsored nofollow noopener noreferrer" aria-label="Telegram">
<img class="footer-icon-outer" src="/static/images/tg.svg" alt="Telegram" />
</a>
{{end}}
</div>
</div>
{{end}}
<div class="footer-social-home" aria-label="合作与社交媒体">
{{if .appConfig.Telegram}}
<a class="footer-social-home-item" href="{{.appConfig.Telegram}}"{{if hasPrefix .appConfig.Telegram "http"}} target="_blank" rel="sponsored nofollow noopener noreferrer"{{end}} aria-label="商户合作"><img src="/static/images/figma-home/social-instagram.svg" alt="" /></a>
{{else}}
<span class="footer-social-home-item" aria-hidden="true"><img src="/static/images/figma-home/social-instagram.svg" alt="" /></span>
{{end}}
{{if .appConfig.TGGroup}}
<a class="footer-social-home-item" href="{{.appConfig.TGGroup}}" target="_blank" rel="sponsored nofollow noopener noreferrer" aria-label="Telegram"><img src="/static/images/figma-home/social-telegram.svg" alt="" /></a>
{{else}}
<span class="footer-social-home-item" aria-hidden="true"><img src="/static/images/figma-home/social-telegram.svg" alt="" /></span>
{{end}}
{{if .appConfig.TwitterAddr}}
<a class="footer-social-home-item" href="{{.appConfig.TwitterAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer" aria-label="X"><img src="/static/images/figma-home/social-x.svg" alt="" /></a>
{{else}}
<span class="footer-social-home-item" aria-hidden="true"><img src="/static/images/figma-home/social-x.svg" alt="" /></span>
{{end}}
</div>
</div>
</div>
</footer>
<nav class="h5-tabbar" aria-label="底部导航">
<a class="h5-tabbar-item{{if eq .navActive "home"}} is-active{{end}}" href="/">
<img class="h5-tabbar-icon" src="/static/images/tab_home{{if eq .navActive "home"}}_a{{end}}.svg" alt="主页" />
<span>主页</span>
</a>
<a class="h5-tabbar-item{{if eq .navActive "rank"}} is-active{{end}}" href="/rank/">
<img class="h5-tabbar-icon" src="/static/images/tab_rb{{if eq .navActive "rank"}}_a{{end}}.svg" alt="热榜" />
<span>热榜</span>
</a>
<a class="h5-tabbar-item{{if eq .navActive "list"}} is-active{{end}}" href="/list/ai-short-play/">
<img class="h5-tabbar-icon" src="/static/images/tab_pk{{if eq .navActive "list"}}_a{{end}}.svg" alt="片库" />
<span>片库</span>
</a>
<a class="h5-tabbar-item{{if eq .navActive "todayUpdate"}} is-active{{end}}" href="/today-update/">
<img class="h5-tabbar-icon" src="/static/images/tab_zx{{if eq .navActive "todayUpdate"}}_a{{end}}.svg" alt="最新" />
<span>最新</span>
</a>
<a class="h5-tabbar-item{{if eq .navActive "downloadApp"}} is-active{{end}}" href="{{if .appConfig.AppAddr}}{{.appConfig.AppAddr}}{{else}}/download-app/{{end}}"{{if .appConfig.AppAddr}} target="_blank" rel="sponsored nofollow noopener noreferrer"{{end}} data-download-app-open>
<img class="h5-tabbar-icon" src="/static/images/tab_app{{if eq .navActive "downloadApp"}}_a{{end}}.svg" alt="下载APP" />
<span>下载APP</span>
</a>
</nav>
<noscript>
<div><img src="https://mc.yandex.ru/watch/112967594" style="position:absolute; left:-9999px;" alt="" /></div>
</noscript>
{{template "scrollToTop" .}}
{{template "downloadAppFloat" .}}
<script defer src="/static/js/pages/footer.js?v=2"></script>
{{template "pageConsole" .}}
{{end}}
{{define "footerNavItems"}}
{{range .}}
{{if .Name}}
{{$footerHref := footerLinkURL .Name .URLValue}}
{{if $footerHref}}
{{if footerLinkIsExternal $footerHref}}
<a href="{{$footerHref}}" target="_blank" rel="sponsored nofollow noopener noreferrer">{{.Name}}</a>
{{else}}
<a href="{{$footerHref}}">{{.Name}}</a>
{{end}}
{{end}}
{{end}}
{{end}}
{{end}}
+173
View File
@@ -0,0 +1,173 @@
{{define "header"}}
<link rel="stylesheet" href="/static/css/header.css?v=17" />
<header class="site-header">
<div class="header-inner">
<button
class="header-menu-button"
type="button"
aria-label="打开导航菜单"
aria-controls="homeMobileMenu"
aria-expanded="false"
hidden
>
<img src="/static/images/figma-home/mobile/menu.svg" alt="" />
</button>
<a class="brand-lockup" href="/">
<img class="brand-logo" src="/static/images/logo.png?v=3" alt="黄果短剧" title="黄果短剧" />
</a>
<div class="header-nav">
{{range .headerNav}} {{if .IsDownload}} {{if $.appConfig.AppAddr}}
<a
class="{{if .IsActive}}nav-link-active{{else}}nav-link{{end}}"
href="{{$.appConfig.AppAddr}}"
target="_blank"
rel="sponsored nofollow noopener noreferrer"
data-download-app-open
data-download-app-url="{{$.appConfig.AppAddr}}"
{{if .IsActive}}aria-current="page"{{end}}
>{{.Name}}</a
>
{{end}} {{else if .IsExternal}}
<a
class="{{if .IsActive}}nav-link-active{{else}}nav-link{{end}}"
href="{{.Href}}"
target="_blank"
rel="sponsored nofollow noopener noreferrer"
{{if .IsActive}}aria-current="page"{{end}}
>{{.Name}}</a
>
{{else}}
<a
class="{{if .IsActive}}nav-link-active{{else}}nav-link{{end}}"
href="{{.Href}}"
{{if .IsActive}}aria-current="page"{{end}}
>{{.Name}}</a
>
{{end}} {{end}}
</div>
<div class="header-gap"></div>
<form class="header-search" action="/search/" method="get">
<img
class="search-icon-wrap search-icon-wrap--pc"
src="/static/images/search.svg"
alt="搜索"
/>
<input
class="search-input"
type="search"
name="q"
value="{{if .query}}{{.query}}{{end}}"
placeholder="{{if eq .navActive "home"}}搜索你感兴趣的内容{{else}}搜索剧名、题材或标签{{end}}"
autocomplete="off"
aria-controls="headerSearchPopover"
aria-expanded="false"
/>
</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>
<span hidden data-app-download-url="{{.appConfig.AppAddr}}"></span>
</div>
</header>
<aside
class="header-search-popover"
id="headerSearchPopover"
data-header-search-popover
role="dialog"
aria-modal="false"
aria-labelledby="headerSearchHistoryTitle"
hidden
>
<section class="header-search-history">
<div class="header-search-popover-heading">
<h3 id="headerSearchHistoryTitle">搜索记录</h3>
<div class="header-search-popover-actions">
<button type="button" class="header-search-clear" data-search-history-clear>清除</button>
<button type="button" class="header-search-close" data-header-search-close aria-label="关闭搜索推荐">
<img src="/static/images/figma-search/search-popover-close.svg" width="20" height="20" alt="" />
</button>
</div>
</div>
<div class="header-search-history-tags" data-search-history-list></div>
</section>
<div class="header-search-popover-divider" aria-hidden="true"></div>
<section class="header-search-hot" aria-labelledby="headerSearchHotTitle">
<h3 id="headerSearchHotTitle">热搜榜</h3>
<div class="header-search-hot-list" data-search-hot-list aria-live="polite"></div>
</section>
<div class="header-search-popover-divider" aria-hidden="true"></div>
<section class="header-search-guess" aria-labelledby="headerSearchGuessTitle">
<div class="header-search-popover-heading">
<h3 id="headerSearchGuessTitle">猜你喜欢</h3>
<button type="button" class="header-search-change" data-search-guess-change>换一换</button>
</div>
<div class="header-search-guess-list" data-search-guess-list aria-live="polite"></div>
</section>
</aside>
<div class="home-mobile-menu" id="homeMobileMenu" hidden>
<button class="home-mobile-menu-backdrop" type="button" data-home-menu-close aria-label="关闭导航菜单"></button>
<aside class="home-mobile-menu-panel" role="dialog" aria-modal="true" aria-label="站点导航">
<button class="home-mobile-menu-close" type="button" data-home-menu-close aria-label="关闭导航菜单">
<img src="/static/images/figma-home/mobile/drawer-close.svg" width="24" height="24" alt="" />
</button>
<a class="home-mobile-menu-logo" href="/" aria-label="黄果短剧首页">
<img src="/static/images/figma-home/mobile/drawer-logo.png?v=3" width="138" height="36" alt="黄果短剧" title="黄果短剧" />
</a>
<nav class="home-mobile-menu-links" aria-label="移动端导航">
<a class="{{if eq .resolvedNavActive "home"}}is-active{{end}}" href="/"{{if eq .resolvedNavActive "home"}} aria-current="page"{{end}}>首页</a>
<a class="{{if or (eq .resolvedNavActive "aiShortPlay") (eq .resolvedNavActive "list")}}is-active{{end}}" href="/list/ai-short-play/"{{if or (eq .resolvedNavActive "aiShortPlay") (eq .resolvedNavActive "list")}} aria-current="page"{{end}}>AI成人短剧</a>
<a class="{{if eq .resolvedNavActive "aiSeries"}}is-active{{end}}" href="/series/"{{if eq .resolvedNavActive "aiSeries"}} aria-current="page"{{end}}>AI成人剧集</a>
<a class="{{if eq .resolvedNavActive "topic"}}is-active{{end}}" href="/topic/"{{if eq .resolvedNavActive "topic"}} aria-current="page"{{end}}>专题</a>
<a class="{{if eq .resolvedNavActive "rank"}}is-active{{end}}" href="/rank/"{{if eq .resolvedNavActive "rank"}} aria-current="page"{{end}}>排行榜</a>
<a class="{{if eq .resolvedNavActive "homeRoad"}}is-active{{end}}" href="/home-road/"{{if eq .resolvedNavActive "homeRoad"}} aria-current="page"{{end}}>回家的路</a>
<a class="{{if eq .resolvedNavActive "application"}}is-active{{end}}" href="/application/"{{if eq .resolvedNavActive "application"}} aria-current="page"{{end}}>福利应用</a>
</nav>
<div class="home-mobile-menu-contact">
{{if .appConfig.GmailAddr}}<div>E-mail:<a href="mailto:{{.appConfig.GmailAddr}}">{{.appConfig.GmailAddr}}</a></div>{{end}}
{{$businessHref := footerContactURL "商务合作" "" .appConfig.GmailAddr .appConfig.TGGroup .appConfig.CustomerServiceHost}}
<div>{{if $businessHref}}<a href="{{$businessHref}}"{{if hasPrefix $businessHref "http"}} target="_blank" rel="sponsored nofollow noopener noreferrer"{{end}}>商务合作</a>{{else}}<span>商务合作</span>{{end}}</div>
<div>{{if .appConfig.TGGroup}}<a href="{{.appConfig.TGGroup}}" target="_blank" rel="sponsored nofollow noopener noreferrer">官方群</a>{{else}}<span>官方群</span>{{end}}</div>
</div>
<div class="home-mobile-menu-social" aria-label="社交媒体">
{{if .appConfig.TwitterAddr}}
<a href="{{.appConfig.TwitterAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer" aria-label="X"><img src="/static/images/figma-home/mobile/drawer-x.svg" width="24" height="24" alt="" /></a>
{{else}}
<span aria-hidden="true"><img src="/static/images/figma-home/mobile/drawer-x.svg" width="24" height="24" alt="" /></span>
{{end}}
<span class="home-mobile-menu-social-divider" aria-hidden="true"></span>
{{if .appConfig.TGGroup}}
<a href="{{.appConfig.TGGroup}}" target="_blank" rel="sponsored nofollow noopener noreferrer" aria-label="Telegram"><img src="/static/images/figma-home/mobile/drawer-telegram.svg" width="24" height="24" alt="" /></a>
{{else}}
<span aria-hidden="true"><img src="/static/images/figma-home/mobile/drawer-telegram.svg" width="24" height="24" alt="" /></span>
{{end}}
</div>
</aside>
</div>
<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=10"></script>
<script defer src="/static/js/pages/dialogLoader.js?v=7"></script>
{{template "toast" .}} {{template "eightPop" .}} {{template "dialogAd" .}} {{end}}
+30
View File
@@ -0,0 +1,30 @@
{{define "homeAdRow"}}
{{$ads := .Ads}}
{{if $ads}}
<link rel="stylesheet" href="/static/css/homeAdRow.css?v=3" />
<div
class="home-ad-row{{if .ExtraClass}} {{.ExtraClass}}{{end}}"
aria-label="{{if .Label}}{{.Label}}{{else}}广告{{end}}"
>
{{range $ad := $ads}}
<a
class="home-ad-banner"
{{if $ad.Link}}href="{{$ad.Link}}"
target="_blank"
rel="sponsored nofollow noopener noreferrer"
{{else}}aria-disabled="true"
{{end}}
data-creative-id="{{$ad.ID}}"
>
<img
class="lazy"
src="/static/images/placeholder.png?v=2"
data-src="{{$ad.Images}}"
alt="{{$ad.Title}}"
title="{{$ad.Title}}"
/>
</a>
{{end}}
</div>
{{end}}
{{end}}
+1
View File
@@ -0,0 +1 @@
{{define "pageConsole"}}{{end}}
+67
View File
@@ -0,0 +1,67 @@
{{define "pagination"}}
<link rel="stylesheet" href="/static/css/pagination.css?v=3">
{{if .pagination}}
{{if .pagination.Visible}}
<nav class="pagination" aria-label="分页" data-pagination data-page="{{.pagination.Page}}" data-total="{{.pagination.TotalPages}}">
{{if .pagination.HasPrev}}
<a class="pagination-btn pagination-btn--arrow" href="{{.pagination.PrevURL}}" aria-label="上一页">
<img class="pagination-arrow" src="/static/images/page_prev.svg" alt="上一页" />
</a>
{{else}}
<span class="pagination-btn pagination-btn--arrow is-disabled" aria-disabled="true" aria-label="上一页">
<img class="pagination-arrow" src="/static/images/page_prev.svg" alt="上一页" />
</span>
{{end}}
{{range .pagination.Items}}
{{if .Dots}}
<span class="pagination-ellipsis">…</span>
{{else if .Active}}
<span class="pagination-btn pagination-btn--active{{if gt (len .Label) 1}} pagination-btn--wide{{end}}" aria-current="page">{{.Label}}</span>
{{else}}
<a class="pagination-btn{{if gt (len .Label) 1}} pagination-btn--wide{{end}}" href="{{.URL}}">{{.Label}}</a>
{{end}}
{{end}}
{{if .pagination.HasNext}}
<a class="pagination-btn pagination-btn--arrow" href="{{.pagination.NextURL}}" aria-label="下一页">
<img class="pagination-arrow" src="/static/images/page_next.svg" alt="下一页" />
</a>
{{else}}
<span class="pagination-btn pagination-btn--arrow is-disabled" aria-disabled="true" aria-label="下一页">
<img class="pagination-arrow" src="/static/images/page_next.svg" alt="下一页" />
</span>
{{end}}
<form class="pagination-jump" data-pagination-jump action="" method="get">
<span class="pagination-jump-label">前往</span>
<input class="pagination-jump-input" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" name="page" autocomplete="off" aria-label="页码" />
<span class="pagination-jump-label">页</span>
<button class="pagination-jump-submit" type="submit">确定</button>
</form>
</nav>
<script src="/static/js/pages/pagination.js"></script>
{{end}}
{{else}}
<nav class="pagination" aria-label="分页" data-pagination data-page="1" data-total="11">
<button class="pagination-btn pagination-btn--arrow" type="button" aria-label="上一页">
<img class="pagination-arrow" src="/static/images/page_prev.svg" alt="上一页" />
</button>
<button class="pagination-btn pagination-btn--active" type="button">1</button>
<button class="pagination-btn" type="button">2</button>
<button class="pagination-btn" type="button">3</button>
<span class="pagination-ellipsis">…</span>
<button class="pagination-btn pagination-btn--wide" type="button">11</button>
<button class="pagination-btn pagination-btn--arrow" type="button" aria-label="下一页">
<img class="pagination-arrow" src="/static/images/page_next.svg" alt="下一页" />
</button>
<form class="pagination-jump" data-pagination-jump action="" method="get">
<span class="pagination-jump-label">前往</span>
<input class="pagination-jump-input" type="text" inputmode="numeric" pattern="[0-9]*" maxlength="4" name="page" value="6" autocomplete="off" aria-label="页码" />
<span class="pagination-jump-label">页</span>
<button class="pagination-jump-submit" type="submit">确定</button>
</form>
</nav>
<script src="/static/js/pages/pagination.js"></script>
{{end}}
{{end}}
+6
View File
@@ -0,0 +1,6 @@
{{define "posterCardTag"}}
{{$tags := cardTags .}}
{{if $tags}}<span class="poster-card-tags">{{range $tags}}
{{if .URL}}<span class="poster-card-tag" data-tag-href="{{.URL}}" onclick="event.preventDefault();event.stopPropagation();window.location.href=this.getAttribute('data-tag-href');return false;">{{.Name}}</span>{{else}}<span class="poster-card-tag">{{.Name}}</span>{{end}}
{{end}}</span>{{end}}
{{end}}
@@ -0,0 +1,13 @@
{{define "posterCornerBadges"}}
{{if or .IsFeatured .IsRecommend .IsNew}}
<div class="poster-corner-badges">
{{if .IsFeatured}}
<img class="poster-flag-badge" src="/static/images/flag_bj.png" width="56" height="34" alt="爆剧" />
{{else if .IsRecommend}}
<img class="poster-flag-badge" src="/static/images/flag_yc.png" width="56" height="34" alt="原创" />
{{else if .IsNew}}
<img class="poster-flag-badge" src="/static/images/flag_xj.png" width="56" height="34" alt="最新" />
{{end}}
</div>
{{end}}
{{end}}
+6
View File
@@ -0,0 +1,6 @@
{{define "posterLikeBadge"}}
<div class="poster-like-badge">
<img class="poster-like-badge-icon" src="/static/images/list_count_like.png" alt="点赞数" />
<span class="poster-like-badge-count">{{formatLikeCount .CountLike}}</span>
</div>
{{end}}
+6
View File
@@ -0,0 +1,6 @@
{{define "rankingCardTag"}}
{{$tags := cardTags .}}
{{if $tags}}<span class="ranking-card-tags">{{range $tags}}
{{if .URL}}<span class="ranking-card-tag" data-tag-href="{{.URL}}" onclick="event.preventDefault();event.stopPropagation();window.location.href=this.getAttribute('data-tag-href');return false;">{{.Name}}</span>{{else}}<span class="ranking-card-tag">{{.Name}}</span>{{end}}
{{end}}</span>{{end}}
{{end}}
+7
View File
@@ -0,0 +1,7 @@
{{define "scrollToTop"}}
<link rel="stylesheet" href="/static/css/scrollToTop.css?v=3">
<button class="floating-action" id="scrollToTopButton" type="button">
<img class="floating-action-icon" src="/static/images/to_top.svg" width="24" height="24" alt="返回顶部" />
</button>
<script defer src="/static/js/scrollToTop.js"></script>
{{end}}
+21
View File
@@ -0,0 +1,21 @@
{{define "searchDialog"}}
<div class="search-dialog-mask" id="searchDialog" aria-hidden="true">
<div class="search-dialog-card" role="dialog" aria-modal="true" aria-label="搜索">
<form class="search-dialog-form" action="/search/" method="get" data-search-dialog-form>
<div class="search-dialog-bar">
<input
class="search-dialog-input"
type="search"
name="q"
placeholder="输入你想搜索的关键词.."
autocomplete="off"
data-search-dialog-input
/>
<button class="search-dialog-submit" type="submit" data-search-dialog-submit>
搜索
</button>
</div>
</form>
</div>
</div>
{{end}}
+75
View File
@@ -0,0 +1,75 @@
{{define "seoCommon"}} {{/* 全站 SEO 公共头:验证码 / OG / 移动适配 / 性能提示 /
百度推送 */}}
<meta name="renderer" content="webkit" />
<meta name="force-rendering" content="webkit" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="format-detection" content="telephone=no,email=no" />
<meta name="applicable-device" content="pc,mobile" />
<meta name="MobileOptimized" content="width" />
<meta name="HandheldFriendly" content="true" />
<meta name="theme-color" content="#0A0A0A" />
<meta name="color-scheme" content="dark" />
<meta
name="robots"
content="{{if .robots}}{{.robots}}{{else if .noindex}}noindex,follow{{else}}index,follow,max-image-preview:large,max-snippet:-1,max-video-preview:-1{{end}}"
/>
<meta
name="google-site-verification"
content="{{if .isNavPage}}UEtS2h9mIjbFSM_VHEciNQ5iWuFPq9d-Q2WO0SFyPAw{{else}}r7geXn5kBugzOSLZzyw4v3NBDMQwAmzFCVkqp92odh0{{end}}"
/>
{{if .seoVerify.Baidu}}<meta
name="baidu-site-verification"
content="{{.seoVerify.Baidu}}"
/>{{end}}
<meta name="msvalidate.01" content="427637FF44FBAB9D82DB3E5F4E9BA800" />
<meta name="yandex-verification" content="{{if .isNavPage}}eafd02fb6517fc76{{else}}6bb06ed5659790d0{{end}}" />
<meta
property="og:site_name"
content="{{if .appConfig.SeoInfo.WebSiteName}}{{.appConfig.SeoInfo.WebSiteName}}{{else}}黄果短剧{{end}}"
/>
<meta property="og:locale" content="zh_CN" />
<meta name="twitter:card" content="summary_large_image" />
{{if .canonicalURL}}
<link rel="canonical" href="{{.canonicalURL}}" />
<meta property="og:url" content="{{.canonicalURL}}" />
{{end}}
{{if .paginationPrevURL}}<link rel="prev" href="{{.paginationPrevURL}}" />{{end}}
{{if .paginationNextURL}}<link rel="next" href="{{.paginationNextURL}}" />{{end}}
<link rel="dns-prefetch" href="//zz.bdstatic.com" />
<link rel="preconnect" href="https://zz.bdstatic.com" crossorigin />
<link rel="icon" href="/favicon.svg?v=3" type="image/svg+xml" sizes="any" />
<link rel="icon" href="/favicon.png?v=3" type="image/png" sizes="512x512" />
<link rel="icon" href="/favicon.ico?v=3" type="image/x-icon" sizes="256x256" />
<link rel="apple-touch-icon" href="/favicon.png?v=3" />
{{/* 首屏壳层:合并 base+header+footer+eightPop,减少弱网 RTT(改源文件后跑
scripts/build-shell-css.sh) */}}
<link rel="stylesheet" href="/static/css/shell.css?v=3" />
<style>
/* 弹窗依赖 CSS 隐藏;在完整弹窗样式到达前先压住,避免无样式闪现 */
.download-app-dialog-mask:not(.is-open),
.search-dialog-mask:not(.is-open) {
display: none !important;
}
</style>
{{template "analytics" .}}
<script>
(function () {
function injectBaiduPush() {
var bp = document.createElement("script");
bp.async = true;
bp.src =
location.protocol === "https:"
? "https://zz.bdstatic.com/linksubmit/push.js"
: "http://push.zhanzhang.baidu.com/push.js";
document.head.appendChild(bp);
}
if ("requestIdleCallback" in window) {
requestIdleCallback(injectBaiduPush, { timeout: 3000 });
} else {
window.addEventListener("load", function () {
setTimeout(injectBaiduPush, 800);
});
}
})();
</script>
{{end}}
+48
View File
@@ -0,0 +1,48 @@
{{define "squarePromo"}}
{{$ads := .Ads}}
{{if $ads}}
<link rel="stylesheet" href="/static/css/squarePromo.css?v=1" />
<section
class="square-promo{{if .PCOnly}} square-promo--pc-only{{end}}"
aria-label="{{if .Label}}{{.Label}}{{else}}推广应用{{end}}"
data-square-promo
>
<div class="square-promo__track">
<div class="square-promo__group">
{{range $ad := $ads}}
<a
class="square-promo__item"
{{if $ad.Link}}href="{{$ad.Link}}"
target="_blank"
rel="sponsored nofollow noopener noreferrer"
{{else}}aria-disabled="true"
{{end}}
data-creative-id="{{$ad.ID}}"
>
<span class="square-promo__cover">
<img
class="lazy"
src="/static/images/placeholder.png?v=2"
data-src="{{$ad.Images}}"
alt="{{$ad.Title}}"
title="{{$ad.Title}}"
/>
</span>
<span class="square-promo__title">{{$ad.Title}}</span>
</a>
{{end}}
</div>
</div>
</section>
<script>
(function () {
if (document.querySelector("script[data-square-promo-js]")) return;
var s = document.createElement("script");
s.src = "/static/js/squarePromo.js?v=1";
s.defer = true;
s.setAttribute("data-square-promo-js", "1");
document.head.appendChild(s);
})();
</script>
{{end}}
{{end}}
+5
View File
@@ -0,0 +1,5 @@
{{define "toast"}}
<link rel="stylesheet" href="/static/css/toast.css">
<div class="toast-host" id="toastHost" role="region" aria-label="通知" aria-live="polite" aria-relevant="additions"></div>
<script defer src="/static/js/pages/toast.js"></script>
{{end}}
+61
View File
@@ -0,0 +1,61 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{template "seoCommon" .}}
<title>{{if .title}}{{.title}}{{else}}页面未找到{{end}} - 黄果短剧</title>
<meta
name="description"
content="抱歉,你访问的页面不存在或已下线,可返回黄果短剧首页继续浏览短剧 - 黄果短剧"
/>
<meta name="keywords" content="404,页面未找到,黄果短剧" />
<meta property="og:type" content="website" />
<meta
property="og:title"
content="{{if .title}}{{.title}}{{else}}页面未找到{{end}} - 黄果短剧"
/>
<meta
property="og:description"
content="抱歉,你访问的页面不存在或已下线,可返回黄果短剧首页继续浏览短剧。"
/>
<link rel="stylesheet" href="/static/css/404.css?v=6" />
</head>
<body class="site-shell not-found-layout is-404-page">
{{template "header" .}}
<main class="not-found-page">
<div class="not-found-card">
<div class="not-found-code" aria-hidden="true">404</div>
<div class="not-found-badge">
<span class="not-found-badge-text">页面走丢了</span>
</div>
<h1 class="not-found-title">
{{if .title}}{{.title}}{{else}}抱歉,没有找到这个页面{{end}}
</h1>
<p class="not-found-desc">页面可能已被删除、链接已失效,或暂时无法访问</p>
<form class="not-found-search" action="/search/" method="get">
<input
class="not-found-search-input"
type="search"
name="q"
placeholder="搜索想看的短剧"
autocomplete="off"
aria-label="搜索想看的短剧"
/>
<button class="not-found-search-btn" type="submit">搜索</button>
</form>
<div class="not-found-actions">
<a class="not-found-btn-primary" href="/">返回首页</a>
<button
class="not-found-btn-secondary"
type="button"
onclick="history.back()"
>
返回上一页
</button>
</div>
</div>
</main>
{{template "footer" .}}
</body>
</html>
+141
View File
@@ -0,0 +1,141 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{template "seoCommon" .}}
<title>关于我们 - 黄果短剧</title>
<meta
name="description"
content="了解黄果短剧:专注优质短剧内容平台,为用户提供高清、流畅的在线观影体验 - 黄果短剧"
/>
<meta name="keywords" content="关于我们,黄果短剧介绍,短剧平台" />
<meta property="og:type" content="website" />
<meta property="og:title" content="关于我们 - 黄果短剧" />
<meta
property="og:description"
content="了解黄果短剧:专注优质短剧内容平台,为用户提供高清、流畅的在线观影体验。"
/>
{{if .jsonLD}}
<script type="application/ld+json">
{{.jsonLD}}
</script>
{{end}}
<link rel="stylesheet" href="/static/css/contentPage.css?v=11" />
</head>
<body class="site-shell content-layout is-about-page">
{{template "header" .}}
<main class="content-page about-page">
<div class="content-pc">
<nav class="content-breadcrumb" aria-label="面包屑">
<a class="content-breadcrumb-link" href="/">首页</a>
<span class="content-breadcrumb-sep">/</span>
<span class="content-breadcrumb-current">关于我们</span>
</nav>
<div class="content-head">
<h1 class="content-title">关于我们</h1>
<p class="content-subtitle">了解黄果短剧的品牌、产品与服务</p>
</div>
</div>
<header class="content-nav">
<a
class="content-nav-back"
href="javascript:history.back()"
aria-label="返回"
>
<img src="/static/images/back.svg" alt="返回" />
</a>
<div class="content-nav-title">关于我们</div>
<span class="content-nav-spacer" aria-hidden="true"></span>
</header>
<div class="content-main">
<article class="content-card about-article">
<section class="content-section">
<h2 class="content-section-title">品牌介绍</h2>
<p class="content-section-text">
黄果短剧是面向短剧爱好者打造的在线内容平台,聚合丰富题材与优质作品,为用户提供清晰、便捷且沉浸的观看体验。
</p>
<p class="content-section-text">
我们关注每一次真实的情绪共鸣,也重视创作者与观众之间的连接,让好故事更快被看见。
</p>
</section>
<div class="content-divider"></div>
<section class="content-section">
<h2 class="content-section-title">产品愿景</h2>
<p class="content-section-text">
以简洁可靠的产品体验连接内容、创作者与观众,持续优化搜索、追剧、收藏、观看记录和多端同步等核心能力。
</p>
<p class="content-section-text content-section-text--accent">
品牌主张:每一帧都能解你的色
</p>
</section>
<div class="content-divider"></div>
<section class="content-section">
<h2 class="content-section-title">联系我们</h2>
<p class="content-section-text">
商务合作:business@qimengshorts.com
</p>
<p class="content-section-text">
用户反馈:support@qimengshorts.com
</p>
<p class="content-section-text">服务时间:工作日 10:00–18:00</p>
</section>
<div class="content-updated">最后更新:2026年7月23日</div>
</article>
<section class="about-contact-card" aria-label="联系我们">
{{if .appConfig.Telegram}}
<a class="about-contact-item" href="{{.appConfig.Telegram}}"{{if hasPrefix .appConfig.Telegram "http"}} target="_blank" rel="sponsored nofollow noopener noreferrer"{{end}}>
<img class="about-contact-icon" src="/static/images/au_swhz.svg" alt="" />
<span class="about-contact-label">商务合作</span>
</a>
{{else}}
<span class="about-contact-item"><img class="about-contact-icon" src="/static/images/au_swhz.svg" alt="" /><span class="about-contact-label">商务合作</span></span>
{{end}}
{{if .appConfig.GmailAddr}}
<a class="about-contact-item" href="mailto:{{.appConfig.GmailAddr}}">
<img class="about-contact-icon" src="/static/images/au_yx.svg" alt="" />
<span class="about-contact-label">邮箱</span>
</a>
{{else}}
<span class="about-contact-item"><img class="about-contact-icon" src="/static/images/au_yx.svg" alt="" /><span class="about-contact-label">邮箱</span></span>
{{end}}
{{if .appConfig.TwitterAddr}}
<a class="about-contact-item" href="{{.appConfig.TwitterAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">
<img class="about-contact-icon" src="/static/images/au_tt.svg" alt="" />
<span class="about-contact-label">推特</span>
</a>
{{else}}
<span class="about-contact-item"><img class="about-contact-icon" src="/static/images/au_tt.svg" alt="" /><span class="about-contact-label">推特</span></span>
{{end}}
{{if .appConfig.TGGroup}}
<a class="about-contact-item" href="{{.appConfig.TGGroup}}" target="_blank" rel="sponsored nofollow noopener noreferrer">
<img class="about-contact-icon" src="/static/images/au_tgq.svg" alt="" />
<span class="about-contact-label">TG群</span>
</a>
{{else}}
<span class="about-contact-item"><img class="about-contact-icon" src="/static/images/au_tgq.svg" alt="" /><span class="about-contact-label">TG群</span></span>
{{end}}
{{if .appConfig.AppAddr}}
<a class="about-contact-item" href="{{.appConfig.AppAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">
<img class="about-contact-icon" src="/static/images/au_app.svg" alt="" />
<span class="about-contact-label">APP</span>
</a>
{{else}}
<span class="about-contact-item"><img class="about-contact-icon" src="/static/images/au_app.svg" alt="" /><span class="about-contact-label">APP</span></span>
{{end}}
{{if .appConfig.PotaoGroup}}
<a class="about-contact-item" href="{{.appConfig.PotaoGroup}}"{{if hasPrefix .appConfig.PotaoGroup "http"}} target="_blank" rel="sponsored nofollow noopener noreferrer"{{end}}>
<img class="about-contact-icon" src="/static/images/au_flyy.svg" alt="" />
<span class="about-contact-label">福利应用</span>
</a>
{{else}}
<span class="about-contact-item"><img class="about-contact-icon" src="/static/images/au_flyy.svg" alt="" /><span class="about-contact-label">福利应用</span></span>
{{end}}
</section>
</div>
</main>
{{template "footer" .}}
</body>
</html>
+131
View File
@@ -0,0 +1,131 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{template "seoCommon" .}}
<title>
{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .title}}{{.title}} - 黄果短剧{{else}}福利应用 - 黄果短剧{{end}}
</title>
<meta
name="description"
content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}黄果短剧福利应用中心,精选实用应用与福利入口,发现更多优质内容与服务 - 黄果短剧{{end}}"
/>
<meta name="keywords" content="{{if .seoInfo.Keywords}}{{joinStrings .seoInfo.Keywords ","}}{{else}}福利应用,应用推荐,黄果短剧,实用工具{{end}}" />
<meta property="og:type" content="website" />
<meta
property="og:title"
content="{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .title}}{{.title}} - 黄果短剧{{else}}福利应用 - 黄果短剧{{end}}"
/>
<meta
property="og:description"
content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}黄果短剧福利应用中心,精选实用应用与福利入口。{{end}}"
/>
{{if .jsonLD}}
<script type="application/ld+json">
{{.jsonLD}}
</script>
{{end}}
<link rel="stylesheet" href="/static/css/application.css?v=9" />
</head>
<body class="site-shell application-page-body has-h5-tabbar">
{{template "header" .}}
<main class="application-page">
<nav class="application-breadcrumb" aria-label="面包屑">
<a href="/">首页</a>
<span aria-hidden="true">/</span>
<span aria-current="page">福利应用</span>
</nav>
<h1 class="application-page-title">福利应用</h1>
{{if .categories}}
<nav class="app-category-tabs" aria-label="应用分类">
{{range $i, $cat := .categories}}
<button
type="button"
class="app-category-tab{{if eq $i 0}} app-category-tab--active{{end}}"
data-target="{{$cat.SectionID}}"
aria-selected="{{if eq $i 0}}true{{else}}false{{end}}"
>
{{$cat.Title}}
</button>
{{end}}
</nav>
{{range $i, $cat := .categories}}
<section
class="app-list-section"
id="{{$cat.SectionID}}"
data-total="{{$cat.Total}}"
>
<div class="app-list-section__head">
<h2 class="app-list-section__title">{{$cat.Title}}</h2>
{{if $cat.Intro}}
<p
class="app-list-section__subtitle{{if $cat.IsFirst}} app-list-section__subtitle--bold{{end}}"
>
{{$cat.Intro}}
</p>
{{end}}
</div>
<div class="app-card-grid app-card-grid--collapsible">
{{range $cat.Apps}}
<a
class="app-card"
href="{{.URL}}"
target="_blank"
rel="sponsored nofollow noopener noreferrer"
aria-label="{{.Name}}"
>
<div class="app-card__icon-wrap">
{{if .Logo}}
<img
src="/static/images/placeholder.png?v=2"
class="app-card__icon lazy"
data-src="{{.Logo}}"
alt="{{.Name}}"
title="{{.Name}}"
/>
{{else}}
<img
class="app-card__icon"
src="/static/images/placeholder.png?v=2"
alt="{{.Name}}"
title="{{.Name}}"
/>
{{end}}
</div>
<div class="app-card__title">{{.Name}}</div>
{{if .Intro}}
<div class="app-card__desc">{{.Intro}}</div>
{{end}}
</a>
{{else}}
<div class="section-empty">该分类暂无应用</div>
{{end}}
</div>
<button
type="button"
class="app-list-section__more"
data-total="{{$cat.Total}}"
hidden
>
<span class="app-list-section__more-label">显示全部</span>
<img
class="app-list-section__more-icon"
src="/static/images/tringle_down.svg"
alt="显示全部应用"
aria-hidden="true"
/>
</button>
</section>
{{end}} {{else}}
<div class="application-empty">
<div class="section-empty">暂无福利应用</div>
</div>
{{end}}
</main>
{{template "footer" .}}
<script defer src="/static/js/pages/application.js?v=3"></script>
</body>
</html>
+56
View File
@@ -0,0 +1,56 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{{template "seoCommon" .}}
<title>{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else}}{{.title}} - 黄果短剧{{end}}</title>
<meta name="description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}{{.categoryDescription}}{{end}}">
<meta name="keywords" content="{{if .seoInfo.Keywords}}{{joinStrings .seoInfo.Keywords ","}}{{else}}{{.pageName}},短剧分类,在线短剧,黄果短剧{{end}}">
<meta property="og:type" content="website">
<meta property="og:title" content="{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else}}{{.title}} - 黄果短剧{{end}}">
<meta property="og:description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}{{.categoryDescription}}{{end}}">
{{if .jsonLD}}<script type="application/ld+json">{{.jsonLD}}</script>{{end}}
<link rel="stylesheet" href="/static/css/index.css?v=25">
<link rel="stylesheet" href="/static/css/list.css?v=5">
<link rel="stylesheet" href="/static/css/categoryDetail.css?v=1">
</head>
<body class="site-shell has-h5-tabbar list-page-body category-detail-body">
{{template "header" .}}
<main class="page-shell list-page category-detail-page">
<div class="list-hero category-detail-hero">
<nav class="list-breadcrumb" aria-label="面包屑">
<a href="/">首页</a><span aria-hidden="true">/</span><span aria-current="page">{{.pageName}}</span>
</nav>
<div class="category-detail-copy">
<h1 class="list-channel-title">{{.pageName}}</h1>
<p class="category-detail-description">{{.categoryDescription}}</p>
</div>
<h2 class="list-section-title"><span class="list-section-mark" aria-hidden="true"></span><span>{{.pageName}}作品</span></h2>
<div class="card-grid">
{{range .list}}
<a class="poster-card" href="{{detailURL .Slug .ID}}">
<div class="poster-cover">
<img src="/static/images/placeholder.png?v=2" class="poster-cover-img lazy" data-src="{{coverURL .Cover .Banner}}" alt="{{.Title}}" title="{{.Title}}">
{{template "posterCornerBadges" .}}
{{with episodeLabel .TotalEpisode}}<div class="episode-badge"><div class="text-white-xs">{{.}}</div></div>{{end}}
</div>
<div class="poster-card-body">
<div class="poster-card-title">{{.Title}}</div>
{{if .Desc}}<div class="poster-card-subtitle">{{.Desc}}</div>{{end}}
<div class="poster-card-meta">
{{template "posterCardTag" .}}
<div class="flex-spacer"></div>
</div>
</div>
</a>
{{else}}
<div class="section-empty">暂无分类内容</div>
{{end}}
</div>
{{template "pagination" .}}
</div>
</main>
{{template "footer" .}}
</body>
</html>
+177
View File
@@ -0,0 +1,177 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{{template "seoCommon" .}}
{{$siteTitle := "黄果短剧"}}{{if and .detail .detail.SeoInfo.WebSiteName}}{{$siteTitle = .detail.SeoInfo.WebSiteName}}{{else if .seoInfo.WebSiteName}}{{$siteTitle = .seoInfo.WebSiteName}}{{else if .appConfig.SeoInfo.WebSiteName}}{{$siteTitle = .appConfig.SeoInfo.WebSiteName}}{{end}}
{{$pageTitle := "短剧详情"}}{{if .detail}}{{if .detail.SeoInfo.Title}}{{$pageTitle = .detail.SeoInfo.Title}}{{else}}{{$pageTitle = .detail.Title}}{{end}}{{else if .title}}{{$pageTitle = .title}}{{end}}
<title>{{$pageTitle}} - {{$siteTitle}}</title>
<meta name="description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else if .detail}}{{if .detail.Desc}}{{.detail.Desc}} - 黄果短剧{{else}}在线观看《{{.detail.Title}}》,高清短剧全集免费看。 - 黄果短剧{{end}}{{else}}短剧详情页,在线观看高清短剧全集。 - 黄果短剧{{end}}">
<meta name="keywords" content="{{if .detail}}{{.detail.Title}}{{range .detail.ThemeNames}},{{.}}{{end}}{{range .detail.TagNames}},{{.}}{{end}},短剧,在线观看,黄果短剧{{else if .seoInfo.Keywords}}{{joinStrings .seoInfo.Keywords ","}}{{else}}短剧详情,在线短剧,黄果短剧{{end}}">
<meta property="og:type" content="video.tv_show">
<meta property="og:title" content="{{$pageTitle}} - {{$siteTitle}}">
<meta property="og:description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else if .detail}}{{if .detail.Desc}}{{.detail.Desc}}{{else}}在线观看《{{.detail.Title}}》{{end}}{{else}}短剧详情页,在线观看高清短剧全集。{{end}}">
{{if .detail}}{{if .detail.Cover}}<meta property="og:image" content="{{.detail.Cover}}">
<meta name="twitter:image" content="{{.detail.Cover}}">{{end}}
<meta name="twitter:title" content="{{$pageTitle}} - {{$siteTitle}}">
<meta name="twitter:description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else if .detail}}{{if .detail.Desc}}{{.detail.Desc}}{{else}}在线观看《{{.detail.Title}}》{{end}}{{else}}短剧详情页,在线观看高清短剧全集。{{end}}">{{end}}
{{if .jsonLD}}
<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=31">
<link rel="stylesheet" href="/static/css/detailHero.css?v=3">
</head>
<body class="site-shell is-detail-page">
{{template "header" .}}
{{if .detail}}
{{with .detail}}
<div class="detail-h5-bg" aria-hidden="true">
<img class="detail-h5-bg-img lazy" src="/static/images/placeholder.png?v=2" data-src="{{coverURL .Cover .Banner}}" alt="{{.Title}}背景图" title="{{.Title}}" />
<div class="detail-h5-bg-mask"></div>
</div>
<div class="detail-h5-top">
<a class="detail-h5-back" href="/" data-nav-back data-nav-fallback="/" aria-label="返回">
<img src="/static/images/back.svg" alt="返回" />
</a>
<div class="detail-h5-top-actions">
<button class="detail-h5-top-btn" type="button" data-detail-share data-playlet-id="{{.ID}}" aria-label="分享">
<img src="/static/images/h5_share.svg" alt="分享" />
</button>
<a class="detail-h5-top-btn" href="/feedback/" aria-label="反馈">
<img src="/static/images/feedback.svg" alt="反馈" />
</a>
</div>
</div>
<main class="page-shell detail-page">
<nav class="detail-breadcrumb" aria-label="面包屑">
<a class="detail-breadcrumb-link" href="/">首页</a>
<span class="detail-breadcrumb-sep">/</span>
<a class="detail-breadcrumb-link" href="/list/ai-short-play/">短剧</a>
<span class="detail-breadcrumb-sep">/</span>
<span class="detail-breadcrumb-current">{{.Title}}</span>
</nav>
<div class="detail-layout">
<div class="detail-main">
<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}}
</div>
{{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>
{{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="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>
{{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="dh-ep-grid">
{{$playletID := .ID}}
{{$playletSlug := .Slug}}
{{range .PlayletChapterInfo}}
{{if .AllowWatch}}
<a class="dh-ep" href="{{chapterPlayURL $playletSlug $playletID .ID}}" data-ep="{{.CurrentEpisode}}" aria-label="第{{.CurrentEpisode}}集">{{printf "%02d" .CurrentEpisode}}</a>
{{else}}
<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>
{{end}}
</div>
</section>
{{template "contentOfficialInfo" $}}
{{template "contentAds" $}}
<section class="detail-comments"
data-comment-object-id="{{.ID}}"
data-comment-object-type="10"
data-comment-size="10">
<div class="detail-comments-head">
<h2 class="detail-comments-title" data-comment-title>评论</h2>
<div class="detail-comments-sort">
<button class="detail-sort-btn detail-sort-btn--active" type="button" data-comment-sort="1">热门</button>
<button class="detail-sort-btn" type="button" data-comment-sort="2">最新</button>
</div>
</div>
<div class="detail-comment-list" data-comment-list>
<div class="section-empty" data-comment-loading>评论加载中…</div>
</div>
<button class="detail-comments-more" type="button" data-comment-more hidden>加载更多</button>
</section>
</div>
<div class="content-column-divider" aria-hidden="true"></div>
<aside class="detail-sidebar">
{{template "contentHotSidebar" .}}
</aside>
</div>
</main>
<div class="detail-h5-bar">
<a class="detail-h5-play" href="{{playURL .Slug .ID}}">开始播放</a>
</div>
{{end}}
{{else}}
<main class="page-shell detail-page">
<h1 class="seo-visually-hidden">{{$pageTitle}} - {{$siteTitle}}</h1>
{{template "empty" .}}
</main>
{{end}}
{{template "footer" .}}
<script src="/static/js/pages/detail.js?v=16"></script>
</body>
</html>
+86
View File
@@ -0,0 +1,86 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{template "seoCommon" .}}
<title>{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else}}下载APP - 黄果短剧{{end}}</title>
<meta
name="description"
content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}下载黄果短剧APP,随时随地追看热门短剧,享受更流畅的移动端观影体验 - 黄果短剧{{end}}"
/>
<meta name="keywords" content="{{if .seoInfo.Keywords}}{{joinStrings .seoInfo.Keywords ","}}{{else}}下载APP,黄果短剧APP,短剧APP,手机短剧{{end}}" />
<meta property="og:type" content="website" />
<meta property="og:title" content="{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else}}下载APP - 黄果短剧{{end}}" />
<meta
property="og:description"
content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}下载黄果短剧APP,随时随地追看热门短剧。{{end}}"
/>
{{if .jsonLD}}
<script type="application/ld+json">
{{.jsonLD}}
</script>
{{end}}
<link rel="stylesheet" href="/static/css/downloadApp.css" />
</head>
<body>
{{template "header" .}}
<main class="download-app-page">
<div class="download-app-dialog">
<h1 class="download-app-title">下载黄果短剧 App</h1>
<div class="download-app-subtitle">扫码安装,继续追剧不丢进度</div>
<div class="download-app-divider"></div>
<button
class="download-app-close"
type="button"
aria-label="关闭"
onclick="history.back()"
>
×
</button>
<div class="download-app-feature download-app-feature--1">
<div class="download-app-feature-title">追剧更稳定</div>
<div class="download-app-feature-desc">
App 内播放、切集和续看更稳定,适合长时间追剧。
</div>
</div>
<div class="download-app-feature download-app-feature--2">
<div class="download-app-feature-title">记录自动同步</div>
<div class="download-app-feature-desc">
观看历史、收藏和追剧记录与 Web 账号同步。
</div>
</div>
<div class="download-app-feature download-app-feature--3">
<div class="download-app-feature-title">更新及时提醒</div>
<div class="download-app-feature-desc">
关注的剧集更新后提醒,减少回访流失。
</div>
</div>
<div class="download-app-qr-panel">
<div class="download-app-platform-tabs">
<button
class="download-app-platform download-app-platform--active"
type="button"
>
iOS
</button>
<button class="download-app-platform" type="button">Android</button>
</div>
<div class="download-app-qr-box">
<img
class="download-app-qr-img"
src="https://placehold.co/164x164"
alt="下载二维码"
title="黄果短剧 App 下载二维码"
/>
</div>
<button class="download-app-copy" type="button">复制下载链接</button>
<div class="download-app-qr-hint">二维码与下载链接指向同一地址</div>
</div>
</div>
</main>
{{template "footer" .}}
</body>
</html>
+169
View File
@@ -0,0 +1,169 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{template "seoCommon" .}}
<title>问题反馈 - 黄果短剧</title>
<meta
name="description"
content="向黄果短剧提交问题反馈与建议,帮助我们持续优化观影体验与产品服务 - 黄果短剧"
/>
<meta name="keywords" content="问题反馈,意见反馈,客服,黄果短剧" />
<meta property="og:type" content="website" />
<meta property="og:title" content="问题反馈 - 黄果短剧" />
<meta
property="og:description"
content="向黄果短剧提交问题反馈与建议,帮助我们持续优化观影体验。"
/>
<link rel="stylesheet" href="/static/css/contentPage.css?v=9" />
</head>
<body class="site-shell content-layout is-feedback-page">
{{template "header" .}}
<main class="content-page feedback-page">
<header class="feedback-nav">
<a
class="feedback-nav-back"
href="javascript:history.back()"
aria-label="返回"
>
<img src="/static/images/back.svg" alt="返回" />
</a>
<div class="feedback-nav-title">问题反馈</div>
<span class="feedback-nav-spacer" aria-hidden="true"></span>
</header>
<div class="feedback-shell">
<div class="feedback-pc">
<nav class="content-breadcrumb" aria-label="面包屑">
<a class="content-breadcrumb-link" href="/">首页</a>
<span class="content-breadcrumb-sep">/</span>
<span class="content-breadcrumb-current">意见反馈</span>
</nav>
</div>
<div class="feedback-main">
<form class="feedback-form" data-feedback-form>
<div class="feedback-form-intro">
<h1 class="feedback-form-title">意见反馈</h1>
<p class="feedback-form-desc">请详细描述您遇到的问题,我们将尽快为您解决</p>
</div>
<section class="feedback-field feedback-field--type">
<h2 class="feedback-label feedback-label--responsive-star">问题类型 <span>*</span></h2>
<input type="hidden" name="type" value="2" data-feedback-type />
<div class="feedback-panel feedback-chip-list" role="group" aria-label="问题类型">
<button class="feedback-chip is-active" type="button" data-feedback-type-option data-value="2">播放卡顿/缓冲</button>
<button class="feedback-chip" type="button" data-feedback-type-option data-value="2">无法播放</button>
<button class="feedback-chip" type="button" data-feedback-type-option data-value="2">画质模糊</button>
<button class="feedback-chip" type="button" data-feedback-type-option data-value="2">音画不同步</button>
<button class="feedback-chip" type="button" data-feedback-type-option data-value="2">加载失败</button>
<button class="feedback-chip" type="button" data-feedback-type-option data-value="4">闪退/崩溃</button>
<button class="feedback-chip" type="button" data-feedback-type-option data-value="3">登陆异常</button>
<button class="feedback-chip" type="button" data-feedback-type-option data-value="4">其他问题</button>
</div>
</section>
<section class="feedback-field feedback-field--network">
<h2 class="feedback-label feedback-label--responsive-star">网络环境信息 <span>*</span></h2>
<div class="feedback-panel feedback-detail-panel">
<label class="feedback-minor-label" for="feedback-province">所在地址</label>
<div class="feedback-grid feedback-grid--address">
<select class="feedback-control feedback-select-control" id="feedback-province" name="province" aria-label="所在省份" data-feedback-province>
<option value="" selected disabled>所在省份</option>
<option>北京市</option><option>天津市</option><option>河北省</option><option>山西省</option><option>内蒙古自治区</option>
<option>辽宁省</option><option>吉林省</option><option>黑龙江省</option><option>上海市</option><option>江苏省</option>
<option>浙江省</option><option>安徽省</option><option>福建省</option><option>江西省</option><option>山东省</option>
<option>河南省</option><option>湖北省</option><option>湖南省</option><option>广东省</option><option>广西壮族自治区</option>
<option>海南省</option><option>重庆市</option><option>四川省</option><option>贵州省</option><option>云南省</option>
<option>西藏自治区</option><option>陕西省</option><option>甘肃省</option><option>青海省</option><option>宁夏回族自治区</option>
<option>新疆维吾尔自治区</option><option>香港特别行政区</option><option>澳门特别行政区</option><option>台湾省</option><option>海外</option>
</select>
<select class="feedback-control feedback-select-control" id="feedback-city" name="city" aria-label="城市(选填)" data-feedback-city disabled>
<option value="" selected>城市(选填)</option>
</select>
</div>
<label class="feedback-minor-label" for="feedback-carrier">运营商</label>
<select class="feedback-control feedback-select-control" id="feedback-carrier" name="operator" aria-label="运营商" data-feedback-operator>
<option value="" selected disabled>选择运营商</option>
<option>中国移动</option>
<option>中国联通</option>
<option>中国电信</option>
<option>中国广电</option>
<option>其他</option>
</select>
<span class="feedback-minor-label">网络类型</span>
<div class="feedback-chip-list feedback-chip-list--compact" data-feedback-choice-group>
<button class="feedback-chip" type="button">WIFI</button>
<button class="feedback-chip" type="button">5G</button>
<button class="feedback-chip" type="button">4G</button>
<button class="feedback-chip" type="button">其他</button>
</div>
</div>
</section>
<section class="feedback-field feedback-field--frequency">
<h2 class="feedback-label feedback-label--responsive-star">问题发生频率 <span>*</span></h2>
<div class="feedback-panel feedback-chip-list feedback-chip-list--equal" data-feedback-choice-group data-default-first>
<button class="feedback-chip is-active" type="button">每次都会</button>
<button class="feedback-chip" type="button">经常出现</button>
<button class="feedback-chip" type="button">偶尔出现</button>
<button class="feedback-chip" type="button">仅现一次</button>
</div>
</section>
<section class="feedback-field feedback-field--device">
<h2 class="feedback-label feedback-label--responsive-star">设备信息 <span>*</span></h2>
<div class="feedback-panel feedback-detail-panel">
<span class="feedback-minor-label">设备类型</span>
<div class="feedback-chip-list feedback-chip-list--compact" data-feedback-choice-group data-default-first>
<button class="feedback-chip is-active" type="button">iPhone</button>
<button class="feedback-chip" type="button">Android</button>
<button class="feedback-chip" type="button">iPad</button>
<button class="feedback-chip" type="button">其他</button>
</div>
<label class="feedback-minor-label" for="feedback-device">设备型号(选填)</label>
<input class="feedback-control" id="feedback-device" type="text" placeholder="例如: iPhone 15、小米14" />
<label class="feedback-minor-label" for="feedback-version">APP版本号(选填)</label>
<input class="feedback-control" id="feedback-version" type="text" placeholder="例如: v1.2.1" />
</div>
</section>
<section class="feedback-field" aria-label="问题描述">
<label class="feedback-label" for="feedback-desc">问题描述 <span>*</span></label>
<div class="feedback-textarea-wrap">
<textarea class="feedback-control feedback-control--textarea" id="feedback-desc" name="content" maxlength="500" placeholder="请详细说明您遇到的问题,包括:&#10;1. 观看什么内容时出现问题&#10;2. 具体表现是什么&#10;3. 出现问题的大致时间" data-feedback-content></textarea>
<span class="feedback-counter" data-feedback-counter>0/500</span>
</div>
</section>
<section class="feedback-field" aria-label="上传图片">
<span class="feedback-label">上传图片</span>
<div class="feedback-upload-wrap" data-feedback-upload-wrap>
<ul class="feedback-upload-list" data-feedback-preview-list hidden></ul>
<label class="feedback-upload" data-feedback-upload>
<input class="feedback-upload-input" type="file" name="screenshot" accept="image/png,image/jpeg" multiple data-feedback-file />
<img class="feedback-upload-mark" src="/static/images/figma-content/feedback-upload-icon.svg" alt="" />
<span class="feedback-upload-copy">
<strong>上传图片/视频</strong>
<span data-feedback-file-text>支持jpg/png 最多3个文件</span>
</span>
</label>
</div>
</section>
<section class="feedback-field" aria-label="联系方式">
<label class="feedback-label" for="feedback-contact">联系方式 <span>*</span></label>
<input class="feedback-control" id="feedback-contact" name="contact" type="text" placeholder="请输入您的 Email/Telegram/Twitter 以获取我们的回复" data-feedback-contact />
</section>
<button class="feedback-submit" type="submit" data-feedback-submit>提交反馈</button>
<p class="feedback-note">提交后我们将在1-3个工作日内处理 感谢您的反馈!</p>
</form>
</div>
</div>
</main>
{{template "footer" .}}
<script src="/static/js/pages/feedback.js?v=6"></script>
</body>
</html>
+93
View File
@@ -0,0 +1,93 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{template "seoCommon" .}}
<title>帮助中心 - 黄果短剧</title>
<meta
name="description"
content="黄果短剧帮助中心:观影、App 下载与常见问题解答,快速找到你需要的帮助 - 黄果短剧"
/>
<meta name="keywords" content="帮助中心,常见问题,客服帮助,黄果短剧" />
<meta property="og:type" content="website" />
<meta property="og:title" content="帮助中心 - 黄果短剧" />
<meta
property="og:description"
content="黄果短剧帮助中心:观影、App 下载与常见问题解答。"
/>
{{if .jsonLD}}
<script type="application/ld+json">
{{.jsonLD}}
</script>
{{end}}
<link rel="stylesheet" href="/static/css/contentPage.css?v=9" />
</head>
<body class="site-shell content-layout is-help-page">
{{template "header" .}}
<main class="content-page help-page">
<div class="content-pc">
<nav class="content-breadcrumb" aria-label="面包屑">
<a class="content-breadcrumb-link" href="/">首页</a>
<span class="content-breadcrumb-sep">/</span>
<span class="content-breadcrumb-current">帮助中心</span>
</nav>
<div class="content-head">
<h1 class="content-title">帮助中心</h1>
<p class="content-subtitle">常见问题与使用指南</p>
</div>
</div>
<header class="content-nav">
<a
class="content-nav-back"
href="javascript:history.back()"
aria-label="返回"
>
<img src="/static/images/back.svg" alt="返回" />
</a>
<div class="content-nav-title">帮助中心</div>
<span class="content-nav-spacer" aria-hidden="true"></span>
</header>
<div class="content-main">
<article class="content-card content-card--faq help-article">
<h2 class="content-faq-heading">常见问题</h2>
<div class="content-divider"></div>
{{if .faqItems}}
{{range $index, $item := .faqItems}}
<div class="content-faq-item">
<h3 class="content-faq-q">{{$item.Question}}</h3>
<p class="content-faq-a">{{$item.Answer}}</p>
</div>
{{if lt (add $index 1) (len $.faqItems)}}
<div class="content-divider"></div>
{{end}}
{{end}}
{{else}}
<div class="content-faq-item">
<h3 class="content-faq-q">付费剧集怎么观看?</h3>
<p class="content-faq-a">网页端可免费观看免费剧集;付费剧集请下载黄果短剧 App 观看完整内容。</p>
</div>
<div class="content-divider"></div>
<div class="content-faq-item">
<h3 class="content-faq-q">需要注册账号吗?</h3>
<p class="content-faq-a">不需要,网页端无需注册即可直接观看免费剧集。</p>
</div>
<div class="content-divider"></div>
<div class="content-faq-item">
<h3 class="content-faq-q">视频无法播放或加载缓慢?</h3>
<p class="content-faq-a">建议切换网络、刷新页面或更新浏览器;问题持续时可提交反馈。</p>
</div>
<div class="content-divider"></div>
<div class="content-faq-item">
<h3 class="content-faq-q">在哪里下载 App?</h3>
<p class="content-faq-a">点击页面上的“下载APP”入口,按提示扫码或直接下载安装。</p>
</div>
{{end}}
</article>
</div>
</main>
{{template "footer" .}}
</body>
</html>
+139
View File
@@ -0,0 +1,139 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{{template "seoCommon" .}}
<title>{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else}}{{.title}}{{end}}</title>
<meta name="description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}黄果短剧官方最新地址发布页,实时同步国内可用线路、永久入口与防失联联系方式。{{end}}">
<meta name="keywords" content="{{if .seoInfo.Keywords}}{{joinStrings .seoInfo.Keywords ","}}{{else}}黄果短剧,回家的路,最新地址,永久入口,备用地址{{end}}">
<meta property="og:type" content="website">
<meta property="og:title" content="{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else}}{{.title}}{{end}}">
<meta property="og:description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}实时同步黄果短剧最新可用线路与永久入口。{{end}}">
{{if .jsonLD}}<script type="application/ld+json">{{.jsonLD}}</script>{{end}}
<link rel="stylesheet" href="/static/css/index.css?v=25">
<link rel="stylesheet" href="/static/css/homeRoad.css?v=5">
</head>
<body class="site-shell has-h5-tabbar home-road-page-body">
{{template "header" .}}
<main class="home-road-page">
<nav class="home-road-breadcrumb" aria-label="面包屑">
<a href="/">首页</a><span aria-hidden="true">/</span><span aria-current="page">回家的路</span>
</nav>
<section class="home-road-hero" aria-labelledby="homeRoadTitle">
<div class="home-road-official"><img src="/static/images/figma-home-road/official.svg" width="20" height="20" alt=""><span>官方权威发布 · 永久有效入口</span></div>
<img class="home-road-hero-logo" src="/static/images/figma-home/footer-logo-desktop.png?v=3" alt="黄果短剧" title="黄果短剧">
<h1 id="homeRoadTitle">黄果短剧 · 官方最新地址发布页</h1>
<p>实时同步最新可用线路与备用入口,帮助你在不同网络环境下快速返回。</p>
<div class="home-road-hero-actions">
<a class="home-road-btn home-road-btn--primary" href="{{.homeRoad.MainURL}}" target="_blank" rel="sponsored nofollow noopener noreferrer">立即进入主站</a>
<button class="home-road-btn home-road-btn--secondary" type="button" data-copy-value="{{.canonicalURL}}">复制分享链接</button>
</div>
</section>
<section class="home-road-panel home-road-routes" aria-labelledby="homeRoadRoutes">
<div class="home-road-section-heading">
<img src="/static/images/figma-home-road/rocket.svg" width="48" height="48" alt="">
<h2 id="homeRoadRoutes">国内可用地址</h2>
<span>(直连无需代理)</span>
</div>
<p class="home-road-section-desc">以下线路均经过可用性检查,优先选择高速线路。</p>
<div class="home-road-route-grid">
{{range .homeRoad.Routes}}
<article class="home-road-route-card">
<div class="home-road-route-head"><h3>{{.Label}}</h3><span>● 极速</span></div>
<div class="home-road-route-url">{{navDisplayURL .URL}}</div>
<div class="home-road-route-actions">
<a class="home-road-small-btn home-road-small-btn--primary" href="{{.URL}}" target="_blank" rel="sponsored nofollow noopener noreferrer">立即进入</a>
<button class="home-road-small-btn" type="button" data-copy-value="{{.URL}}">复制地址</button>
</div>
</article>
{{end}}
</div>
</section>
<section class="home-road-panel home-road-permanent" aria-labelledby="homeRoadPermanent">
<div class="home-road-section-heading">
<img src="/static/images/figma-home-road/link.svg" width="48" height="48" alt="">
<h2 id="homeRoadPermanent">永久访问地址</h2>
<span>建议收藏</span>
</div>
<p class="home-road-section-desc">同时保存永久入口和备用入口,主域名变更时仍可返回。</p>
<div class="home-road-permanent-list">
{{range .homeRoad.Permanent}}
<article class="home-road-permanent-row">
<div class="home-road-permanent-copy"><span>{{.Label}}</span><strong>{{navDisplayURL .URL}}</strong></div>
<button class="home-road-save-btn" type="button" data-copy-value="{{.URL}}">复制并保存</button>
</article>
{{end}}
</div>
</section>
<section class="home-road-panel home-road-contact" aria-labelledby="homeRoadContact">
<div class="home-road-section-heading">
<img src="/static/images/figma-home-road/shield.svg" width="48" height="48" alt="">
<h2 id="homeRoadContact">防失联方式</h2>
<span>建议至少保存 2 种</span>
</div>
<p class="home-road-section-desc">通过以下方式获取最新地址或接收线路变更提醒。</p>
<div class="home-road-contact-grid">
{{range .homeRoad.Contacts}}
<a class="home-road-contact-card" href="{{.URL}}"{{if hasPrefix .URL "http"}} target="_blank" rel="sponsored nofollow noopener noreferrer"{{end}}>
<h3>{{.Title}}</h3>
<p>{{.Description}}</p>
<span>{{.Action}}</span>
</a>
{{end}}
</div>
</section>
<section class="home-road-panel home-road-troubleshoot" aria-labelledby="homeRoadTroubleshoot">
<div class="home-road-section-heading">
<img src="/static/images/figma-home-road/troubleshoot.svg" width="48" height="48" alt="">
<h2 id="homeRoadTroubleshoot">访问异常排查</h2>
<span>安全提示</span>
</div>
<p class="home-road-section-desc">遇到打不开、跳转慢或入口失效时,按顺序完成排查。</p>
<div class="home-road-step-grid">
<article><h3><b>01</b>打不开页面</h3><p>先切换网络,再尝试永久入口或备用入口。</p></article>
<article><h3><b>02</b>地址跳转异常</h3><p>确认地址拼写完整,不要从陌生弹窗进入。</p></article>
<article><h3><b>03</b>入口失效</h3><p>返回本页查看最新入口,或从收藏页重新进入。</p></article>
</div>
</section>
<section class="home-road-panel home-road-devices" aria-labelledby="homeRoadDevices">
<div class="home-road-section-heading">
<img src="/static/images/figma-home-road/devices.svg" width="48" height="48" alt="">
<h2 id="homeRoadDevices">设备使用与兼容性建议</h2>
</div>
<p class="home-road-section-desc">建议使用主流浏览器访问,以获得更好的兼容性与加载速度;遇到缓慢或无法访问时可切换线路或刷新页面。</p>
<div class="home-road-device-grid">
<article>
<h3><img src="/static/images/figma-home-road/iphone.svg" width="24" height="24" alt="">iPhone 用户</h3>
<p class="home-road-good">✓&nbsp; 推荐使用 Safari 浏览器</p><p class="home-road-warn">!&nbsp; 避免在微信 / QQ 等第三方 App 内打开</p>
</article>
<article>
<h3><img src="/static/images/figma-home-road/android.svg" width="24" height="24" alt="">Android 用户</h3>
<p class="home-road-good">✓&nbsp; 推荐使用 Google Chrome 浏览器</p><p class="home-road-warn">!&nbsp; 自带浏览器可能存在兼容与域名拦截风险</p>
</article>
<article>
<h3><img src="/static/images/figma-home-road/desktop.svg" width="24" height="24" alt="">电脑 / 桌面端</h3>
<p class="home-road-good">✓&nbsp; 首选 Chrome / Edge 浏览器</p><p class="home-road-warn">!&nbsp; 无法加载时可清除 DNS 缓存或更换公共 DNS</p>
</article>
</div>
</section>
<section class="home-road-panel home-road-faq" aria-labelledby="homeRoadFAQ">
<h2 id="homeRoadFAQ">FAQ</h2>
<div class="home-road-faq-list">
{{range .faqItems}}
<article><h3>{{.Question}}</h3><p>{{.Answer}}</p></article>
{{end}}
</div>
</section>
</main>
{{template "footer" .}}
<script defer src="/static/js/pages/homeRoad.js?v=1"></script>
</body>
</html>
+216
View File
@@ -0,0 +1,216 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{{template "seoCommon" .}}
<title>{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .appConfig.SeoInfo.Title}}{{.appConfig.SeoInfo.Title}}{{else if .title}}{{.title}}{{else}}黄果短剧 - 热门短剧在线看{{end}}</title>
<meta name="description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else if .appConfig.SeoInfo.Description}}{{.appConfig.SeoInfo.Description}}{{else}}黄果短剧汇集热门短剧、今日更新与精选推荐,免费在线观看高清短剧,剧情紧凑更新快。 - 黄果短剧{{end}}">
<meta name="keywords" content="{{if .seoInfo.Keywords}}{{joinStrings .seoInfo.Keywords ","}}{{else if .appConfig.SeoInfo.Keywords}}{{joinStrings .appConfig.SeoInfo.Keywords ","}}{{else}}黄果短剧,短剧,在线短剧,热门短剧,免费短剧,今日更新{{end}}">
<meta property="og:type" content="website">
<meta property="og:title" content="{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .appConfig.SeoInfo.Title}}{{.appConfig.SeoInfo.Title}}{{else if .title}}{{.title}}{{else}}黄果短剧 - 热门短剧在线看{{end}}">
<meta property="og:description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else if .appConfig.SeoInfo.Description}}{{.appConfig.SeoInfo.Description}}{{else}}黄果短剧汇集热门短剧、今日更新与精选推荐,免费在线观看高清短剧。{{end}}">
<meta property="og:image" content="{{absURL .siteURL "/favicon.png?v=3"}}">
<meta name="twitter:title" content="{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .appConfig.SeoInfo.Title}}{{.appConfig.SeoInfo.Title}}{{else if .title}}{{.title}}{{else}}黄果短剧 - 热门短剧在线看{{end}}">
<meta name="twitter:description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else if .appConfig.SeoInfo.Description}}{{.appConfig.SeoInfo.Description}}{{else}}黄果短剧汇集热门短剧、今日更新与精选推荐,免费在线观看高清短剧。{{end}}">
<meta name="twitter:image" content="{{absURL .siteURL "/favicon.png?v=3"}}">
{{if .jsonLD}}
<script type="application/ld+json">{{.jsonLD}}</script>
{{end}}
<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)">
<noscript><link rel="stylesheet" href="/static/common/swiper-bundle.min.css"></noscript>
{{if .homeBannerData}}{{with index .homeBannerData 0}}
{{$heroSrc := coverURL .Image ""}}
{{if $heroSrc}}<link rel="preload" as="fetch" href="{{$heroSrc}}" crossorigin="anonymous">{{end}}
{{end}}{{end}}
</head>
<body class="site-shell home-page has-h5-tabbar">
{{template "header" .}}
<main class="page-shell{{if not .homeBannerData}} page-shell--no-hero{{end}}">
<h1 class="home-page-title">{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .appConfig.SeoInfo.Title}}{{.appConfig.SeoInfo.Title}}{{else if .title}}{{.title}}{{else}}黄果短剧 - 热门短剧在线看{{end}}</h1>
{{if .homeBannerData}}
<div class="hero-section">
<div class="hero-banner">
<div class="swiper hero-swiper" id="heroSwiper">
<div class="swiper-wrapper">
{{range $i, $banner := .homeBannerData}}
<div class="swiper-slide">
<a class="hero-card"{{if $banner.URL}} href="{{$banner.URL}}"{{if or (hasPrefix $banner.URL "http://") (hasPrefix $banner.URL "https://")}} target="_blank" rel="sponsored nofollow noopener noreferrer"{{end}}{{else}} aria-disabled="true"{{end}}>
<img src="/static/images/placeholder.png?v=2" class="hero-image lazy" data-src="{{coverURL $banner.Image ""}}"{{if eq $i 0}} fetchpriority="high" data-lazy-eager="1"{{end}} decoding="async" width="1920" height="710" alt="{{$banner.Name}}" />
<div class="hero-overlay"></div>
<div class="hero-info">
<div class="hero-kicker">今日推荐</div>
{{if $banner.Name}}<div class="hero-title">{{$banner.Name}}</div>{{end}}
<span class="hero-play-button">
<img class="hero-play-icon" src="/static/images/figma-home/hero-play.svg" width="29" height="32" alt="" aria-hidden="true" />
<span class="hero-play-text">点击查看</span>
</span>
</div>
</a>
</div>
{{end}}
</div>
<div class="swiper-pagination hero-dots"></div>
<div class="hero-thumbs" id="heroThumbs" aria-label="轮播图切换">
<button class="hero-thumb-nav hero-thumb-prev" type="button" aria-label="上一张">
<img src="/static/images/figma-home/hero-arrow-left.svg" alt="" />
</button>
{{range $i, $banner := .homeBannerData}}
<button class="hero-thumb{{if eq $i 0}} is-active{{end}}" type="button" data-index="{{$i}}" aria-label="查看{{$banner.Name}}">
<img class="hero-thumb-img lazy" src="/static/images/placeholder.png?v=2" data-src="{{coverURL $banner.VerticalImage $banner.Image}}" decoding="async" alt="" />
<span class="hero-thumb-overlay"></span>
</button>
{{end}}
<button class="hero-thumb-nav hero-thumb-next" type="button" aria-label="下一张">
<img src="/static/images/figma-home/hero-arrow-right.svg" alt="" />
</button>
</div>
</div>
</div>
</div>
{{end}}
{{$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>
<source media="(min-width: 768px)" srcset="/static/images/figma-home/announcement-label-desktop.png" />
<img src="/static/images/figma-home/announcement-label.png" width="80" height="56" alt="公告" />
</picture>
</div>
<div class="home-announcement-content">
<div class="home-announcement-marquee">
<span class="home-announcement-copy">{{template "homeAnnouncementItems" .}}</span>
<span class="home-announcement-copy" aria-hidden="true">{{template "homeAnnouncementItems" .}}</span>
</div>
</div>
</div>
{{end}}
{{template "squarePromo" dict "Ads" .appConfig.DetailTopList "SlotKey" "home_detail_top" "SlotName" "首页方块广告" "Label" "广告"}}
{{range $catIndex, $category := .homeCategoryData}}
{{if contains $category.Name "热榜"}}
<div class="content-section ranking-section">
<div class="section-header">
<div class="section-heading">
<h2 class="section-title">{{$category.Name}}</h2>
{{if $category.Desc}}<div class="section-subtitle">{{$category.Desc}}</div>{{end}}
</div>
<div class="flex-spacer"></div>
<a class="ghost-action-button" href="{{categoryDetailURL $category.Slug $category.ID}}">
<div class="ghost-action-text">查看全部</div>
<img class="chevron-icon-img" src="/static/images/figma-home/chevron-right.svg" alt="查看全部" />
</a>
</div>
<div class="card-grid ranking-list">
{{range $i, $item := $category.List}}
<a class="poster-card ranking-card" href="{{detailURL $item.Slug $item.ID}}">
<div class="poster-cover ranking-cover">
<img src="/static/images/placeholder.png?v=2" class="poster-cover-img ranking-cover-img lazy" data-src="{{coverURL $item.Cover $item.Banner}}" width="160" height="214" decoding="async" alt="{{$item.Title}}" title="{{$item.Title}}" />
{{template "posterCornerBadges" $item}}
{{template "posterLikeBadge" $item}}
{{with episodeLabel $item.TotalEpisode}}
<div class="episode-badge ranking-episode-badge"><div class="text-white-xs">{{.}}</div></div>
{{end}}
<div class="ranking-badge">
<div class="rank-bg-{{rankClass (add $i 1)}}"></div>
<div class="rank-text">{{add $i 1}}</div>
</div>
</div>
<div class="poster-card-body ranking-card-body">
<div class="poster-card-title ranking-card-title">{{$item.Title}}</div>
{{if $item.Desc}}<div class="poster-card-subtitle ranking-card-subtitle">{{$item.Desc}}</div>{{end}}
<div class="poster-card-meta ranking-card-meta">
{{template "rankingCardTag" $item}}
<div class="flex-spacer"></div>
<div class="poster-card-heat ranking-card-heat">{{formatCollect $item.CountCollect}}</div>
</div>
</div>
</a>
{{else}}
<div class="section-empty">暂无榜单数据</div>
{{end}}
</div>
</div>
{{else}}
<div class="content-section">
<div class="section-header">
<div class="section-heading">
<h2 class="section-title">{{$category.Name}}</h2>
{{if $category.Desc}}<div class="section-subtitle">{{$category.Desc}}</div>{{end}}
</div>
<div class="flex-spacer"></div>
<a class="ghost-action-button" href="{{categoryDetailURL $category.Slug $category.ID}}">
<div class="ghost-action-text">查看全部</div>
<img class="chevron-icon-img" src="/static/images/figma-home/chevron-right.svg" alt="查看全部" />
</a>
</div>
<div class="card-grid">
{{range $category.List}}
<a class="poster-card" href="{{detailURL .Slug .ID}}">
<div class="poster-cover">
<img src="/static/images/placeholder.png?v=2" class="poster-cover-img lazy" data-src="{{coverURL .Cover .Banner}}" width="160" height="214" decoding="async" alt="{{.Title}}" title="{{.Title}}" />
{{template "posterCornerBadges" .}}
{{template "posterLikeBadge" .}}
</div>
<div class="poster-card-body">
<div class="poster-card-title">{{.Title}}</div>
{{if .Desc}}<div class="poster-card-subtitle">{{.Desc}}</div>{{end}}
<div class="poster-card-meta">
{{template "posterCardTag" .}}
<div class="flex-spacer"></div>
{{with episodeLabel .TotalEpisode}}<div class="poster-card-episode">{{.}}</div>{{end}}
<div class="poster-card-heat">{{formatHeat .HeatValue}}</div>
</div>
</div>
</a>
{{else}}
<div class="section-empty">暂无内容</div>
{{end}}
</div>
</div>
{{end}}
{{template "homeAdRow" dict "Ads" ($.appConfig.NineGridRow $catIndex) "SlotKey" "home_nine_grid" "SlotName" "首页横幅广告" "Label" "广告"}}
{{end}}
{{if .homeRecommendThemes}}
<div class="content-section topic-section">
<div class="section-header">
<div class="section-heading">
<h2 class="section-title">专题推荐</h2>
</div>
<div class="flex-spacer"></div>
<a class="ghost-action-button" href="/topic/">
<div class="ghost-action-text">查看更多</div>
<img class="chevron-icon-img" src="/static/images/figma-home/chevron-right.svg" alt="查看全部" />
</a>
</div>
<div class="topic-grid">
{{range $theme := .homeRecommendThemes}}
<a class="topic-card" href="{{categoryURL $theme.Slug $theme.ID}}">
<img class="topic-card-image lazy" src="/static/images/placeholder.png?v=2" data-src="{{coverURL $theme.Icon ""}}" decoding="async" alt="{{$theme.Name}}专题" title="{{$theme.Name}}专题" />
<span class="topic-card-overlay"></span>
<span class="topic-card-copy">
<span class="topic-card-label">{{$theme.PlayletCount}}部剧情</span>
<span class="topic-card-title">{{$theme.Name}}</span>
</span>
</a>
{{end}}
</div>
</div>
{{end}}
</main>
{{template "footer" .}}
<script defer src="/static/js/pages/index.js?v=7"></script>
</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}}
+77
View File
@@ -0,0 +1,77 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{{template "seoCommon" .}}
<title>{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .title}}{{.title}} - 黄果短剧{{else}}短剧列表 - 黄果短剧{{end}}</title>
<meta name="description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}浏览黄果短剧全部短剧列表,按分类、标签筛选海量高清短剧,发现更多精彩剧集。 - 黄果短剧{{end}}">
<meta name="keywords" content="{{if .seoInfo.Keywords}}{{joinStrings .seoInfo.Keywords ","}}{{else}}短剧列表,短剧分类,在线短剧,黄果短剧,短剧大全{{end}}">
<meta property="og:type" content="website">
<meta property="og:title" content="{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .title}}{{.title}} - 黄果短剧{{else}}短剧列表 - 黄果短剧{{end}}">
<meta property="og:description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}浏览黄果短剧全部短剧列表,按分类、标签筛选海量高清短剧。{{end}}">
{{if .jsonLD}}
<script type="application/ld+json">{{.jsonLD}}</script>
{{end}}
<link rel="stylesheet" href="/static/css/index.css?v=25">
<link rel="stylesheet" href="/static/css/list.css?v=6">
</head>
<body class="site-shell has-h5-tabbar list-page-body">
{{template "header" .}}
<main class="page-shell list-page">
<div class="list-hero">
{{$navTitle := "AI成人短剧"}}
{{range .headerNav}}{{if .IsActive}}{{$navTitle = .Name}}{{end}}{{end}}
<nav class="list-breadcrumb" aria-label="面包屑">
<a href="/">首页</a><span aria-hidden="true">/</span><span aria-current="page">{{$navTitle}}</span>
</nav>
<h1 class="list-channel-title">{{$navTitle}}在线观看</h1>
<nav class="list-filters" aria-label="内容排序">
{{range .filters}}
<a class="filter-chip{{if .Active}} filter-chip--active{{end}}" href="{{.URL}}"{{if .Active}} aria-current="page"{{end}}>
<span class="filter-chip-text">{{.Label}}</span>
</a>
{{end}}
</nav>
<h2 class="list-section-title"><span class="list-section-mark" aria-hidden="true"></span><span>{{.sectionTitle}}</span></h2>
<div class="card-grid">
{{range .list}}
<a class="poster-card" href="{{detailURL .Slug .ID}}">
<div class="poster-cover">
<img src="/static/images/placeholder.png?v=2" class="poster-cover-img lazy" data-src="{{coverURL .Cover .Banner}}" alt="{{.Title}}" title="{{.Title}}" />
{{template "posterCornerBadges" .}}
{{with episodeLabel .TotalEpisode}}
<div class="episode-badge"><div class="text-white-xs">{{.}}</div></div>
{{end}}
</div>
<div class="poster-card-body">
<div class="poster-card-title">{{.Title}}</div>
{{if .Desc}}<div class="poster-card-subtitle">{{.Desc}}</div>{{end}}
<div class="poster-card-meta">
{{template "posterCardTag" .}}
<div class="flex-spacer"></div>
</div>
</div>
</a>
{{else}}
<div class="section-empty">暂无短剧内容</div>
{{end}}
</div>
{{template "pagination" .}}
{{template "homeAdRow" dict "Ads" .appConfig.NineGridList "SlotKey" "list_nine_grid" "SlotName" "片库横幅广告" "Label" "广告"}}
{{if .appConfig.BottomBanner}}
<div class="list-ad-list" aria-label="广告">
{{range $ad := .appConfig.BottomBanner}}
<a class="list-ad" {{if $ad.Link}}href="{{$ad.Link}}" target="_blank" rel="sponsored nofollow noopener noreferrer"{{else}}aria-disabled="true"{{end}} data-creative-id="{{$ad.ID}}">
<img class="lazy" src="/static/images/placeholder.png?v=2" data-src="{{$ad.Images}}" alt="{{$ad.Title}}" title="{{$ad.Title}}" width="758" height="94">
</a>
{{end}}
</div>
{{end}}
</div>
</main>
{{template "footer" .}}
</body>
</html>
+89
View File
@@ -0,0 +1,89 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{template "seoCommon" .}}
<title>
{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .title}}{{.title}} - 黄果短剧{{else}}今日推荐 - 黄果短剧{{end}}
</title>
<meta
name="description"
content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}黄果短剧{{if .pageTitle}}{{.pageTitle}}{{else}}今日推荐{{end}}:精选公开短剧,快速找到想看的好剧 - 黄果短剧{{end}}"
/>
<meta
name="keywords"
content="{{if .seoInfo.Keywords}}{{joinStrings .seoInfo.Keywords ","}}{{else}}{{if .pageTitle}}{{.pageTitle}}{{else}}今日推荐{{end}},短剧推荐,热门短剧,黄果短剧{{end}}"
/>
<meta property="og:type" content="website" />
<meta
property="og:title"
content="{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .title}}{{.title}} - 黄果短剧{{else}}今日推荐 - 黄果短剧{{end}}"
/>
<meta
property="og:description"
content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}黄果短剧{{if .pageTitle}}{{.pageTitle}}{{else}}今日推荐{{end}}:精选公开短剧,快速找到想看的好剧。{{end}}"
/>
{{if .jsonLD}}
<script type="application/ld+json">
{{.jsonLD}}
</script>
{{end}}
<link rel="stylesheet" href="/static/css/index.css?v=25" />
<link rel="stylesheet" href="/static/css/more.css?v=3" />
</head>
<body class="site-shell has-h5-tabbar topic-page-body">
{{template "header" .}}
<main class="page-shell more-page">
<div class="more-hero">
<nav class="more-breadcrumb" aria-label="面包屑">
<a class="more-breadcrumb-link" href="/">首页</a>
<span class="more-breadcrumb-sep">/</span>
<a class="more-breadcrumb-topic" href="/topic/">专题</a>
<span class="more-breadcrumb-sep more-breadcrumb-sep--topic">/</span>
<span class="more-breadcrumb-current more-breadcrumb-current--desktop">{{if .pageTitle}}{{.pageTitle}}{{else}}今日推荐{{end}}</span>
<span class="more-breadcrumb-current more-breadcrumb-current--mobile">{{if .topicHeading}}{{.topicHeading}}{{else if .pageTitle}}{{.pageTitle}}介绍{{else}}今日推荐介绍{{end}}</span>
</nav>
<div class="more-intro">
<h1 class="more-topic-title">{{if .topicHeading}}{{.topicHeading}}{{else if .pageTitle}}{{.pageTitle}}介绍{{else}}今日推荐介绍{{end}}</h1>
<div class="more-topic-description">{{if .topicDescription}}{{.topicDescription}}{{else}}精品高分 AI 成人短剧专题,精选高人气、高评分 AI 原创短剧,每日持续更新。涵盖多种热门剧情与角色设定,为你带来高质量、高清流畅的观影体验。{{end}}</div>
</div>
<h2 class="more-section-title"><span class="more-section-mark" aria-hidden="true"></span><span>专题作品</span></h2>
<div class="card-grid">
{{range .list}}
<a class="poster-card" href="{{detailURL .Slug .ID}}">
<div class="poster-cover">
<img
src="/static/images/placeholder.png?v=2"
class="poster-cover-img lazy"
data-src="{{coverURL .Cover .Banner}}"
alt="{{.Title}}"
title="{{.Title}}"
/>
{{with episodeLabel .TotalEpisode}}
<div class="episode-badge">
<div class="text-white-xs">{{.}}</div>
</div>
{{end}}
</div>
<div class="poster-card-body">
<div class="poster-card-title">{{.Title}}</div>
{{if .Desc}}
<div class="poster-card-subtitle">{{.Desc}}</div>
{{end}}
<div class="poster-card-meta">
{{template "posterCardTag" .}}
<div class="flex-spacer"></div>
</div>
</div>
</a>
{{else}}
<div class="section-empty">暂无推荐内容</div>
{{end}}
</div>
{{template "pagination" .}}
</div>
</main>
{{template "footer" .}}
</body>
</html>
+120
View File
@@ -0,0 +1,120 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{{template "seoCommon" .}}
<title>{{if .appConfig.SeoNavInfo.DhTitle}}{{.appConfig.SeoNavInfo.DhTitle}}{{else if .appConfig.SeoNavInfo.DhSiteName}}{{.appConfig.SeoNavInfo.DhSiteName}}{{else if .title}}{{.title}}{{else}}黄果短剧 · 官方导航{{end}}</title>
<meta name="description" content="{{if .appConfig.SeoNavInfo.DhDescription}}{{.appConfig.SeoNavInfo.DhDescription}}{{else}}黄果短剧官方导航页,提供最新访问线路、永久地址、APP 下载与官方联系方式,快速进入首页与短剧内容。{{end}} - 黄果短剧">
<meta name="keywords" content="{{if .appConfig.SeoNavInfo.DhKeyworld}}{{joinStrings .appConfig.SeoNavInfo.DhKeyworld ","}}{{else}}黄果短剧导航,官方导航,最新地址,永久地址,短剧入口,APP下载{{end}}">
<meta property="og:type" content="website">
<meta property="og:title" content="{{if .appConfig.SeoNavInfo.DhTitle}}{{.appConfig.SeoNavInfo.DhTitle}}{{else if .appConfig.SeoNavInfo.DhSiteName}}{{.appConfig.SeoNavInfo.DhSiteName}}{{else if .title}}{{.title}}{{else}}黄果短剧 · 官方导航{{end}}">
<meta property="og:description" content="{{if .appConfig.SeoNavInfo.DhDescription}}{{.appConfig.SeoNavInfo.DhDescription}}{{else}}黄果短剧官方导航页,提供最新访问线路、永久地址、APP 下载与官方联系方式,快速进入首页与短剧内容。{{end}}">
<meta property="og:image" content="{{absURL .siteURL "/favicon.png?v=3"}}">
<meta name="twitter:title" content="{{if .appConfig.SeoNavInfo.DhTitle}}{{.appConfig.SeoNavInfo.DhTitle}}{{else if .appConfig.SeoNavInfo.DhSiteName}}{{.appConfig.SeoNavInfo.DhSiteName}}{{else if .title}}{{.title}}{{else}}黄果短剧 · 官方导航{{end}}">
<meta name="twitter:description" content="{{if .appConfig.SeoNavInfo.DhDescription}}{{.appConfig.SeoNavInfo.DhDescription}}{{else}}黄果短剧官方导航页,提供最新访问线路、永久地址、APP 下载与官方联系方式,快速进入首页与短剧内容。{{end}}">
<meta name="twitter:image" content="{{absURL .siteURL "/favicon.png?v=3"}}">
{{if .jsonLD}}
<script type="application/ld+json">{{.jsonLD}}</script>
{{end}}
<link rel="stylesheet" href="/static/css/nav.css?v=2">
</head>
<body class="nav-page-body">
<main class="nav-page">
<h1 class="nav-page-title">{{if .appConfig.SeoNavInfo.DhSiteName}}{{.appConfig.SeoNavInfo.DhSiteName}}{{else if .appConfig.SeoNavInfo.DhTitle}}{{.appConfig.SeoNavInfo.DhTitle}}{{else if .title}}{{.title}}{{else}}黄果短剧 · 官方导航{{end}}</h1>
<section class="nav-brand" aria-label="品牌介绍">
<a class="nav-brand-lockup" href="/" aria-label="黄果短剧首页">
<img class="nav-brand-logo" src="/static/images/logo.png?v=3" width="183" height="57" alt="黄果短剧" title="黄果短剧" />
</a>
<div class="nav-brand-tagline">全网最新最火短剧,黄果为你呈现</div>
<div class="nav-brand-highlight">永久免费 最新资源 无需下载</div>
</section>
<section class="nav-entries" aria-label="访问入口">
{{range .appConfig.NavPageList}}
<a class="nav-entry" href="{{.URL}}" target="_blank" rel="sponsored nofollow noopener noreferrer">
<span class="nav-entry-copy">
<span class="nav-entry-name">黄果短剧 · {{.Label}}</span>
<span class="nav-entry-url">{{navDisplayURL .URL}}</span>
</span>
<span class="nav-entry-cta">立即进入<img src="/static/images/figma-nav/entry-arrow.svg" width="5" height="4" alt="" /></span>
</a>
{{end}}
{{if .appConfig.ForeverURLAddr}}
<a class="nav-entry nav-entry--forever" href="{{.appConfig.ForeverURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">
<span class="nav-entry-name">永久域名(VPN访问)</span>
<span class="nav-entry-url">{{navDisplayURL .appConfig.ForeverURLAddr}}</span>
</a>
{{end}}
</section>
{{if .appConfig.AppAddr}}
<a class="nav-banner" href="{{.appConfig.AppAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">
<img class="nav-banner-bg" src="/static/images/figma-nav/app-banner.png" width="319" height="64" alt="" />
<span class="nav-banner-text">黄果短剧 · APP 下载</span>
</a>
{{end}}
{{if .appConfig.TGGroup}}
<a class="nav-contact" href="{{.appConfig.TGGroup}}" target="_blank" rel="sponsored nofollow noopener noreferrer">官方联系:{{.appConfig.TGGroup}}</a>
{{end}}
<section class="nav-icons" aria-label="官方服务与联系方式">
{{if .appConfig.TGGroup}}
<a class="nav-icon-item" href="{{.appConfig.TGGroup}}" target="_blank" rel="sponsored nofollow noopener noreferrer">
<span class="nav-icon-circle">
<img class="nav-icon-img" src="/static/images/figma-nav/telegram.svg" width="16" height="16" alt="" />
</span>
<span class="nav-icon-label">官方TG群</span>
</a>
{{end}}
{{if .appConfig.TwitterAddr}}
<a class="nav-icon-item" href="{{.appConfig.TwitterAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">
<span class="nav-icon-circle">
<img class="nav-icon-img" src="/static/images/figma-nav/x.svg" width="16" height="16" alt="" />
</span>
<span class="nav-icon-label">官方推特</span>
</a>
{{end}}
{{if .appConfig.PDFAddr}}
<a class="nav-icon-item" href="{{.appConfig.PDFAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">
<span class="nav-icon-circle">
<img class="nav-icon-img" src="/static/images/figma-nav/home.svg" width="16" height="16" alt="" />
</span>
<span class="nav-icon-label">回家的路</span>
</a>
{{end}}
{{if .appConfig.AppAddr}}
<a class="nav-icon-item" href="{{.appConfig.AppAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">
<span class="nav-icon-circle">
<img class="nav-icon-img nav-icon-img--app" src="/static/images/figma-nav/app.svg" width="18" height="18" alt="" />
</span>
<span class="nav-icon-label">APP</span>
</a>
{{end}}
{{if .appConfig.PotaoGroup}}
<a class="nav-icon-item" href="{{.appConfig.PotaoGroup}}"{{if hasPrefix .appConfig.PotaoGroup "http"}} target="_blank" rel="sponsored nofollow noopener noreferrer"{{end}}>
<span class="nav-icon-circle">
<img class="nav-icon-img" src="/static/images/figma-nav/benefits.svg" width="16" height="16" alt="" />
</span>
<span class="nav-icon-label">福利应用</span>
</a>
{{end}}
</section>
<footer class="nav-footer">
<div class="nav-footer-note">本站仅提供短剧内容与产品服务<br />请遵守当地法律法规,未成年人请在监护人指导下使用</div>
<div class="nav-footer-copy">© 2026 黄果短剧 · 官方发布页</div>
</footer>
</main>
{{template "scrollToTop" .}}
{{template "downloadAppFloat" .}}
{{template "pageConsole" .}}
<noscript><div><img src="https://mc.yandex.ru/watch/112390883" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<script defer src="/static/common/imgDecypt.js?v=2"></script>
{{template "dialogAd" .}}
</body>
</html>
+399
View File
@@ -0,0 +1,399 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{{template "seoCommon" .}}
{{$siteTitle := "黄果短剧"}}{{if and .playlet .playlet.SeoInfo.WebSiteName}}{{$siteTitle = .playlet.SeoInfo.WebSiteName}}{{else if and .chapter .chapter.SeoInfo.WebSiteName}}{{$siteTitle = .chapter.SeoInfo.WebSiteName}}{{else if .seoInfo.WebSiteName}}{{$siteTitle = .seoInfo.WebSiteName}}{{else if .appConfig.SeoInfo.WebSiteName}}{{$siteTitle = .appConfig.SeoInfo.WebSiteName}}{{end}}
{{$pageTitle := "在线播放"}}
{{if .chapter}}
{{if .chapter.SeoInfo.Title}}{{if .chapter.CurrentEpisode}}{{$pageTitle = printf "%s - 第%d集" .chapter.SeoInfo.Title .chapter.CurrentEpisode}}{{else}}{{$pageTitle = .chapter.SeoInfo.Title}}{{end}}
{{else if .playlet}}{{if .playlet.SeoInfo.Title}}{{if .chapter.CurrentEpisode}}{{$pageTitle = printf "%s - 第%d集" .playlet.SeoInfo.Title .chapter.CurrentEpisode}}{{else}}{{$pageTitle = .playlet.SeoInfo.Title}}{{end}}{{else if .title}}{{$pageTitle = .title}}{{end}}
{{else if .title}}{{$pageTitle = .title}}{{end}}
{{else if .playlet}}{{if .playlet.SeoInfo.Title}}{{$pageTitle = .playlet.SeoInfo.Title}}{{else if .title}}{{$pageTitle = .title}}{{end}}
{{else if .title}}{{$pageTitle = .title}}{{end}}
<title>{{$pageTitle}} - {{$siteTitle}}</title>
<meta name="description" content="{{if .playlet}}{{if .playlet.Desc}}{{.playlet.Desc}}{{else}}正在播放《{{.playlet.Title}}》{{if .chapter}}第{{.chapter.CurrentEpisode}}集{{end}},高清在线观看。{{end}}{{else if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}黄果短剧高清在线播放,流畅观影不错过精彩剧情。{{end}} - 黄果短剧">
<meta name="keywords" content="{{if .playlet}}{{.playlet.Title}}{{range .playlet.ThemeNames}},{{.}}{{end}}{{range .playlet.TagNames}},{{.}}{{end}},在线播放,短剧播放,黄果短剧{{else if .seoInfo.Keywords}}{{joinStrings .seoInfo.Keywords ","}}{{else}}短剧播放,在线观看,黄果短剧{{end}}">
<meta property="og:type" content="video.episode">
<meta property="og:title" content="{{$pageTitle}} - {{$siteTitle}}">
<meta property="og:description" content="{{if .playlet}}{{if .playlet.Desc}}{{.playlet.Desc}}{{else}}正在播放《{{.playlet.Title}}》{{end}}{{else if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}黄果短剧高清在线播放。{{end}}">
{{if .playlet}}{{if .playlet.Cover}}<meta property="og:image" content="{{.playlet.Cover}}">
<meta name="twitter:image" content="{{.playlet.Cover}}">{{end}}{{end}}
<meta name="twitter:title" content="{{$pageTitle}} - {{$siteTitle}}">
<meta name="twitter:description" content="{{if .playlet}}{{if .playlet.Desc}}{{.playlet.Desc}}{{else}}正在播放《{{.playlet.Title}}》{{end}}{{else if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}黄果短剧高清在线播放。{{end}}">
{{if .jsonLD}}
<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=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>
<script defer src="/static/common/DPlayer.min.js"></script>
</head>
<body class="site-shell is-play-page">
{{template "header" .}}
{{$playlet := .playlet}}
{{$chapter := .chapter}}
{{$playletID := .playletID}}
{{$playletSlug := .playletSlug}}
{{$canWatch := false}}
{{$needUnlock := false}}
{{$needVip := false}}
{{if $chapter}}
{{$canWatch = $chapter.AllowWatch}}
{{$needUnlock = $chapter.NeedUnlock}}
{{$needVip = $chapter.NeedVip}}
{{end}}
{{if or $chapter $playlet}}
<main
class="page-shell play-page"
data-play-page
data-playlet-id="{{$playletID}}"
data-playlet-slug="{{$playletSlug}}"
data-play-title="{{if $playlet}}{{$playlet.Title}}{{end}}"
data-play-cover="{{if $playlet}}{{$playlet.Cover}}{{end}}"
data-play-desc="{{if $playlet}}{{$playlet.Desc}}{{end}}"
data-play-tag="{{if $playlet}}{{themeTagText $playlet.ThemeNames $playlet.TagNames}}{{end}}"
data-play-featured="{{if and $playlet $playlet.IsFeatured}}1{{else}}0{{end}}"
data-play-new="{{if and $playlet $playlet.IsNew}}1{{else}}0{{end}}"
data-play-total-episode="{{if $playlet}}{{$playlet.TotalEpisode}}{{else}}0{{end}}"
data-play-episode="{{if $chapter}}{{$chapter.CurrentEpisode}}{{else}}0{{end}}"
>
<nav class="play-breadcrumb" aria-label="面包屑">
<a class="play-breadcrumb-link" href="/">首页</a>
<span class="play-breadcrumb-sep">/</span>
<a class="play-breadcrumb-link" href="/list/ai-short-play/">短剧</a>
<span class="play-breadcrumb-sep">/</span>
{{if $playletID}}
<a class="play-breadcrumb-link" href="{{detailURL $playletSlug $playletID}}">{{if $playlet}}{{$playlet.Title}}{{else}}短剧{{end}}</a>
{{else}}
<span class="play-breadcrumb-link">{{if $playlet}}{{$playlet.Title}}{{else}}短剧{{end}}</span>
{{end}}
{{if $chapter}}
<span class="play-breadcrumb-sep">/</span>
<span class="play-breadcrumb-current">第{{$chapter.CurrentEpisode}}集</span>
{{end}}
</nav>
<div class="play-layout">
<div class="play-main">
<div class="play-player" data-play-player data-playlet-id="{{$playletID}}"{{if $chapter}} data-chapter-id="{{$chapter.ID}}" data-pay-type="{{$chapter.PayType}}" data-can-watch="{{if $canWatch}}1{{else}}0{{end}}" data-need-unlock="{{if $needUnlock}}1{{else}}0{{end}}" data-need-vip="{{if $needVip}}1{{else}}0{{end}}"{{end}}>
{{if and $chapter $canWatch $chapter.VideoURL}}
<div class="dplayer-video"
data-url="{{$chapter.VideoURL}}"
{{if and $playlet $playlet.Cover}}data-cover="{{$playlet.Cover}}"{{end}}></div>
{{end}}
{{if $playlet}}
<img class="play-player-cover lazy" src="/static/images/placeholder.png?v=2" data-src="{{$playlet.Cover}}" alt="{{$playlet.Title}}" title="{{$playlet.Title}}" data-play-poster />
{{else}}
<img class="play-player-cover" src="/static/images/placeholder.png?v=2" alt="短剧封面" title="短剧封面" data-play-poster />
{{end}}
{{if and $chapter $canWatch $chapter.VideoURL}}
<button class="play-player-center" type="button" aria-label="播放" data-play-poster-play>
<img src="/static/images/figma-play/control-center-play.svg" alt="播放" />
</button>
{{else if and $chapter (not $canWatch)}}
<div class="play-player-locked" data-play-locked-cta>
<p class="play-player-locked-text">本集为APP专享剧集</p>
<button class="play-player-locked-btn" type="button" data-play-download-app>下载APP观看完整剧集</button>
</div>
{{end}}
<div class="play-player-gradient play-player-gradient--top" aria-hidden="true"></div>
<div class="play-player-gradient play-player-gradient--bottom" aria-hidden="true"></div>
<div class="play-h5-top">
<a class="play-h5-back" href="{{if $playletID}}{{detailURL $playletSlug $playletID}}{{else}}/{{end}}" data-nav-back{{if $playletID}} data-nav-fallback="{{detailURL $playletSlug $playletID}}"{{else}} data-nav-fallback="/"{{end}} aria-label="返回">
<img src="/static/images/figma-play/nav-back.svg" alt="返回" />
</a>
<div class="play-h5-ep" data-play-h5-ep>{{if $chapter}}第{{$chapter.CurrentEpisode}}集{{else}}播放{{end}}</div>
<div class="play-h5-speed-wrap" data-play-speed-wrap>
<button class="play-h5-speed" type="button" data-play-speed aria-expanded="false" aria-haspopup="dialog" aria-label="倍速">
<img class="play-h5-speed-icon" src="/static/images/figma-play/nav-speed.svg" alt="倍速" />
<span data-play-speed-label>1.0x</span>
</button>
</div>
<a class="play-h5-feedback" href="/feedback/" aria-label="反馈">
<img src="/static/images/figma-play/nav-feedback.svg" alt="反馈" />
</a>
</div>
<div class="play-h5-side">
<button class="play-h5-side-item" type="button" data-play-comment-open>
<img src="/static/images/comment.svg" alt="评论" />
<span data-play-comment-count>{{if $chapter}}{{$chapter.CountComment}}{{else}}0{{end}}</span>
</button>
<button class="play-h5-side-item" type="button" data-detail-share data-playlet-id="{{$playletID}}">
<img src="/static/images/h5_share.svg" alt="分享" />
<span>分享</span>
</button>
</div>
<div class="play-h5-meta">
<div class="play-h5-meta-title">
<button type="button" data-play-ep-open>
<span>{{if $playlet}}{{$playlet.Title}}{{else}}短剧{{end}}</span>
<img src="/static/images/arrow_right2.svg" alt="下一集" />
</button>
</div>
{{if $playlet}}
{{if $playlet.TagNames}}
<div class="play-h5-meta-tags">
{{range namedTags $playlet.TagIDs $playlet.TagNames $playlet.TagSlugs}}
{{if .URL}}<a class="play-h5-meta-tag" href="{{.URL}}">{{.Name}}</a>{{else}}<span class="play-h5-meta-tag">{{.Name}}</span>{{end}}
{{end}}
</div>
{{end}}
<div class="play-h5-meta-intro">
<p class="play-h5-meta-text" data-play-intro>{{if $playlet.Desc}}{{$playlet.Desc}}{{else}}暂无简介{{end}}</p>
<button class="play-h5-meta-more" type="button" data-play-intro-more hidden>展开</button>
</div>
{{end}}
</div>
<div class="play-h5-next" data-play-next hidden>
<span class="play-h5-next-label">自动播放下一集</span>
<span class="play-h5-next-countdown" data-play-next-countdown>倒计时3s</span>
</div>
</div>
<div class="play-h5-bottom">
<button class="play-h5-ep-picker" type="button" data-play-ep-open>
<span>选集{{if $playlet}}{{if $playlet.TotalEpisode}}·全{{$playlet.TotalEpisode}}集{{end}}·{{updateStatusText $playlet.UpdateStatus}}{{end}}</span>
<img src="/static/images/arrow_up.svg" alt="收起" />
</button>
<button class="play-h5-comment" type="button" data-play-comment-open aria-label="评论">
<img src="/static/images/comment.svg" alt="评论" />
</button>
<button class="play-h5-clear" type="button" data-play-clear aria-label="清屏">
<img src="/static/images/full_screen.svg" alt="清屏" data-play-clear-icon />
</button>
</div>
{{template "contentPromo" $}}
<div class="play-info">
<div class="play-info-text">
<div class="play-info-ep" data-play-info-ep>{{if $chapter}}第 {{$chapter.CurrentEpisode}} 集{{else}}—{{end}}</div>
<h1 class="play-info-title">{{if $playlet}}{{$playlet.Title}}{{else}}短剧播放{{end}}</h1>
{{if $playlet}}
{{if $playlet.TagNames}}
<div class="play-info-tags">
{{range namedTags $playlet.TagIDs $playlet.TagNames $playlet.TagSlugs}}
{{if .URL}}<a class="play-info-tag" href="{{.URL}}">{{.Name}}</a>{{else}}<span class="play-info-tag">{{.Name}}</span>{{end}}
{{end}}
</div>
{{end}}
{{end}}
<div class="play-info-sub" data-play-info-sub>
{{if and $playlet $chapter}}{{$playlet.Title}} - 第{{printf "%02d" $chapter.CurrentEpisode}}集{{else if $playlet}}{{$playlet.Title}}{{else}}—{{end}}
</div>
{{if $playlet}}
<div class="play-info-meta">
<span>集数:{{$playlet.TotalEpisode}}集</span>
<span>上线时间 : {{playletDateText $playlet.OnlineAt $playlet.MediaCreatedAt $playlet.CreatedAt}}</span>
</div>
<p class="play-info-desc">{{if $playlet.Desc}}{{$playlet.Desc}}{{else}}暂无简介{{end}}</p>
{{end}}
</div>
<div class="play-info-actions">
<button class="detail-action" type="button" data-detail-share data-playlet-id="{{$playletID}}">
<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>
<a
class="play-download-btn"
href="{{if .appConfig.AppAddr}}{{.appConfig.AppAddr}}{{else}}/download-app/{{end}}"
{{if .appConfig.AppAddr}}target="_blank" rel="sponsored nofollow noopener noreferrer"{{end}}
>下载APP</a>
</div>
<section class="play-episodes">
<h2 class="play-episodes-label">剧集</h2>
{{with $.episodeRanges}}
<div class="play-ep-ranges" data-play-ep-ranges>
{{range $i, $r := .}}
<button class="play-ep-range{{if eq $i 0}} play-ep-range--active{{end}}" type="button" data-range-start="{{$r.Start}}" data-range-end="{{$r.End}}">{{$r.Label}}</button>
{{end}}
</div>
{{end}}
<div class="play-ep-grid" data-play-ep-grid>
{{range $.chapters}}
{{$active := and $chapter (eq .ID $chapter.ID)}}
{{if .AllowWatch}}
<a class="play-ep{{if $active}} play-ep--active{{end}}" href="{{chapterPlayURL $playletSlug $playletID .ID}}" data-ep="{{.CurrentEpisode}}" data-chapter-id="{{.ID}}" data-play-switch>
<span class="play-ep-num">{{.CurrentEpisode}}</span>
</a>
{{else}}
<a class="play-ep{{if $active}} play-ep--active{{end}}" href="javascript:;" data-ep="{{.CurrentEpisode}}" data-chapter-id="{{.ID}}" data-play-locked aria-label="第{{.CurrentEpisode}}集,下载APP观看">
<span class="play-ep-num">{{.CurrentEpisode}}</span>
<span class="play-ep-lock" aria-hidden="true">APP</span>
</a>
{{end}}
{{else}}
<div class="section-empty">暂无剧集</div>
{{end}}
</div>
</section>
{{template "contentOfficialInfo" $}}
{{template "contentAds" $}}
{{if $chapter}}
<section class="detail-comments play-comments"
data-comment-object-id="{{$chapter.ID}}"
data-comment-object-type="11"
data-comment-size="10">
<div class="detail-comments-head">
<h2 class="detail-comments-title" data-comment-title>评论</h2>
<div class="detail-comments-head-gap" aria-hidden="true"></div>
<div class="detail-comments-sort">
<button class="detail-sort-btn detail-sort-btn--active" type="button" data-comment-sort="1">热门</button>
<button class="detail-sort-btn" type="button" data-comment-sort="2">最新</button>
</div>
</div>
<div class="detail-comment-list" data-comment-list>
<div class="section-empty" data-comment-loading>评论加载中…</div>
</div>
<button class="detail-comments-more" type="button" data-comment-more hidden>加载更多</button>
</section>
{{end}}
</div>
<div class="content-column-divider" aria-hidden="true"></div>
<aside class="play-sidebar">
{{if $playlet}}{{template "contentHotSidebar" $playlet}}{{end}}
</aside>
</div>
</main>
<div class="play-h5-sheet-mask" aria-hidden="true"></div>
<div class="play-speed-sheet" data-play-speed-sheet role="dialog" aria-modal="true" aria-label="倍速">
<div class="play-speed-sheet-head">
<button class="play-speed-sheet-collapse" type="button" aria-label="收起" data-play-speed-close>
<img src="/static/images/arrow_down.svg" alt="展开选集" />
</button>
<div class="play-speed-sheet-title">倍速</div>
<div class="play-speed-sheet-spacer" aria-hidden="true"></div>
</div>
<div class="play-speed-sheet-list" data-play-speed-menu role="listbox" aria-label="选择倍速"></div>
</div>
<div class="play-ep-sheet" data-play-ep-sheet role="dialog" aria-modal="true" aria-label="选集">
<div class="play-ep-sheet-handle" aria-hidden="true"></div>
{{if $playlet}}
<div class="play-ep-sheet-drama">
<div class="play-ep-sheet-drama-main">
<img class="play-ep-sheet-cover lazy" src="/static/images/placeholder.png?v=2" data-src="{{$playlet.Cover}}" alt="{{$playlet.Title}}" title="{{$playlet.Title}}" />
<div class="play-ep-sheet-drama-info">
<div class="play-ep-sheet-drama-title">
<span>{{$playlet.Title}}</span>
<button class="play-ep-sheet-drama-close" type="button" aria-label="关闭" data-play-ep-close>
<img src="/static/images/arrow_right2.svg" alt="下一集" />
</button>
</div>
<div class="play-ep-sheet-drama-status">{{updateStatusText $playlet.UpdateStatus}}{{if $playlet.TotalEpisode}} 共{{$playlet.TotalEpisode}}集{{end}}</div>
</div>
</div>
</div>
{{end}}
<div class="play-ep-sheet-tabs">
{{range $i, $r := $.episodeRanges}}
<button class="play-ep-sheet-tab{{if eq $i 0}} play-ep-sheet-tab--active{{end}}" type="button" data-ep-tab="eps" data-range-start="{{$r.Start}}" data-range-end="{{$r.End}}">{{$r.Label}}</button>
{{end}}
{{if and $playlet $playlet.RelatedRecommendData}}
<button class="play-ep-sheet-tab" type="button" data-ep-tab="more">更多好剧</button>
{{end}}
</div>
<div class="play-ep-sheet-panel" data-ep-panel="eps">
<div class="play-ep-sheet-grid">
{{range $.chapters}}
{{$active := and $chapter (eq .ID $chapter.ID)}}
{{if .AllowWatch}}
<a class="play-ep-sheet-item{{if $active}} play-ep-sheet-item--active{{end}}" href="{{chapterPlayURL $playletSlug $playletID .ID}}" data-ep="{{.CurrentEpisode}}" data-chapter-id="{{.ID}}" data-play-switch>
<span class="play-ep-sheet-num">{{.CurrentEpisode}}</span>
</a>
{{else}}
<a class="play-ep-sheet-item{{if $active}} play-ep-sheet-item--active{{end}}" href="javascript:;" data-ep="{{.CurrentEpisode}}" data-chapter-id="{{.ID}}" data-play-locked aria-label="第{{.CurrentEpisode}}集,下载APP观看">
<span class="play-ep-sheet-num">{{.CurrentEpisode}}</span>
<span class="play-ep-sheet-lock" aria-hidden="true">APP</span>
</a>
{{end}}
{{else}}
<div class="section-empty">暂无剧集</div>
{{end}}
</div>
</div>
{{if and $playlet $playlet.RelatedRecommendData}}
<div class="play-ep-sheet-panel play-ep-sheet-panel--more is-hidden" data-ep-panel="more">
<div class="play-ep-more-grid">
{{range $playlet.RelatedRecommendData}}
<a class="play-ep-more-card" href="{{detailURL .Slug .ID}}">
<div class="play-ep-more-cover">
<img class="lazy" src="/static/images/placeholder.png?v=2" data-src="{{coverURL .Cover .Banner}}" alt="{{.Title}}" title="{{.Title}}" />
<div class="play-ep-more-heat">
<img src="/static/images/playing.svg" alt="正在播放" />
<span>{{formatHeat .HeatValue}}</span>
</div>
</div>
<div class="play-ep-more-title">{{.Title}}</div>
{{$tag := themeTagText .ThemeNames .TagNames}}{{$ep := episodeLabel .TotalEpisode}}
<div class="play-ep-more-meta">{{if and $tag $ep}}{{$tag}} · {{$ep}}{{else}}{{or $tag $ep}}{{end}}</div>
</a>
{{end}}
</div>
</div>
{{end}}
</div>
{{if $chapter}}
<div class="play-comment-sheet" data-play-comment-sheet role="dialog" aria-modal="true" aria-label="评论">
<div class="play-comment-sheet-panel">
<div class="play-comment-sheet-head">
<button class="play-comment-sheet-collapse" type="button" aria-label="收起" data-play-comment-close>
<img src="/static/images/arrow_down.svg" alt="展开" />
</button>
<div class="play-comment-sheet-title" data-play-comment-title>评论</div>
<div class="play-comment-sort" role="tablist" aria-label="评论排序">
<button class="play-comment-sort-btn play-comment-sort-btn--active" type="button" data-comment-sort="2">最新</button>
<button class="play-comment-sort-btn" type="button" data-comment-sort="1">最热</button>
</div>
</div>
<section class="detail-comments play-comment-sheet-body" aria-label="评论列表"
data-comment-object-id="{{$chapter.ID}}"
data-comment-object-type="11"
data-comment-size="10"
data-comment-sort-default="2">
<div class="play-comment-sheet-list detail-comment-list" data-comment-list>
<div class="section-empty play-comment-empty" data-comment-loading>评论加载中…</div>
</div>
<button class="detail-comments-more play-comment-sheet-more" type="button" data-comment-more hidden>加载更多</button>
</section>
</div>
</div>
{{end}}
{{else}}
<main class="page-shell play-page">
<h1 class="seo-visually-hidden">短剧播放 - 黄果短剧</h1>
{{template "empty" .}}
</main>
{{end}}
{{template "footer" .}}
<script src="/static/js/pages/detail.js?v=15"></script>
<script src="/static/js/pages/play.js?v=15"></script>
</body>
</html>
+95
View File
@@ -0,0 +1,95 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{template "seoCommon" .}}
<title>隐私政策 - 黄果短剧</title>
<meta
name="description"
content="黄果短剧隐私政策:说明我们如何收集、使用与保护你的个人信息 - 黄果短剧"
/>
<meta name="keywords" content="隐私政策,个人信息保护,黄果短剧隐私" />
<meta property="og:type" content="article" />
<meta property="og:title" content="隐私政策 - 黄果短剧" />
<meta
property="og:description"
content="黄果短剧隐私政策:说明我们如何收集、使用与保护你的个人信息。"
/>
{{if .jsonLD}}
<script type="application/ld+json">
{{.jsonLD}}
</script>
{{end}}
<link rel="stylesheet" href="/static/css/contentPage.css?v=9" />
</head>
<body class="site-shell content-layout is-privacy-page">
{{template "header" .}}
<main class="content-page privacy-page">
<div class="content-pc">
<nav class="content-breadcrumb" aria-label="面包屑">
<a class="content-breadcrumb-link" href="/">首页</a>
<span class="content-breadcrumb-sep">/</span>
<span class="content-breadcrumb-current">隐私政策</span>
</nav>
<div class="content-head">
<h1 class="content-title">隐私政策</h1>
<p class="content-subtitle">我们重视您的个人信息与隐私安全</p>
</div>
</div>
<header class="content-nav">
<a
class="content-nav-back"
href="javascript:history.back()"
aria-label="返回"
>
<img src="/static/images/back.svg" alt="返回" />
</a>
<div class="content-nav-title">隐私政策</div>
<span class="content-nav-spacer" aria-hidden="true"></span>
</header>
<div class="content-main">
<article class="content-card legal-article">
<h2 class="legal-heading">隐私政策</h2>
<div class="legal-copy">黄果短剧(以下简称本公司)非常重视您的隐私权,并依据《个人资料保护法》(以下简称个资法)的规定,向您告知下列有关隐私权保护政策的更多内容。
一、本公司使用您个人资料的目的
(一)会员管理
(二)提供会员服务,例如:发送电子邮件通知、调阅游戏历程
二、个人资料收集及利用之期间、对象、地区及方式
(一)期间:平台提供相关服务及营运期间。
(二)对象:本公司。个人资料的收集及利用不适用于非本公司所有或控制的公司,也不适用于非本公司雇用或管理之人,本公司的关系企业或子公司将使用其原先的隐私权政策。
(三)地区:营运之地区。
(四)方式:本公司在您使用官网服务信箱或进行其他活动时,会收集您所提供的姓名、电子邮件地址、联络方式等。
三、依据个资法第三条规定,您就本公司保有个人资料得行使之权利及方式
(一)得行使之权利:查询、请求阅览;请求制给复制本;请求补充或更正;请求停止收集、处理或利用;请求删除。
(二)行使权利之方式:以书面将申请行使上述权利的资料送至本公司所在地。
四、您不同意提供个人资料所致权益之影响
您可自由选择是否提供个人资料给本公司,但若特定资料栏位属于必填栏位,您若不提供该等资料,则可能造成无法使用本公司相关的产品及服务。建议您应提供完整的个人资料并随时更新。若因您未提供完整且真实的个人资料,造成您及第三人发生损害时,您应负担一切责任。
五、资料分享与披露
除非是为了向您提供您所要求的产品或服务、获得您的授权,或有以下情形,否则本公司不会将您的个人资料披露给第三人或用于收集目的以外的其他用途:
(一)本公司因业务需要,有必要委托本公司相关单位或关系企业提供服务的情形,本公司将严格要求其遵守保密义务,并采取必要检查程序以确定其将确实遵守。
(二)本公司对法院传票、行政命令或法律程序作出回应或行使法律权利,或对诉讼上的请求提出防御的情形。
(三)为了调查和防止非法活动、涉嫌欺诈、对人身安全有潜在威胁的情况、对本公司服务条款的违反,或为了对上述情形采取应对措施,或法律另有规定,而有必要提供您的个人资料时。
(四)如果本公司全部或部分业务被其他公司收购或合并,我们会将您的个人资料移转给该公司。如果发生这种情况,本公司会在您的个人资料被移转且将适用不同的隐私权政策前通知您。
六、机密性与安全性
我们会将有权存取您个人资料的员工,限定于我们合理相信是为了向您提供产品或服务或为了完成工作而需要取得这些资料的员工。我们将采取符合法规要求的实体、电子和程序防护措施,以保护您个人资料的安全,防止您的个人资料被窃取、篡改、毁损、灭失或泄漏。
七、隐私权保护政策修订
本公司有权不时修订本政策。当我们在个人资料及隐私权政策的处理上有重大变更时,会在我们的网站上张贴告示。请您密切注意以保障个人权益。当您于隐私权政策修改或变更后继续使用本公司所提供之产品及服务,即表示您已阅读、了解并同意接受隐私权政策修改或变更后的内容。如果您不同意本隐私权政策,请您立即停止使用本公司所提供之产品及服务。
八、问题和建议
如果您有任何问题或建议,请通过客户服务信箱与我们联系。</div>
</article>
</div>
</main>
{{template "footer" .}}
</body>
</html>
+82
View File
@@ -0,0 +1,82 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{{template "seoCommon" .}}
<title>{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .title}}{{.title}} - 黄果短剧{{else}}短剧排行榜 - 黄果短剧{{end}}</title>
<meta name="description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}黄果短剧排行榜实时更新热播短剧,查看热门榜、飙升榜,不错过高口碑必看剧集。 - 黄果短剧{{end}}">
<meta name="keywords" content="{{if .seoInfo.Keywords}}{{joinStrings .seoInfo.Keywords ","}}{{else}}短剧排行榜,热播短剧,短剧热门榜,黄果短剧,飙升榜{{end}}">
<meta property="og:type" content="website">
<meta property="og:title" content="{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .title}}{{.title}} - 黄果短剧{{else}}短剧排行榜 - 黄果短剧{{end}}">
<meta property="og:description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}黄果短剧排行榜实时更新热播短剧,查看热门榜、飙升榜。{{end}}">
{{if .jsonLD}}
<script type="application/ld+json">{{.jsonLD}}</script>
{{end}}
<link rel="stylesheet" href="/static/css/index.css?v=25">
<link rel="stylesheet" href="/static/css/rank.css?v=11">
</head>
<body class="site-shell has-h5-tabbar rank-page-body">
{{template "header" .}}
<main class="page-shell rank-page">
<div class="rank-hero">
<nav class="rank-breadcrumb" aria-label="面包屑">
<a href="/">首页</a><span aria-hidden="true">/</span><span aria-current="page">排行榜</span>
</nav>
<div class="rank-channel">
<h1 class="rank-channel-title">全站排行榜</h1>
<div class="rank-channel-desc">聚合站内播放、评分和近期热度表现突出的短剧内容,快速发现当前值得看的作品。</div>
</div>
<div class="rank-tabs">
{{range .tabs}}
<a class="rank-tab{{if .Active}} rank-tab--active{{end}}" href="{{.URL}}">
<span class="rank-tab-text{{if .Active}} rank-tab-text--active{{end}}">{{.Label}}</span>
</a>
{{end}}
</div>
<div class="card-grid">
{{range $i, $item := .list}}
<a class="poster-card rank-card" href="{{detailURL $item.Slug $item.ID}}">
<div class="poster-cover">
<img src="/static/images/placeholder.png?v=2" class="poster-cover-img lazy" data-src="{{coverURL $item.Cover $item.Banner}}" alt="{{$item.Title}}" title="{{$item.Title}}" />
{{template "posterCornerBadges" $item}}
{{with episodeLabel $item.TotalEpisode}}
<div class="episode-badge"><div class="text-white-xs">{{.}}</div></div>
{{end}}
{{$rank := add $.rankOffset (add $i 1)}}
<div class="poster-rank-badge">
<div class="poster-rank-bg-{{rankClass $rank}}"></div>
<div class="poster-rank-text">{{$rank}}</div>
</div>
</div>
<div class="poster-card-body">
<div class="poster-card-title">{{$item.Title}}</div>
{{if $item.Desc}}<div class="poster-card-subtitle">{{$item.Desc}}</div>{{end}}
<div class="poster-card-meta">
{{template "rankingCardTag" $item}}
<div class="flex-spacer"></div>
</div>
</div>
</a>
{{else}}
<div class="section-empty">暂无排行内容</div>
{{end}}
</div>
{{template "pagination" .}}
{{template "homeAdRow" dict "Ads" .appConfig.NineGridList "SlotKey" "rank_nine_grid" "SlotName" "排行榜横幅广告" "Label" "广告"}}
{{if .appConfig.BottomBanner}}
<div class="rank-ad-list" aria-label="广告">
{{range $ad := .appConfig.BottomBanner}}
<a class="rank-ad" {{if $ad.Link}}href="{{$ad.Link}}" target="_blank" rel="sponsored nofollow noopener noreferrer"{{else}}aria-disabled="true"{{end}} data-creative-id="{{$ad.ID}}">
<img class="lazy" src="/static/images/placeholder.png?v=2" data-src="{{$ad.Images}}" alt="{{$ad.Title}}" title="{{$ad.Title}}" width="758" height="94">
</a>
{{end}}
</div>
{{end}}
</div>
</main>
{{template "footer" .}}
</body>
</html>
+132
View File
@@ -0,0 +1,132 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{template "seoCommon" .}}
<title>
{{if .title}}{{.title}} - 黄果短剧{{else}}内容详情 - 黄果短剧{{end}}
</title>
<meta
name="description"
content="{{if .richtext}}{{if .richtext.Subtitle}}{{.richtext.Subtitle}}{{else}}{{.title}} - 黄果短剧官方说明与帮助内容。{{end}}{{else}}黄果短剧内容详情页。{{end}} - 黄果短剧"
/>
<meta
name="keywords"
content="{{if .title}}{{.title}},黄果短剧,帮助中心,协议说明{{else}}内容详情,黄果短剧{{end}}"
/>
<meta property="og:type" content="article" />
<meta
property="og:title"
content="{{if .title}}{{.title}} - 黄果短剧{{else}}内容详情 - 黄果短剧{{end}}"
/>
<meta
property="og:description"
content="{{if .richtext}}{{if .richtext.Subtitle}}{{.richtext.Subtitle}}{{else}}{{.title}} - 黄果短剧官方说明与帮助内容。{{end}}{{else}}黄果短剧内容详情页。{{end}}"
/>
{{if .jsonLD}}
<script type="application/ld+json">
{{.jsonLD}}
</script>
{{end}}
<link rel="stylesheet" href="/static/css/contentPage.css?v=11" />
</head>
<body class="site-shell content-layout is-richtext-page{{if eq .richtextKey "关于我们"}} is-richtext-about{{end}}">
{{template "header" .}}
<main class="content-page richtext-page">
<div class="content-pc">
<nav class="content-breadcrumb" aria-label="面包屑">
<a class="content-breadcrumb-link" href="/">首页</a>
<span class="content-breadcrumb-sep">/</span>
<span class="content-breadcrumb-current"
>{{if
.richtext.Title}}{{.richtext.Title}}{{else}}内容详情{{end}}</span
>
</nav>
<div class="content-head">
<h1 class="content-title">
{{if .richtext.Title}}{{.richtext.Title}}{{else}}内容详情{{end}}
</h1>
{{if .richtext.Subtitle}}
<p class="content-subtitle">{{.richtext.Subtitle}}</p>
{{end}}
</div>
</div>
<header class="content-nav">
<a
class="content-nav-back"
href="javascript:history.back()"
aria-label="返回"
>
<img src="/static/images/back.svg" alt="返回" />
</a>
<div class="content-nav-title">
{{if .richtext.Title}}{{.richtext.Title}}{{else}}内容详情{{end}}
</div>
<span class="content-nav-spacer" aria-hidden="true"></span>
</header>
<div class="content-main">
{{if .richtext.Found}}
<article class="content-card legal-article richtext-article">
<div class="richtext-body">{{.richtext.ContentHTML}}</div>
</article>
{{if eq .richtextKey "关于我们"}}
<section class="about-contact-card" aria-label="联系我们">
{{if .appConfig.Telegram}}
<a class="about-contact-item" href="{{.appConfig.Telegram}}"{{if hasPrefix .appConfig.Telegram "http"}} target="_blank" rel="sponsored nofollow noopener noreferrer"{{end}}>
<img class="about-contact-icon" src="/static/images/au_swhz.svg" alt="" />
<span class="about-contact-label">商务合作</span>
</a>
{{else}}
<span class="about-contact-item"><img class="about-contact-icon" src="/static/images/au_swhz.svg" alt="" /><span class="about-contact-label">商务合作</span></span>
{{end}}
{{if .appConfig.GmailAddr}}
<a class="about-contact-item" href="mailto:{{.appConfig.GmailAddr}}">
<img class="about-contact-icon" src="/static/images/au_yx.svg" alt="" />
<span class="about-contact-label">邮箱</span>
</a>
{{else}}
<span class="about-contact-item"><img class="about-contact-icon" src="/static/images/au_yx.svg" alt="" /><span class="about-contact-label">邮箱</span></span>
{{end}}
{{if .appConfig.TwitterAddr}}
<a class="about-contact-item" href="{{.appConfig.TwitterAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">
<img class="about-contact-icon" src="/static/images/au_tt.svg" alt="" />
<span class="about-contact-label">推特</span>
</a>
{{else}}
<span class="about-contact-item"><img class="about-contact-icon" src="/static/images/au_tt.svg" alt="" /><span class="about-contact-label">推特</span></span>
{{end}}
{{if .appConfig.TGGroup}}
<a class="about-contact-item" href="{{.appConfig.TGGroup}}" target="_blank" rel="sponsored nofollow noopener noreferrer">
<img class="about-contact-icon" src="/static/images/au_tgq.svg" alt="" />
<span class="about-contact-label">TG群</span>
</a>
{{else}}
<span class="about-contact-item"><img class="about-contact-icon" src="/static/images/au_tgq.svg" alt="" /><span class="about-contact-label">TG群</span></span>
{{end}}
{{if .appConfig.AppAddr}}
<a class="about-contact-item" href="{{.appConfig.AppAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">
<img class="about-contact-icon" src="/static/images/au_app.svg" alt="" />
<span class="about-contact-label">APP</span>
</a>
{{else}}
<span class="about-contact-item"><img class="about-contact-icon" src="/static/images/au_app.svg" alt="" /><span class="about-contact-label">APP</span></span>
{{end}}
{{if .appConfig.PotaoGroup}}
<a class="about-contact-item" href="{{.appConfig.PotaoGroup}}"{{if hasPrefix .appConfig.PotaoGroup "http"}} target="_blank" rel="sponsored nofollow noopener noreferrer"{{end}}>
<img class="about-contact-icon" src="/static/images/au_flyy.svg" alt="" />
<span class="about-contact-label">福利应用</span>
</a>
{{else}}
<span class="about-contact-item"><img class="about-contact-icon" src="/static/images/au_flyy.svg" alt="" /><span class="about-contact-label">福利应用</span></span>
{{end}}
</section>
{{end}}
{{else}} {{template "empty" .}} {{end}}
</div>
</main>
{{template "footer" .}}
</body>
</html>
+17
View File
@@ -0,0 +1,17 @@
User-agent: *
Allow: /
# 非 HTML 接口与工具路由不抓取
Disallow: /api/
Disallow: /ui/
Disallow: /healthz
# 媒体代理与解密 key
Disallow: /h5/
Disallow: /enkey
Disallow: /newenkey
# 登录、搜索和账户 HTML 页面允许抓取,以便爬虫读取页面内 noindex。
# 线上以动态 /robots.txt 为准(含绝对 Sitemap 地址与 Host)
Sitemap: /sitemap.xml
+155
View File
@@ -0,0 +1,155 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{template "seoCommon" .}}
<title>
{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .title}}{{.title}} -
黄果短剧{{else}}搜索短剧 - 黄果短剧{{end}}
</title>
<meta
name="description"
content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else if .description}}{{.description}}{{else}}在黄果短剧搜索短剧名称、标签与关键词,快速找到想看的剧集。{{end}} - 黄果短剧"
/>
<meta
name="keywords"
content="{{if .query}}{{.query}},短剧搜索,黄果短剧{{else}}短剧搜索,搜索短剧,黄果短剧{{end}}"
/>
<meta property="og:type" content="website" />
<meta
property="og:title"
content="{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .title}}{{.title}}{{else}}搜索短剧{{end}} - 黄果短剧"
/>
<meta
property="og:description"
content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else if .description}}{{.description}}{{else}}在黄果短剧搜索短剧名称、标签与关键词。{{end}}"
/>
<link rel="stylesheet" href="/static/css/index.css?v=25" />
<link rel="stylesheet" href="/static/css/search.css?v=7" />
</head>
<body class="site-shell search-layout {{if .query}}has-search-query{{else}}is-search-landing{{end}}">
{{template "header" .}}
<main class="search-page">
<div class="search-inner">
<nav class="search-breadcrumb" aria-label="面包屑">
<a class="search-breadcrumb-link" href="/">首页</a>
<span class="search-breadcrumb-sep">/</span>
{{if .query}}
<a class="search-breadcrumb-link search-breadcrumb-search-root" href="/search/">全站搜索</a>
<span class="search-breadcrumb-sep search-breadcrumb-search-root">/</span>
{{end}}
<span class="search-breadcrumb-current"
>{{if .query}}{{.query}}{{else}}全站搜索{{end}}</span
>
</nav>
<h1 class="search-page-title">
{{if .query}}关于“{{.query}}”的搜索结果{{else}}全站搜索{{end}}
</h1>
{{if not .query}}
<section class="mobile-search-landing" data-mobile-search-landing aria-label="全站搜索">
<form class="mobile-search-form" action="/search/" method="get" role="search">
<input
class="mobile-search-input"
type="search"
name="q"
placeholder="输入你想搜索的关键词.."
autocomplete="off"
aria-label="输入搜索关键词"
/>
<button class="mobile-search-submit" type="submit">搜索</button>
</form>
<section class="mobile-search-section mobile-search-history" data-mobile-search-history hidden>
<div class="mobile-search-heading">
<h2>搜索记录</h2>
<button type="button" data-mobile-search-history-clear>清除</button>
</div>
<div class="mobile-search-history-list" data-mobile-search-history-list></div>
</section>
<div class="mobile-search-divider" data-mobile-search-divider="history" hidden></div>
<section class="mobile-search-section mobile-search-hot" data-mobile-search-hot hidden>
<div class="mobile-search-heading"><h2>热搜榜</h2></div>
<div class="mobile-search-hot-list" data-mobile-search-hot-list aria-live="polite"></div>
</section>
<div class="mobile-search-divider" data-mobile-search-divider="hot" hidden></div>
<section class="mobile-search-section mobile-search-guess" data-mobile-search-guess hidden>
<div class="mobile-search-heading">
<h2>猜你喜欢</h2>
<button type="button" data-mobile-search-guess-change>换一换</button>
</div>
<div class="mobile-search-guess-list" data-mobile-search-guess-list aria-live="polite"></div>
</section>
</section>
{{end}}
<div class="search-results">
<section class="search-summary" aria-labelledby="searchResultTitle">
<h2 class="search-summary-title" id="searchResultTitle">
为您找到关于“<span>{{if .query}}{{.query}}{{else}}关键词{{end}}</span>”的短剧
</h2>
<p class="search-summary-description">
为你整理与“{{if .query}}{{.query}}{{else}}关键词{{end}}”相关的视频内容,汇集站内相关作品、热门内容及最新更新。通过搜索结果可以快速浏览与“{{if .query}}{{.query}}{{else}}关键词{{end}}”相关的视频和作品,发现更多符合兴趣的内容。
</p>
<p class="search-summary-count">
共 <span>{{if .totalCount}}{{.totalCount}}{{else}}0{{end}}</span> 个结果
</p>
</section>
<div class="card-grid search-grid">
{{range $i, $item := .list}}
<a
class="poster-card search-card"
href="{{detailURL $item.Slug $item.ID}}"
data-search-item="{{$item.ID}}"
data-search-item-type-key="playlet"
data-search-item-type-name="短剧"
data-search-position="{{add $i 1}}"
data-search-keyword="{{$.query}}"
>
<div class="poster-cover">
<img
src="/static/images/placeholder.png?v=2"
class="poster-cover-img lazy"
data-src="{{coverURL $item.Cover $item.Banner}}"
alt="{{$item.Title}}"
title="{{$item.Title}}"
/>
{{template "posterCornerBadges" $item}} {{template
"posterLikeBadge" $item}} {{with episodeLabel $item.TotalEpisode}}
<div class="episode-badge">
<div class="text-white-xs">{{.}}</div>
</div>
{{end}}
</div>
<div class="poster-card-body">
<div class="poster-card-title">{{$item.Title}}</div>
{{if $item.Desc}}
<div class="poster-card-subtitle">{{$item.Desc}}</div>
{{end}}
<div class="poster-card-meta">
{{template "posterCardTag" $item}}
<div class="poster-card-spacer"></div>
<div class="poster-card-heat">
{{formatHeat $item.HeatValue}}
</div>
</div>
</div>
</a>
{{else}} {{template "empty" .}} {{end}}
</div>
{{template "pagination" .}}
</div>
</div>
</main>
{{template "footer" .}}
<script defer src="/static/js/pages/mobileSearch.js?v=2"></script>
</body>
</html>
+73
View File
@@ -0,0 +1,73 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{{template "seoCommon" .}}
<title>{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else}}AI成人剧集在线观看 - 黄果短剧{{end}}</title>
<meta name="description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}黄果短剧精选AI成人剧集,持续更新热门漫剧、独家原创剧集,支持免费在线观看。{{end}}">
<meta name="keywords" content="{{if .seoInfo.Keywords}}{{joinStrings .seoInfo.Keywords ","}}{{else}}AI成人剧集,AI成人漫剧,热门漫剧,原创剧集,黄果短剧{{end}}">
<meta property="og:type" content="website">
<meta property="og:title" content="{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else}}AI成人剧集在线观看 - 黄果短剧{{end}}">
<meta property="og:description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}精选AI成人剧集与热门原创漫剧,持续更新,免费在线观看。{{end}}">
{{if .jsonLD}}
<script type="application/ld+json">{{.jsonLD}}</script>
{{end}}
<link rel="stylesheet" href="/static/css/index.css?v=25">
<link rel="stylesheet" href="/static/css/list.css?v=6">
</head>
<body class="site-shell has-h5-tabbar list-page-body series-page-body">
{{template "header" .}}
<main class="page-shell list-page series-page">
<div class="list-hero series-hero">
<nav class="list-breadcrumb" aria-label="面包屑">
<a href="/">首页</a><span aria-hidden="true">/</span><span aria-current="page">AI成人剧集</span>
</nav>
<h1 class="list-channel-title">AI成人剧集在线观看</h1>
<nav class="list-filters" aria-label="剧集筛选">
{{range .filters}}
<a class="filter-chip{{if .Active}} filter-chip--active{{end}}" href="{{.URL}}"{{if .Active}} aria-current="page"{{end}}>
<span class="filter-chip-text">{{.Label}}</span>
</a>
{{end}}
</nav>
<h2 class="list-section-title"><span class="list-section-mark" aria-hidden="true"></span><span>{{.sectionTitle}}</span></h2>
<div class="card-grid">
{{range .list}}
<a class="poster-card" href="{{detailURL .Slug .ID}}">
<div class="poster-cover">
<img src="/static/images/placeholder.png?v=2" class="poster-cover-img lazy" data-src="{{coverURL .Cover .Banner}}" alt="{{.Title}}" title="{{.Title}}" />
{{template "posterCornerBadges" .}}
{{with episodeLabel .TotalEpisode}}
<div class="episode-badge"><div class="text-white-xs">{{.}}</div></div>
{{end}}
</div>
<div class="poster-card-body">
<div class="poster-card-title">{{.Title}}</div>
{{if .Desc}}<div class="poster-card-subtitle">{{.Desc}}</div>{{end}}
<div class="poster-card-meta">
{{template "posterCardTag" .}}
<div class="flex-spacer"></div>
</div>
</div>
</a>
{{else}}
<div class="section-empty">暂无AI成人剧集内容</div>
{{end}}
</div>
{{template "pagination" .}}
{{template "homeAdRow" dict "Ads" .appConfig.NineGridList "SlotKey" "series_nine_grid" "SlotName" "剧集横幅广告" "Label" "广告"}}
{{if .appConfig.BottomBanner}}
<div class="list-ad-list" aria-label="广告">
{{range $ad := .appConfig.BottomBanner}}
<a class="list-ad" {{if $ad.Link}}href="{{$ad.Link}}" target="_blank" rel="sponsored nofollow noopener noreferrer"{{else}}aria-disabled="true"{{end}} data-creative-id="{{$ad.ID}}">
<img class="lazy" src="/static/images/placeholder.png?v=2" data-src="{{$ad.Images}}" alt="{{$ad.Title}}" title="{{$ad.Title}}" width="758" height="94">
</a>
{{end}}
</div>
{{end}}
</div>
</main>
{{template "footer" .}}
</body>
</html>
+60
View File
@@ -0,0 +1,60 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{{template "seoCommon" .}}
<title>{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .title}}{{.title}} - 黄果短剧{{else}}标签短剧 - 黄果短剧{{end}}</title>
<meta name="description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}黄果短剧{{if .pageTitle}}{{.pageTitle}}{{else}}标签{{end}}短剧合集,精选高清短剧免费在线观看。{{end}} - 黄果短剧">
<meta name="keywords" content="{{if .seoInfo.Keywords}}{{joinStrings .seoInfo.Keywords ","}}{{else}}{{if .pageTitle}}{{.pageTitle}},{{end}}标签短剧,热门短剧,黄果短剧{{end}}">
<meta property="og:type" content="website">
<meta property="og:title" content="{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .title}}{{.title}} - 黄果短剧{{else}}标签短剧 - 黄果短剧{{end}}">
<meta property="og:description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}黄果短剧{{if .pageTitle}}{{.pageTitle}}{{else}}标签{{end}}短剧合集,精选高清短剧免费在线观看。{{end}}">
{{if .jsonLD}}
<script type="application/ld+json">{{.jsonLD}}</script>
{{end}}
<link rel="stylesheet" href="/static/css/index.css?v=25">
<link rel="stylesheet" href="/static/css/more.css?v=3">
<link rel="stylesheet" href="/static/css/tagList.css?v=2">
</head>
<body class="site-shell has-h5-tabbar topic-page-body tag-page-body">
{{template "header" .}}
<main class="page-shell more-page tag-list-page">
<div class="more-hero tag-list-hero">
<nav class="more-breadcrumb tag-list-breadcrumb" aria-label="面包屑">
<a class="more-breadcrumb-link" href="/">首页</a>
<span>/</span>
<span class="more-breadcrumb-current tag-list-breadcrumb-current">{{if .pageName}}{{.pageName}}{{else if .pageTitle}}{{.pageTitle}}{{else}}标签{{end}}</span>
</nav>
<div class="more-intro tag-list-intro">
<h1 class="more-topic-title tag-list-channel-title">“{{if .pageTitle}}{{.pageTitle}}{{else}}标签{{end}}”相关短剧</h1>
<div class="more-topic-description tag-list-channel-desc">{{if .tagDescription}}{{.tagDescription}}{{else}}精选标签题材相关AI成人短剧与AI成人漫剧,持续更新标签题材作品,方便快速浏览相关短剧。{{end}}</div>
</div>
<div class="card-grid">
{{range .list}}
<a class="poster-card" href="{{detailURL .Slug .ID}}">
<div class="poster-cover">
<img src="/static/images/placeholder.png?v=2" class="poster-cover-img lazy" data-src="{{coverURL .Cover .Banner}}" alt="{{.Title}}" title="{{.Title}}" />
{{with episodeLabel .TotalEpisode}}
<div class="episode-badge"><div class="text-white-xs">{{.}}</div></div>
{{end}}
</div>
<div class="poster-card-body">
<div class="poster-card-title">{{.Title}}</div>
{{if .Desc}}<div class="poster-card-subtitle">{{.Desc}}</div>{{end}}
<div class="poster-card-meta">
{{template "posterCardTag" .}}
<div class="flex-spacer"></div>
</div>
</div>
</a>
{{else}}
<div class="section-empty">暂无短剧内容</div>
{{end}}
</div>
{{template "pagination" .}}
</div>
</main>
{{template "footer" .}}
</body>
</html>
+64
View File
@@ -0,0 +1,64 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{template "seoCommon" .}}
<title>{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .title}}{{.title}} - 黄果短剧{{else}}AI成人短剧专题推荐 - 黄果短剧{{end}}</title>
<meta name="description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}专题集中展示黄果短剧各类精品专题合集,涵盖AI成人短剧、AI色情短剧、擦边短剧、AI换脸、AI魔改等热门主题。内容丰富多样,每日持续更新。 - 黄果短剧{{end}}" />
<meta name="keywords" content="AI成人短剧专题,AI色情短剧,擦边短剧,AI换脸,AI魔改,黄果短剧" />
<meta property="og:type" content="website" />
<meta property="og:title" content="{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .title}}{{.title}}{{else}}AI成人短剧专题推荐{{end}} - 黄果短剧" />
<meta property="og:description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}精选AI成人短剧专题推荐,每日持续更新。{{end}}" />
{{if .jsonLD}}<script type="application/ld+json">{{.jsonLD}}</script>{{end}}
<link rel="stylesheet" href="/static/css/index.css?v=25" />
<link rel="stylesheet" href="/static/css/themeIndex.css?v=6" />
</head>
<body class="site-shell theme-index-page-body">
{{template "header" .}}
<main class="theme-index-page">
<nav class="theme-index-breadcrumb" aria-label="面包屑">
<a href="/">首页</a>
<span>/</span>
<span class="is-current">专题</span>
</nav>
<section class="theme-index-intro" aria-labelledby="themeIndexTitle">
<h1 id="themeIndexTitle">AI成人短剧专题推荐</h1>
<p>专题集中展示黄果短剧各类精品专题合集,涵盖AI成人短剧、AI色情短剧、擦边短剧、AI换脸、AI魔改等热门主题。内容丰富多样,每日持续更新,方便你按主题快速找到想看的高清短剧,随时畅享极致观看体验。</p>
</section>
<h2 class="theme-index-section-title"><span aria-hidden="true"></span>精选AI成人短剧专题</h2>
<div class="theme-index-grid">
{{range .list}}
<a class="theme-index-card" href="{{categoryURL .Slug .ID}}">
<img src="/static/images/placeholder.png?v=2" class="lazy" data-src="{{coverURL .Icon ""}}" alt="{{.Name}}专题" title="{{.Name}}专题" />
<span class="theme-index-card-overlay" aria-hidden="true"></span>
<span class="theme-index-card-copy">
<span class="theme-index-card-count">{{.PlayletCount}}部剧情</span>
<span class="theme-index-card-name">{{.Name}}</span>
</span>
</a>
{{else}}
<div class="theme-index-empty">暂无专题内容</div>
{{end}}
</div>
{{template "pagination" .}}
{{template "homeAdRow" dict "Ads" .appConfig.NineGridList "SlotKey" "topic_nine_grid" "SlotName" "专题横幅广告" "Label" "广告"}}
{{if .appConfig.BottomBanner}}
<div class="theme-index-ads" aria-label="广告">
{{range $ad := .appConfig.BottomBanner}}
<a class="theme-index-ad" {{if $ad.Link}}href="{{$ad.Link}}" target="_blank" rel="sponsored nofollow noopener noreferrer"{{else}}aria-disabled="true"{{end}} data-creative-id="{{$ad.ID}}">
<img class="lazy" src="/static/images/placeholder.png?v=2" data-src="{{$ad.Images}}" alt="{{$ad.Title}}" title="{{$ad.Title}}" width="758" height="94" />
</a>
{{end}}
</div>
{{end}}
</main>
{{template "footer" .}}
</body>
</html>
+64
View File
@@ -0,0 +1,64 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{{template "seoCommon" .}}
<title>{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .title}}{{.title}} - 黄果短剧{{else}}今日更新 - 黄果短剧{{end}}</title>
<meta name="description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}黄果短剧今日更新:第一时间追更最新上线短剧与连载剧集,不错过每日精彩更新。 - 黄果短剧{{end}}">
<meta name="keywords" content="{{if .seoInfo.Keywords}}{{joinStrings .seoInfo.Keywords ","}}{{else}}今日更新,短剧更新,连载短剧,最新短剧,黄果短剧{{end}}">
<meta property="og:type" content="website">
<meta property="og:title" content="{{if .seoInfo.Title}}{{.seoInfo.Title}}{{else if .title}}{{.title}} - 黄果短剧{{else}}今日更新 - 黄果短剧{{end}}">
<meta property="og:description" content="{{if .seoInfo.Description}}{{.seoInfo.Description}}{{else}}黄果短剧今日更新:第一时间追更最新上线短剧与连载剧集。{{end}}">
{{if .jsonLD}}
<script type="application/ld+json">{{.jsonLD}}</script>
{{end}}
<link rel="stylesheet" href="/static/css/index.css?v=25">
<link rel="stylesheet" href="/static/css/todayUpdate.css">
</head>
<body class="has-h5-tabbar">
{{template "header" .}}
<main class="page-shell today-update-page">
<div class="today-update-hero">
<div class="today-update-channel">
<div class="today-update-channel-label">LATEST</div>
{{$navTitle := "最近更新"}}
{{range .headerNav}}{{if eq .Key "todayUpdate"}}{{$navTitle = .Name}}{{end}}{{end}}
<h1 class="today-update-channel-title">{{$navTitle}}</h1>
<div class="today-update-channel-desc">按剧集最近更新时间排序,快速查看各频道新内容</div>
</div>
<div class="card-grid">
{{range .list}}
<a class="poster-card" href="{{detailURL .Slug .ID}}">
<div class="poster-cover">
<img src="/static/images/placeholder.png?v=2" class="poster-cover-img lazy" data-src="{{coverURL .Cover .Banner}}" alt="{{.Title}}" title="{{.Title}}" />
{{template "posterCornerBadges" .}}
{{template "posterLikeBadge" .}}
{{with episodeLabel .TotalEpisode}}
<div class="episode-badge"><div class="text-white-xs">{{.}}</div></div>
{{end}}
</div>
<div class="poster-card-body">
<div class="poster-card-title">{{.Title}}</div>
{{if .Desc}}<div class="poster-card-subtitle">{{.Desc}}</div>{{end}}
<div class="poster-card-meta">
{{template "posterCardTag" .}}
<div class="flex-spacer"></div>
<div class="poster-card-heat">{{formatHeat .HeatValue}}</div>
</div>
</div>
</a>
{{else}}
<div class="section-empty">暂无今日更新</div>
{{end}}
</div>
{{template "pagination" .}}
</div>
</main>
{{template "footer" .}}
</body>
</html>
+137
View File
@@ -0,0 +1,137 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
{{template "seoCommon" .}}
<title>用户协议 - 黄果短剧</title>
<meta
name="description"
content="黄果短剧用户协议:了解使用本平台服务的权利与义务,保障你的合法权益 - 黄果短剧"
/>
<meta name="keywords" content="用户协议,服务条款,黄果短剧协议" />
<meta property="og:type" content="article" />
<meta property="og:title" content="用户协议 - 黄果短剧" />
<meta
property="og:description"
content="黄果短剧用户协议:了解使用本平台服务的权利与义务。"
/>
{{if .jsonLD}}
<script type="application/ld+json">
{{.jsonLD}}
</script>
{{end}}
<link rel="stylesheet" href="/static/css/contentPage.css?v=9" />
</head>
<body class="site-shell content-layout is-agreement-page">
{{template "header" .}}
<main class="content-page agreement-page">
<div class="content-pc">
<nav class="content-breadcrumb" aria-label="面包屑">
<a class="content-breadcrumb-link" href="/">首页</a>
<span class="content-breadcrumb-sep">/</span>
<span class="content-breadcrumb-current">用户协议</span>
</nav>
<div class="content-head">
<h1 class="content-title">用户协议</h1>
<p class="content-subtitle">使用黄果短剧服务前,请仔细阅读以下条款</p>
</div>
</div>
<header class="content-nav">
<a
class="content-nav-back"
href="javascript:history.back()"
aria-label="返回"
>
<img src="/static/images/back.svg" alt="返回" />
</a>
<div class="content-nav-title">用户协议</div>
<span class="content-nav-spacer" aria-hidden="true"></span>
</header>
<div class="content-main">
<article class="content-card legal-article">
<h2 class="legal-heading">使用协议</h2>
<div class="legal-copy">使用条款 欢迎您光临【黄果短剧】(以下简称本网站),本网站由「黄果短剧」(以下简称黄果短剧)经营。
本网站重视每一位使用者所享有的服务,特此说明本网站的使用政策,以保障您的权益。
请您仔细阅读本使用条款的内容:
关于《使用条款》
在您决定使用本网站所提供的服务(以下简称本服务)前,请仔细阅读本使用条款。您必须在完全同意以下条款的前提下,才能使用本服务。本使用条款与其他附加条件或其他特殊条款相矛盾时,以附加条件或特殊条款为准。本网站有权在任何时间修改或变更本使用条款的内容,您应经常查看以了解您当前的权利及义务。若您在本网站对本使用条款进行任何修改或变更后仍继续使用本服务,视为您已同意接受本使用条款的修改及变更。
您确认您在访问本网站的司法管辖区内的年龄至少为18岁,或者确认您已经达到所在地法律要求能够查看成人内容的年龄,并且完全有能力履行及遵守本使用条款。如果您未满18岁,您应立即停止使用本服务。您并同意并表示您访问本服务的管辖区不禁止接收或查看色情内容。
服务内容
本服务的具体内容由本网站根据实际情况提供,并对其所提供之服务拥有最终解释权。
本服务系通过互联网向您提供各项网络信息服务,您必须自行配备所需的一切设备,并承担所需费用。
本网站对用户的联系将以电子邮件、网页的消息揭示及其他本网站判断为适宜的方式进行。通知以本网站发出之时视为用户已收到该通知。
本网站对用户自身在各服务内的账号及密码,用户需自行承担管理责任,并知悉本网站仅提供各项网络信息服务。第三方不正当的使用等情况本网站概不负责。
本网站及各服务的用户资格,或基于用户资格使用本服务的权利及义务等,不得通过任何方式使第三方以任何方式使用或进行其他处分。
若您的行为违反本使用条款之禁止规定,本网站得不经事先通知限制或者解除您使用本网站提供服务的资格。因前项措施造成用户损害的情况本网站概不负责,本网站对您违反服务条款造成的一切损害、损失、费用(含诉讼费用及律师费用)均可提出赔偿要求。
我们保留删除任何达到一定期间不活跃的账户的权利。已绑定账号而连续一年内无登录记录的账户视为放弃该账户之权利,我们将进行封存处理;未绑定账号(即访客)而连续半年内无登录记录的账户视为放弃该账户之权利。用户可申请账号复原,但我方不保证该账户的完整性或恢复的可能性。
授权
在本使用条款的约束下,本网站仅此授予您有限、仅供个人使用、非商业用途、非专属且不可转让的使用本服务之权利。
使用者的行为 您在使用本网站服务过程中,必须遵循以下原则:
(a) 遵守本网站适用之有关的法律和法规;
(b) 遵守所有与网络服务有关的网络协议、规定和程序;
(c) 不得为任何非法目的而使用网络服务系统;
(d) 不得使用任何设备、软件或程序,干扰或试图干扰本网站、本网站之正常运作;
(e) 不允许侵入、强行入侵、接通、使用或企图侵入、接通、使用本网站服务器及未经本网站对您发出许可的任何资料区;
(f) 不得限制、制止其他使用者使用并享用本服务;
(g) 如发现任何非法使用账号或任何出现安全漏洞的情况,应立即告知本网站;
(h) 违反公序良俗或法令的行为;
(i) 违反儿童色情、色情、猥亵物等相关法令的行为;
(j) 将虚假情报在本服务登录的行为;
(k) 违反本网站其他或个别条款的行为;
(l) 对本网站或本服务有隐匿、欺诈、延迟给付或不为给付财产等行为;
(m) 其他本网站判断为不适当的行为。
知识产权
本网站提供的服务内容(包括但不限于:文字、照片、图形、图像、图表、声音、动画、视频、音频、商标等),均由本网站或其他相关权利人依法拥有,并受商业形象、著作权法、商标法、公平交易法以及各类知识产权法之保护。非经本网站或其他相关权利人之事先书面同意,本网站及其内容的任何部分,不得修改、复制、重制、重印、公开播送、改作、散布、发行、公开发表及为任何非法目的使用。
广告信息
本网站上如有传播或刊载之广告,关于其内容所展现的文字、图片、动画、声音、影像或以其他方式对商品或服务的说明,均由广告主或广告代理商提供。您应自行判断该广告的正确性及可信度,本网站不对该等广告作任何担保。
链接
本网站或所有服务相关网页上所提供的链接,可能链接到其他个人、公司或组织之网站。提供该等链接之目的仅为便利使用者自行搜集或取得信息,本网站对于被链接网站所提供之产品、服务或信息不作担保。
违约赔偿
您同意保障和维护本网站及任何其他第三方的利益,如因违反有关法律、法规或本使用条款项下的任何条款而致使本网站或任何其他第三方造成损失,您同意承担所造成损害之赔偿责任。
拒绝提供担保
本网站对本服务不提供任何明示或暗示的担保,包含但不限于商业适售性、特定目的之适用性及未侵害他人权利。
本网站不担保以下事项:
(a) 本服务将符合您的需求;
(b) 本服务不受干扰、即时提供、安全可靠或从不出错;
(c) 经由本服务之使用而取得任何资料之合适性、有效性、正确性、完整性、安全性、可靠性、即时性及是否侵害他人权利。
免责声明
在任何情况下,本网站对于您或任何其他第三方因使用或不能使用该等服务所发生的任何直接、间接、附带、特别、惩罚性或间接性的损失或损害赔偿,不承担任何责任。
本网站于下列情形之一时,得暂停或中断本服务之部分或全部服务,且对使用者任何直接或间接之损害,不承担任何责任:
(a) 对于本网站相关系统设备进行迁移、更换或维护时;
(b) 任何不可归责于本网站之事由所造成之服务停止或中断;
(c) 天灾或其他不可抗力造成本网站之服务停止或中断;
(d) 使用者有任何违反政府法令或本使用条款情事。
服务变更、中断或终止
鉴于网络服务的特殊性,您同意本网站有权随时变更、中断或终止部分或全部的网络服务。
法律管辖
本使用条款的订立、执行和解释及争议的解决均应适用于本网站所指定法律,并以本网站所指定法院作为第一审管辖法院。
其他规定
本使用条款构成双方对本服务及其他有关事宜的完整协议,并取代双方先前就本使用条款所为之任何形式的承诺或协议。如本使用条款中的任何条款无论因何种原因完全或部分无效或不具有执行力,本使用条款的其余条款仍应有效并且有约束力。本使用条款的标题仅为方便阅读所设,非对条款的定义、限制、解释或描述其范围或界限。
联络方式
若您对于本使用条款或本网站有任何问题或建议,欢迎来信至我们的服务信箱。本使用条款之订立、修改、更新及最终解释权均属本网站所有。</div>
</article>
</div>
</main>
{{template "footer" .}}
</body>
</html>