logo和配置修改

This commit is contained in:
谢宇宁
2026-09-23 16:50:34 +07:00
parent bef9f8b4ed
commit 0db8087765
163 changed files with 393 additions and 20366 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}}112387687{{end}}', 'ym');
ym({{if .isNavPage}}112390883{{else}}112387687{{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-TZQS2NZ3TN{{end}}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{if .isNavPage}}G-SY26Y2MSHS{{else}}G-TZQS2NZ3TN{{end}}');
</script>
{{end}}
-39
View File
@@ -1,39 +0,0 @@
{{define "coinDialog"}}
<link rel="stylesheet" href="/static/css/coinDialog.css?v=5">
<div class="coin-dialog-mask" id="coinDialog">
<div class="coin-dialog-stack">
<div class="coin-dialog-card" role="dialog" aria-modal="true" aria-labelledby="coinDialogTitle">
<img class="coin-dialog-icon" src="/static/images/figma-dialogs/coin-unlock.svg" alt="金币" />
<div class="coin-dialog-title" id="coinDialogTitle">使用金币解锁本集</div>
<div class="coin-dialog-desc">解锁后可永久观看本集内容。</div>
<div class="coin-dialog-balance">
<div class="coin-dialog-balance-col">
<div class="coin-dialog-balance-label">当前余额</div>
<div class="coin-dialog-balance-value"><span data-coin-balance>0</span> 金币</div>
</div>
<div class="coin-dialog-balance-col coin-dialog-balance-col--end">
<div class="coin-dialog-balance-label">本次消耗</div>
<div class="coin-dialog-balance-cost"><span data-coin-cost>0</span> 金币</div>
</div>
</div>
<div class="coin-dialog-hint">后续付费剧集仍需逐集确认</div>
<div class="coin-dialog-actions">
<a
class="coin-dialog-download"
href="{{if .appConfig.AppAddr}}{{.appConfig.AppAddr}}{{else}}/download-app/{{end}}"
{{if .appConfig.AppAddr}}target="_blank" rel="sponsored nofollow noopener noreferrer"{{end}}
>下载app 免费看</a>
<button class="coin-dialog-cta" type="button" data-coin-dialog-pay aria-busy="false">
<span class="coin-dialog-cta-label"><span class="coin-dialog-cta-label-pc"><span data-coin-cost>0</span>金币 解锁</span><span class="coin-dialog-cta-label-h5">支付 <span data-coin-cost>0</span> 金币并播放</span></span>
<span class="coin-dialog-cta-loading">解锁中…</span>
</button>
</div>
<a class="coin-dialog-recharge" href="/deposit/coin/">金币不足?去充值</a>
</div>
<button class="coin-dialog-close" type="button" aria-label="关闭" data-coin-dialog-close>
<img src="/static/images/figma-dialogs/dialog-close.svg" alt="" />
</button>
</div>
</div>
<script src="/static/js/pages/coinDialog.js?v=2"></script>
{{end}}
+1 -1
View File
@@ -38,7 +38,7 @@
{{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-ad-id="{{$ad.ID}}" data-creative-id="{{$ad.ID}}" data-ad-slot-key="detail_banner" data-ad-slot-name="详情横幅广告" data-ad-type="banner" data-advertising-name="{{$ad.Title}}">
<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}}
+2 -6
View File
@@ -13,18 +13,14 @@
data-dialog-ad-item
data-dialog-ad-index="{{$index}}"
data-dialog-ad-id="{{$dialog.ID}}"
data-ad-id="{{$dialog.ID}}"
data-creative-id="{{$dialog.ID}}"
data-ad-slot-key="dialog_ad"
data-ad-slot-name="弹窗广告"
data-ad-type="popup"
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-ad-id="{{$dialog.ID}}" data-creative-id="{{$dialog.ID}}" data-ad-slot-key="dialog_ad" data-ad-slot-name="弹窗广告" data-ad-type="popup" data-advertising-name="{{$dialog.Title}}">
<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}}
@@ -32,7 +28,7 @@
<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 data-ad-close data-ad-id="{{$dialog.ID}}" data-advertising-id="{{$dialog.ID}}" data-advertising-key="dialog_ad" data-advertising-name="{{$dialog.Title}}" aria-label="关闭广告">
<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>
+2 -2
View File
@@ -8,8 +8,8 @@
<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" />
<img src="/static/images/figma-dialogs/download-logo-pc.svg" alt="黄果短剧" title="黄果短剧 App" />
<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>
+22 -22
View File
@@ -1,7 +1,7 @@
{{define "footer"}}
<link rel="stylesheet" href="/static/css/footer.css?v=12" />
<footer class="home-mobile-footer">
<img class="home-mobile-footer-logo" src="/static/images/logo.png" width="127" height="40" alt="黄果短剧" title="黄果短剧" />
<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>
@@ -21,12 +21,12 @@
<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" data-nav-key="social_telegram" data-nav-name="Telegram"><img src="/static/images/figma-home/mobile/footer-telegram.svg" width="38" height="38" alt="" /></a>
<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" data-nav-key="social_x" data-nav-name="X"><img src="/static/images/figma-home/mobile/footer-x.svg" width="38" height="38" alt="" /></a>
<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}}
@@ -43,8 +43,8 @@
{{if or .footer.Brand.Title .footer.Brand.Content}}
<div class="footer-brand">
{{if .footer.Brand.Title}}
<a class="footer-brand-lockup" href="/" data-nav-key="home" data-nav-name="首页">
<img class="footer-logo" src="/static/images/logo.png" alt="{{.footer.Brand.Title}}" title="{{.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}}
@@ -55,13 +55,13 @@
{{if or .appConfig.NewURLAddr .appConfig.NewURLAddr1 .appConfig.ForeverURLAddr}}
<div class="footer-contact" aria-label="访问地址">
{{if .appConfig.NewURLAddr}}
<a class="footer-contact-line" href="{{.appConfig.NewURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer" data-nav-key="latest_address" data-nav-name="最新地址">最新地址:{{.appConfig.NewURLAddr}}</a>
<a class="footer-contact-line" href="{{.appConfig.NewURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">最新地址:{{.appConfig.NewURLAddr}}</a>
{{end}}
{{if .appConfig.NewURLAddr1}}
<a class="footer-contact-line" href="{{.appConfig.NewURLAddr1}}" target="_blank" rel="sponsored nofollow noopener noreferrer" data-nav-key="backup_address" data-nav-name="备用地址">备用地址:{{.appConfig.NewURLAddr1}}</a>
<a class="footer-contact-line" href="{{.appConfig.NewURLAddr1}}" target="_blank" rel="sponsored nofollow noopener noreferrer">备用地址:{{.appConfig.NewURLAddr1}}</a>
{{end}}
{{if .appConfig.ForeverURLAddr}}
<a class="footer-contact-line" href="{{.appConfig.ForeverURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer" data-nav-key="permanent_address" data-nav-name="海外永久地址">海外永久地址:{{.appConfig.ForeverURLAddr}}</a>
<a class="footer-contact-line" href="{{.appConfig.ForeverURLAddr}}" target="_blank" rel="sponsored nofollow noopener noreferrer">海外永久地址:{{.appConfig.ForeverURLAddr}}</a>
{{end}}
</div>
{{end}}
@@ -86,7 +86,7 @@
<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" data-nav-key="social_x" data-nav-name="X">
<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}}
@@ -94,7 +94,7 @@
<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" data-nav-key="social_telegram" data-nav-name="Telegram">
<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}}
@@ -103,17 +103,17 @@
{{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="商户合作" data-nav-key="business_contact" data-nav-name="商户合作"><img src="/static/images/figma-home/social-instagram.svg" alt="" /></a>
<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" data-nav-key="social_telegram" data-nav-name="Telegram"><img src="/static/images/figma-home/social-telegram.svg" alt="" /></a>
<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" data-nav-key="social_x" data-nav-name="X"><img src="/static/images/figma-home/social-x.svg" alt="" /></a>
<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}}
@@ -122,25 +122,25 @@
</div>
</footer>
<nav class="h5-tabbar" aria-label="底部导航">
<a class="h5-tabbar-item{{if eq .navActive "home"}} is-active{{end}}" href="/" data-nav-key="home" data-nav-name="主页">
<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/" data-nav-key="rank" data-nav-name="热榜">
<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/" data-nav-key="list" data-nav-name="片库">
<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/" data-nav-key="today_update" data-nav-name="最新">
<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 "userCenter"}} is-active{{end}}" href="/user-center/" data-nav-key="user_center" data-nav-name="我的">
<img class="h5-tabbar-icon" src="/static/images/tab_wd{{if eq .navActive "userCenter"}}_a{{end}}.svg" alt="我的" />
<span>我的</span>
<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>
@@ -158,9 +158,9 @@
{{$footerHref := footerLinkURL .Name .URLValue}}
{{if $footerHref}}
{{if footerLinkIsExternal $footerHref}}
<a href="{{$footerHref}}" target="_blank" rel="sponsored nofollow noopener noreferrer" data-nav-key="footer_link" data-nav-name="{{.Name}}">{{.Name}}</a>
<a href="{{$footerHref}}" target="_blank" rel="sponsored nofollow noopener noreferrer">{{.Name}}</a>
{{else}}
<a href="{{$footerHref}}" data-nav-key="footer_link" data-nav-name="{{.Name}}">{{.Name}}</a>
<a href="{{$footerHref}}">{{.Name}}</a>
{{end}}
{{end}}
{{end}}
+17 -92
View File
@@ -1,5 +1,5 @@
{{define "header"}}
<link rel="stylesheet" href="/static/css/header.css?v=13" />
<link rel="stylesheet" href="/static/css/header.css?v=14" />
<header class="site-header">
<div class="header-inner">
<button
@@ -12,8 +12,8 @@
>
<img src="/static/images/figma-home/mobile/menu.svg" alt="" />
</button>
<a class="brand-lockup" href="/" data-nav-key="home" data-nav-name="首页">
<img class="brand-logo" src="/static/images/logo.png" alt="黄果短剧" title="黄果短剧" />
<a class="brand-lockup" href="/">
<img class="brand-logo" src="/static/images/logo.png?v=3" alt="黄果短剧" title="黄果短剧" />
</a>
<div class="header-nav">
@@ -25,8 +25,6 @@
rel="sponsored nofollow noopener noreferrer"
data-download-app-open
data-download-app-url="{{$.appConfig.AppAddr}}"
data-nav-key="{{.Key}}"
data-nav-name="{{.Name}}"
{{if .IsActive}}aria-current="page"{{end}}
>{{.Name}}</a
>
@@ -36,8 +34,6 @@
href="{{.Href}}"
target="_blank"
rel="sponsored nofollow noopener noreferrer"
data-nav-key="{{.Key}}"
data-nav-name="{{.Name}}"
{{if .IsActive}}aria-current="page"{{end}}
>{{.Name}}</a
>
@@ -45,8 +41,6 @@
<a
class="{{if .IsActive}}nav-link-active{{else}}nav-link{{end}}"
href="{{.Href}}"
data-nav-key="{{.Key}}"
data-nav-name="{{.Name}}"
{{if .IsActive}}aria-current="page"{{end}}
>{{.Name}}</a
>
@@ -73,78 +67,11 @@
/>
</form>
<a class="header-mobile-search-link" href="/search/" aria-label="前往搜索页" data-nav-key="search" data-nav-name="搜索">
<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>
<a class="header-design-coin" href="/deposit/" aria-label="会员充值" data-nav-key="deposit" data-nav-name="会员充值" hidden>
<img src="/static/images/figma-home/header-coin.png" width="56" height="56" alt="" />
</a>
<div class="header-design-separator" aria-hidden="true" hidden></div>
<a
class="header-app-icon"
href="/deposit/"
aria-label="会员充值"
data-nav-key="deposit"
data-nav-name="会员充值"
data-header-vip{{if
not
.isVip}}
hidden{{end}}
>
<img src="/static/images/isVip.png" alt="VIP会员" />
</a>
<div
class="header-separator"
data-header-vip-sep{{if
not
.isVip}}
hidden{{end}}
></div>
<a
class="header-account"
href="{{if .isLoggedIn}}/user-center/{{else}}#login{{end}}"
data-header-account{{if
not
.isLoggedIn}}
data-login-dialog-open{{end}}
data-nav-key="{{if .isLoggedIn}}user_center{{else}}login{{end}}"
data-nav-name="{{if .isLoggedIn}}个人中心{{else}}登录{{end}}"
>
{{if .isLoggedIn}} {{if .avatar}}
<img
class="account-avatar-photo lazy"
src="/static/images/placeholder.png?v=2"
data-src="{{.avatar}}"
alt="{{if .userName}}{{.userName}}{{else}}用户{{end}}的头像"
data-header-avatar
/>
{{else}}
<img
class="account-avatar-photo"
src="/static/images/avatar.png"
alt="{{if .userName}}{{.userName}}{{else}}用户{{end}}的默认头像"
data-header-avatar
/>
{{end}}
<div class="account-label account-label--logged" data-header-username>
{{if .userName}}{{.userName}}{{else}}用户{{end}}
</div>
{{else}}
<div class="account-avatar" data-header-guest-avatar>
<img
class="account-avatar-ring"
src="/static/images/avatar.png"
alt="未登录用户头像"
/>
<div class="account-avatar-body"></div>
<div class="account-avatar-head"></div>
</div>
<div class="account-label" data-header-username>未登录</div>
{{end}}
</a>
<span hidden data-app-download-url="{{.appConfig.AppAddr}}"></span>
</div>
</header>
@@ -194,17 +121,17 @@
<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="黄果短剧首页" data-nav-key="home" data-nav-name="首页">
<img src="/static/images/figma-home/mobile/drawer-logo.png" width="138" height="36" alt="黄果短剧" title="黄果短剧" />
<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="/" data-nav-key="home" data-nav-name="首页"{{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/" data-nav-key="list" data-nav-name="AI成人短剧"{{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/" data-nav-key="series" data-nav-name="AI成人剧集"{{if eq .resolvedNavActive "aiSeries"}} aria-current="page"{{end}}>AI成人剧集</a>
<a class="{{if eq .resolvedNavActive "topic"}}is-active{{end}}" href="/topic/" data-nav-key="theme_index" data-nav-name="专题"{{if eq .resolvedNavActive "topic"}} aria-current="page"{{end}}>专题</a>
<a class="{{if eq .resolvedNavActive "rank"}}is-active{{end}}" href="/rank/" data-nav-key="rank" data-nav-name="排行榜"{{if eq .resolvedNavActive "rank"}} aria-current="page"{{end}}>排行榜</a>
<a class="{{if eq .resolvedNavActive "homeRoad"}}is-active{{end}}" href="/home-road/" data-nav-key="home_road" data-nav-name="回家的路"{{if eq .resolvedNavActive "homeRoad"}} aria-current="page"{{end}}>回家的路</a>
<a class="{{if eq .resolvedNavActive "application"}}is-active{{end}}" href="/application/" data-nav-key="application" data-nav-name="福利应用"{{if eq .resolvedNavActive "application"}} aria-current="page"{{end}}>福利应用</a>
<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}}
@@ -228,10 +155,8 @@
</aside>
</div>
<script defer src="/static/js/common/cookie.js"></script>
<script defer src="/static/js/common/request.js?v=2"></script>
<script defer src="/static/js/common/auth.js?v=2"></script>
<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=8"></script>
<script defer src="/static/js/pages/dialogLoader.js?v=6"></script>
<script defer src="/static/js/pages/header.js?v=9"></script>
<script defer src="/static/js/pages/dialogLoader.js?v=7"></script>
{{template "toast" .}} {{template "eightPop" .}} {{template "dialogAd" .}} {{end}}
-5
View File
@@ -14,12 +14,7 @@
rel="sponsored nofollow noopener noreferrer"
{{else}}aria-disabled="true"
{{end}}
data-ad-id="{{$ad.ID}}"
data-creative-id="{{$ad.ID}}"
data-ad-slot-key="{{if $.SlotKey}}{{$.SlotKey}}{{else}}home_nine_grid{{end}}"
data-ad-slot-name="{{if $.SlotName}}{{$.SlotName}}{{else}}首页横幅广告{{end}}"
data-ad-type="banner"
data-advertising-name="{{$ad.Title}}"
>
<img
class="lazy"
-104
View File
@@ -1,104 +0,0 @@
{{define "loginDialog"}}
<div class="login-dialog-mask" id="loginDialog">
<div class="login-dialog-stack">
<div
class="login-dialog-card"
role="dialog"
aria-modal="true"
aria-labelledby="loginDialogTitle"
>
<div class="login-dialog-head">
<div class="login-dialog-title" id="loginDialogTitle">
<span class="login-dialog-title-h5">黄果短剧</span>
<span class="login-dialog-title-pc">黄果短剧</span>
</div>
<div class="login-dialog-desc">登录后同步收藏、历史与会员权益</div>
</div>
<form
class="login-dialog-form"
action="/api/auth/login"
method="post"
data-login-dialog-form
novalidate
>
<div class="login-dialog-field-group" data-login-field="account">
<span class="login-dialog-label">账号</span>
<label class="login-dialog-field" data-login-control>
<span class="login-dialog-sr">账号</span>
<input
class="login-dialog-input"
name="account"
type="text"
placeholder="请输入账号(最少6位字母)或手机号"
autocomplete="username"
data-login-account
aria-describedby="loginDialogAccountError"
/>
</label>
<p
class="login-dialog-error"
id="loginDialogAccountError"
hidden
data-login-error
>
账号格式不正确,请输入有效账号
</p>
</div>
<div class="login-dialog-field-group" data-login-field="password">
<span class="login-dialog-label">密码</span>
<label
class="login-dialog-field login-dialog-field--password"
data-login-control
>
<span class="login-dialog-sr">密码</span>
<input
class="login-dialog-input"
id="loginDialogPassword"
name="password"
type="password"
placeholder="请输入登录密码"
autocomplete="current-password"
minlength="4"
maxlength="16"
data-login-password
aria-describedby="loginDialogPasswordError"
/>
<button
class="login-dialog-eye"
type="button"
aria-label="显示密码"
data-login-dialog-eye
>
<img src="/static/images/figma-dialogs/password-eye.svg" alt="显示或隐藏密码" />
</button>
</label>
<p
class="login-dialog-error"
id="loginDialogPasswordError"
hidden
data-login-error
>
密码错误,请检查后重新输入
</p>
</div>
<button class="login-dialog-submit" type="submit" data-login-submit>
登录
</button>
</form>
<div class="login-dialog-register">
<span class="login-dialog-register-prefix">还没有账号?</span>
<a
class="login-dialog-register-link login-dialog-register-link--pc"
href="#register"
data-register-dialog-open
>立即注册</a
>
<a class="login-dialog-register-link login-dialog-register-link--h5" href="#register" data-register-dialog-open>立即注册</a>
</div>
</div>
<button class="login-dialog-close" type="button" aria-label="关闭" data-login-dialog-close>
<img src="/static/images/figma-dialogs/dialog-close.svg" alt="" />
</button>
</div>
</div>
{{end}}
-80
View File
@@ -1,80 +0,0 @@
{{define "registerDialog"}}
<div class="register-dialog-mask" id="registerDialog">
<div class="register-dialog-stack">
<div class="register-dialog-card" role="dialog" aria-modal="true" aria-labelledby="registerDialogTitle">
<div class="register-dialog-head">
<div class="register-dialog-title" id="registerDialogTitle">创建账号</div>
<div class="register-dialog-desc">
<span class="register-dialog-desc-h5">注册后同步收藏、历史与会员权益</span>
<span class="register-dialog-desc-pc">注册成功即可同步收藏与追剧记录</span>
</div>
</div>
<form class="register-dialog-form" action="/api/auth/register" method="post" data-register-dialog-form novalidate>
<div class="register-dialog-field-group" data-register-field="account">
<span class="register-dialog-label register-dialog-label--account">账号</span>
<label class="register-dialog-field" data-register-control>
<span class="register-dialog-sr">账号</span>
<input
class="register-dialog-input"
name="account"
type="text"
placeholder="请输入账号(最少6位字母)"
autocomplete="username"
minlength="4"
maxlength="16"
data-register-account
aria-describedby="registerDialogAccountError"
/>
</label>
<p class="register-dialog-error" id="registerDialogAccountError" hidden data-register-error>账号需为 4–16 个字符</p>
</div>
<div class="register-dialog-field-group" data-register-field="password">
<span class="register-dialog-label register-dialog-label--password">密码</span>
<label class="register-dialog-field register-dialog-field--tall" data-register-control>
<span class="register-dialog-sr">密码</span>
<input
class="register-dialog-input"
name="password"
type="password"
placeholder="请输入密码"
autocomplete="new-password"
minlength="4"
maxlength="16"
data-register-password
aria-describedby="registerDialogPasswordError"
/>
</label>
<p class="register-dialog-error" id="registerDialogPasswordError" hidden data-register-error>密码需为 4–16 个字符</p>
</div>
<div class="register-dialog-field-group" data-register-field="password_confirm">
<span class="register-dialog-label register-dialog-label--password">确认密码</span>
<label class="register-dialog-field register-dialog-field--tall" data-register-control>
<span class="register-dialog-sr">确认密码</span>
<input
class="register-dialog-input"
name="password_confirm"
type="password"
placeholder="请再次输入密码"
autocomplete="new-password"
minlength="4"
maxlength="16"
data-register-password-confirm
aria-describedby="registerDialogPasswordConfirmError"
/>
</label>
<p class="register-dialog-error" id="registerDialogPasswordConfirmError" hidden data-register-error>两次输入的密码不一致</p>
</div>
<button class="register-dialog-submit" type="submit" data-register-submit>立即注册</button>
</form>
<div class="register-dialog-login">
<span class="register-dialog-login-prefix">已有账号?</span>
<a class="register-dialog-login-link register-dialog-login-link--pc" href="#login" data-login-dialog-open>去登录</a>
<a class="register-dialog-login-link register-dialog-login-link--h5" href="#login" data-login-dialog-open>去登录</a>
</div>
</div>
<button class="register-dialog-close" type="button" aria-label="关闭" data-register-dialog-close>
<img src="/static/images/figma-dialogs/dialog-close.svg" alt="" />
</button>
</div>
</div>
{{end}}
+5 -7
View File
@@ -37,23 +37,21 @@
{{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=2" type="image/svg+xml" sizes="any" />
<link rel="icon" href="/favicon.png?v=2" type="image/png" sizes="512x512" />
<link rel="icon" href="/favicon.ico?v=2" type="image/x-icon" sizes="256x256" />
<link rel="apple-touch-icon" href="/favicon.png?v=2" />
<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 隐藏;在完整弹窗样式到达前先压住,避免无样式闪现 */
.login-dialog-mask:not(.is-open),
.register-dialog-mask:not(.is-open),
.download-app-dialog-mask:not(.is-open),
.search-dialog-mask:not(.is-open) {
display: none !important;
}
</style>
{{template "trackerInit" .}}
{{template "analytics" .}}
<script>
(function () {
function injectBaiduPush() {
-5
View File
@@ -17,12 +17,7 @@
rel="sponsored nofollow noopener noreferrer"
{{else}}aria-disabled="true"
{{end}}
data-ad-id="{{$ad.ID}}"
data-creative-id="{{$ad.ID}}"
data-ad-slot-key="{{if $.SlotKey}}{{$.SlotKey}}{{else}}square_promo{{end}}"
data-ad-slot-name="{{if $.SlotName}}{{$.SlotName}}{{else}}方块广告{{end}}"
data-ad-type="square"
data-advertising-name="{{$ad.Title}}"
>
<span class="square-promo__cover">
<img
-167
View File
@@ -1,167 +0,0 @@
{{define "trackerInit"}}
{{/* PC:defer 正常加载;H5:延后注入 SDK,降低首屏带宽与主线程争抢 */}}
<script>
window.__TRACKER_BOOT__ = {
appId: "{{InTrackerAppId}}",
encryptedConfig: {{jsonStr .appConfig.ReportSDKConfig}},
appVersion: "1.0.0",
pageKey: "{{.pageKey}}",
pageName: "{{.pageName}}"
};
window.__IS_H5__ = !!(window.matchMedia && window.matchMedia("(max-width: 767px)").matches);
</script>
{{/* PC 保留原 defer;H5 不在此拉取,由下方脚本空闲时注入 */}}
<script>
(function () {
if (window.__IS_H5__) return;
var s1 = document.createElement("script");
s1.defer = true;
s1.src = "/static/common/web-sdk-v1.1.8.js?v=1";
document.head.appendChild(s1);
var s2 = document.createElement("script");
s2.defer = true;
s2.src = "/static/js/tracker.js?v=3";
document.head.appendChild(s2);
})();
</script>
<script>
(function () {
var isH5 = !!window.__IS_H5__;
var sdkSrc = "/static/common/web-sdk-v1.1.8.js?v=1";
var trackerSrc = "/static/js/tracker.js?v=3";
function getQueryParam(name) {
try {
var s = window.location.search || "";
var m = new RegExp("[?&]" + name + "=([^&#]*)").exec(s);
return m ? decodeURIComponent(m[1].replace(/\+/g, " ")) : "";
} catch (e) { return ""; }
}
function getCookie(name) {
try {
var match = document.cookie.match(new RegExp("(?:^|; )" + name + "=([^;]*)"));
return match ? decodeURIComponent(match[1]) : "";
} catch (e) { return ""; }
}
// 渠道采用首次归因:dc、ch、pc 按落地页项目的顺序识别,已有渠道不覆盖。
function getStoredChannel() {
try {
var storedChannel = window.localStorage.getItem("channel");
storedChannel = storedChannel ? String(storedChannel).trim() : "";
if (storedChannel) return storedChannel;
var channel = getQueryParam("dc") || getQueryParam("ch") || getQueryParam("pc") || "";
channel = String(channel).trim();
if (channel) window.localStorage.setItem("channel", channel);
return channel;
} catch (e) {
// localStorage 被禁用时仍使用当前 URL 的渠道码完成本次上报。
return String(getQueryParam("dc") || getQueryParam("ch") || getQueryParam("pc") || "").trim();
}
}
// H5 埋点脚本会延迟加载,先同步落盘,避免用户快速跳转时丢失首次渠道。
var trackerChannel = getStoredChannel();
function loadScript(src) {
return new Promise(function (resolve, reject) {
var existing = document.querySelector('script[src="' + src + '"]');
if (existing) {
if (existing.getAttribute("data-loaded") === "1" || typeof window.trackerInit === "function") {
resolve();
return;
}
existing.addEventListener("load", function () { resolve(); });
existing.addEventListener("error", reject);
return;
}
var s = document.createElement("script");
s.src = src;
s.async = true;
s.onload = function () {
s.setAttribute("data-loaded", "1");
resolve();
};
s.onerror = reject;
document.head.appendChild(s);
});
}
function bootTracker() {
if (typeof window.trackerInit !== "function" || !window.__TRACKER_BOOT__) return;
var uid = getQueryParam("uid") || getCookie("uid") || getCookie("userId") || "";
var cfg = window.__TRACKER_BOOT__;
window.trackerInit({
appId: cfg.appId,
uid: uid,
channel: trackerChannel,
encryptedConfig: cfg.encryptedConfig,
appVersion: cfg.appVersion,
pageKey: cfg.pageKey,
pageName: cfg.pageName,
});
}
function whenTrackerReady(cb) {
if (typeof window.trackerInit === "function") {
cb();
return;
}
var n = 0;
var t = setInterval(function () {
n += 1;
if (typeof window.trackerInit === "function" || n > 40) {
clearInterval(t);
cb();
}
}, 100);
}
function bootAnalytics() {
var run = function () {
bootTracker();
};
if (isH5) {
loadScript(sdkSrc)
.then(function () { return loadScript(trackerSrc); })
.then(run)
.catch(function () {});
return;
}
whenTrackerReady(run);
}
function scheduleBoot() {
if (isH5) {
if ("requestIdleCallback" in window) {
requestIdleCallback(bootAnalytics, { timeout: 4000 });
} else {
setTimeout(bootAnalytics, 2500);
}
return;
}
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", bootAnalytics);
} else {
bootAnalytics();
}
}
scheduleBoot();
})();
</script>
<!-- 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}}112387687{{end}}', 'ym');
ym({{if .isNavPage}}112390883{{else}}112387687{{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-TZQS2NZ3TN{{end}}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{if .isNavPage}}G-SY26Y2MSHS{{else}}G-TZQS2NZ3TN{{end}}');
</script>
{{end}}
-24
View File
@@ -1,24 +0,0 @@
{{define "vipDialog"}}
<link rel="stylesheet" href="/static/css/vipDialog.css">
<div class="vip-dialog-mask" id="vipDialog">
<div class="vip-dialog-card" role="dialog" aria-modal="true" aria-labelledby="vipDialogTitle">
<button class="vip-dialog-close" type="button" aria-label="关闭" data-vip-dialog-close>
<span class="vip-dialog-close-ring"></span>
<span class="vip-dialog-close-x"></span>
</button>
<div class="vip-dialog-icon" aria-hidden="true">
<span class="vip-dialog-icon-bg"></span>
<svg class="vip-dialog-icon-crown" viewBox="0 0 24 21" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.5 18.5h21L19.5 7.5l-4.5 5L12 2.5 9 12.5l-4.5-5L1.5 18.5z" fill="currentColor"/>
<path d="M1.5 18.5h21v2.5h-21v-2.5z" fill="currentColor"/>
</svg>
</div>
<div class="vip-dialog-title" id="vipDialogTitle">本集为 VIP 专享</div>
<div class="vip-dialog-desc">当前账号尚未开通会员,开通后即可继续观看。</div>
<div class="vip-dialog-benefits">全集免费看 · 无广告打扰 · 专属内容</div>
<a class="vip-dialog-cta" href="/deposit/">开通 VIP 立即观看</a>
<button class="vip-dialog-skip" type="button" data-vip-dialog-close>暂不观看</button>
</div>
</div>
<script src="/static/js/pages/vipDialog.js?v=2"></script>
{{end}}