@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -0,0 +1 @@
|
||||
{{define "pageConsole"}}{{end}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
Reference in New Issue
Block a user