1+ <!--
2+ * @Author: weisheng
3+ * @Date: 2025-09-21 17:13:45
4+ * @LastEditTime: 2025-09-21 19:08:34
5+ * @LastEditors: weisheng
6+ * @Description:
7+ * @FilePath: /wot-design-uni/docs/.vitepress/theme/components/AsideSponsors.vue
8+ * 记得注释
9+ -->
110<script setup lang="ts">
211import { computed } from ' vue'
3- import { VPDocAsideSponsors } from ' vitepress/theme'
4- import { useSponsor } from ' ../composables/sponsor'
12+ import { useAdSponsor } from ' ../composables/adSponsor'
513
6- const { data } = useSponsor ()
14+ const { data } = useAdSponsor ()
715
8- const sponsors = computed (() => {
9- return (
10- data ?.value .map ((sponsor ) => {
11- return {
12- size: sponsor .size === ' big' ? ' mini' : ' xmini' ,
13- items: sponsor .items ,
14- }
15- }) ?? []
16- )
16+ // 分离超级赞助和金牌赞助
17+ const superSponsors = computed (() => {
18+ return data .value ?.find (sponsor => sponsor .tier === ' Platinum' )
19+ })
20+
21+ const goldSponsors = computed (() => {
22+ return data .value ?.find (sponsor => sponsor .tier === ' Gold' )
23+ })
24+
25+ // 判断金牌赞助数量是否为奇数
26+ const isGoldSponsorsOdd = computed (() => {
27+ return (goldSponsors .value ?.items ?.length || 0 ) % 2 === 1
1728})
1829 </script >
1930
2031<template >
21- <VPDocAsideSponsors v-if =" data " :data =" sponsors " />
32+ <div class =" VPDocAsideSponsors" >
33+ <div class =" VPSponsors vp-sponsor aside" >
34+ <!-- 超级赞助:一行一个 -->
35+ <section class =" vp-sponsor-section" v-if =" superSponsors?.items.length" >
36+ <div class =" VPSponsorsGrid vp-sponsor-grid mini" data-vp-grid =" 1" >
37+ <div class =" vp-sponsor-grid-item" v-for =" sponsor in superSponsors.items" :key =" sponsor.name" >
38+ <a class =" vp-sponsor-grid-link" :href =" sponsor.url" target =" _blank" rel =" sponsored noopener" >
39+ <article class =" vp-sponsor-grid-box" >
40+ <h4 class =" visually-hidden" >{{ sponsor.url }}</h4 >
41+ <img v-if =" sponsor.img" class =" vp-sponsor-grid-image" :src =" sponsor.img" :alt =" sponsor.name" >
42+ <span v-else class =" vp-sponsor-grid-text" >{{ sponsor.name }}</span >
43+ </article >
44+ </a >
45+ </div >
46+ </div >
47+ </section >
48+
49+ <!-- 金牌赞助:一行两个 -->
50+ <section class =" vp-sponsor-section" v-if =" goldSponsors?.items.length" >
51+ <div class =" VPSponsorsGrid vp-sponsor-grid xmini" data-vp-grid =" 2" >
52+ <div class =" vp-sponsor-grid-item" v-for =" sponsor in goldSponsors.items" :key =" sponsor.name" >
53+ <a class =" vp-sponsor-grid-link" :href =" sponsor.url" target =" _blank" rel =" sponsored noopener" >
54+ <article class =" vp-sponsor-grid-box" >
55+ <h4 class =" visually-hidden" >{{ sponsor.name }}</h4 >
56+ <img v-if =" sponsor.img" class =" vp-sponsor-grid-image" :src =" sponsor.img" :alt =" sponsor.name" >
57+ <span v-else class =" vp-sponsor-grid-text" >{{ sponsor.name }}</span >
58+ </article >
59+ </a >
60+ </div >
61+ <!-- 当金牌赞助为奇数时,默认赞助位填补到金牌赞助位置 -->
62+ <div class =" vp-sponsor-grid-item" v-if =" isGoldSponsorsOdd" >
63+ <a class =" vp-sponsor-grid-link" href =" /reward/sponsor" rel =" sponsored noopener" >
64+ <article class =" vp-sponsor-grid-box" >
65+ <span class =" vp-sponsor-grid-text" >成为赞助商</span >
66+ </article >
67+ </a >
68+ </div >
69+ </div >
70+ </section >
71+
72+ <!-- 当金牌赞助为偶数或没有金牌赞助时,默认赞助位占据一整行 -->
73+ <section class =" vp-sponsor-section" v-if =" !isGoldSponsorsOdd || !goldSponsors?.items.length" >
74+ <div class =" VPSponsorsGrid vp-sponsor-grid xmini" data-vp-grid =" 1" >
75+ <div class =" vp-sponsor-grid-item" >
76+ <a class =" vp-sponsor-grid-link" href =" /reward/sponsor" rel =" sponsored noopener" >
77+ <article class =" vp-sponsor-grid-box" >
78+ <span class =" vp-sponsor-grid-text" >成为赞助商</span >
79+ </article >
80+ </a >
81+ </div >
82+ </div >
83+ </section >
84+ </div >
85+ </div >
2286</template >
87+
88+ <style >
89+ .vp-sponsor-grid-text {
90+ color : var (--vp-c-text-2 );
91+ font-size : 12px ;
92+ }
93+
94+ .dark .vp-sponsor-grid-text {
95+ color : var (--vp-c-gray-1 );
96+ }
97+ </style >
0 commit comments