update
This commit is contained in:
@@ -37,7 +37,7 @@
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
class="text-primary hover:text-accent transition-colors"
|
||||
>Tailwind CSS</a
|
||||
>Tailwind CSS 4</a
|
||||
>
|
||||
·
|
||||
<a
|
||||
@@ -56,10 +56,8 @@
|
||||
|
||||
<script setup>
|
||||
import { onMounted, ref } from "vue";
|
||||
import { useRuntimeConfig } from "#imports";
|
||||
import siteConfig from "~/config";
|
||||
const contact = siteConfig.footer || {};
|
||||
const config = useRuntimeConfig();
|
||||
const quote = ref("");
|
||||
const from = ref("");
|
||||
const fromWho = ref("");
|
||||
@@ -98,21 +96,22 @@ const fetchHitokoto = async () => {
|
||||
|
||||
const fetchStats = async () => {
|
||||
try {
|
||||
if (!siteConfig.umami?.apiBase || !siteConfig.umami?.websiteId) {
|
||||
if (!siteConfig.umami?.apiEndpoint || !siteConfig.umami?.websiteId) {
|
||||
return;
|
||||
}
|
||||
const apiBase = siteConfig.umami.apiBase;
|
||||
const apiEndpoint = siteConfig.umami.apiEndpoint;
|
||||
const websiteId = siteConfig.umami.websiteId;
|
||||
const apiKey = config.public.umamiApiKey;
|
||||
const apiKey = siteConfig.umami.apiKey;
|
||||
|
||||
if (!apiKey) return;
|
||||
|
||||
// 获取统计数据
|
||||
|
||||
const startAt = new Date(siteConfig.siteMeta.startTime);
|
||||
const endAt = Date.now();
|
||||
const startAt = new Date(siteConfig.siteMeta.startDate).getTime();
|
||||
|
||||
const resp = await fetch(
|
||||
`${apiBase}/v1/websites/${websiteId}/stats?startAt=${startAt}&endAt=${endAt}`,
|
||||
`${apiEndpoint}/v1/websites/${websiteId}/stats?startAt=${startAt}&endAt=${endAt}`,
|
||||
{
|
||||
headers: {
|
||||
Authorization: `Bearer ${apiKey}`,
|
||||
|
||||
@@ -8,6 +8,7 @@ const siteConfig = {
|
||||
email: "i@rhen.cloud",
|
||||
lang: "zh-CN",
|
||||
favicon: "/favicon.svg",
|
||||
startTime: "2025-10-01",
|
||||
},
|
||||
|
||||
hero: {
|
||||
@@ -75,10 +76,11 @@ const siteConfig = {
|
||||
},
|
||||
|
||||
umami: {
|
||||
enable: false,
|
||||
url: "https://cloud.umami.is/script.js",
|
||||
websiteId: "ddcd51c3-ccc7-45e4-81e6-11567027f69b",
|
||||
apiBase: "https://api.umami.is",
|
||||
enable: true,
|
||||
scriptUrl: "https://cloud.umami.is/script.js",
|
||||
apiKey: "api_MGcpRPYMcBmTKZOKdUVpr7mlBoWkck5g",
|
||||
websiteId: "b33dfd14-7e62-498b-a199-de0ac38a1d44",
|
||||
apiEndpoint: "https://api.umami.is",
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ const route = useRoute();
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<!-- <UContainer> -->
|
||||
<div class="font-spacegrotesk relative min-h-screen overflow-x-hidden flex flex-col">
|
||||
<MainHeader />
|
||||
<main class="flex-1">
|
||||
@@ -22,7 +21,6 @@ const route = useRoute();
|
||||
<!-- <div class="absolute inset-0 opacity-[0.03] dark:opacity-[0.05] mix-blend-overlay"></div> -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- </UContainer> -->
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
|
||||
29
app/plugins/umami.client.ts
Normal file
29
app/plugins/umami.client.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { defineNuxtPlugin } from "#app";
|
||||
import { VueUmamiPlugin } from "@jaseeey/vue-umami-plugin";
|
||||
import type { Router } from "vue-router";
|
||||
import siteConfig from "~/config";
|
||||
|
||||
export default defineNuxtPlugin((nuxtApp) => {
|
||||
if (!import.meta.client) return;
|
||||
if (!siteConfig.umami?.enable) return;
|
||||
|
||||
// 跳过在 localhost 环境下加载 Umami
|
||||
if (
|
||||
typeof window !== "undefined" &&
|
||||
(window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1")
|
||||
) {
|
||||
console.log("Umami plugin skipped on localhost");
|
||||
return;
|
||||
}
|
||||
|
||||
const router = nuxtApp.$router as Router | undefined;
|
||||
if (!router) return;
|
||||
|
||||
nuxtApp.vueApp.use(
|
||||
VueUmamiPlugin({
|
||||
websiteID: siteConfig.umami.websiteId,
|
||||
scriptSrc: siteConfig.umami.scriptUrl,
|
||||
router,
|
||||
}),
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user