From 4ce1e01a6891b81f1159937a5f038471efb2dec2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <63717495+100759@users.noreply.github.com> Date: Mon, 28 Oct 2024 16:54:55 +0800 Subject: [PATCH 01/20] Update blog.config.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更改notion --- blog.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog.config.js b/blog.config.js index 318780df..3d1d314a 100644 --- a/blog.config.js +++ b/blog.config.js @@ -40,7 +40,7 @@ const BLOG = { notionPageId: process.env.NOTION_PAGE_ID, // DO NOT CHANGE THIS! Edit .env file! notionSpacesId: process.env.NOTION_SPACES_ID, // DO NOT CHANGE THIS! Edit .env file! notionAccessToken: process.env.NOTION_ACCESS_TOKEN, // Useful if you prefer not to make your database public - notionDomain: 'izuolan.notion.site', + notionDomain: 'fuheng-blog.notion.site', telegramToken: process.env.TELEGRAM_TOKEN, // The token of your Telegram bot telegramChatId: '263895784', // The chat id of your Telegram bot telegramChannelUrl: 'https://channel.zuolan.me/', // The link of your Telegram channel From e96a1c31c57f856de74b10a9999ce3cab6904bb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <63717495+100759@users.noreply.github.com> Date: Mon, 28 Oct 2024 16:57:44 +0800 Subject: [PATCH 02/20] Update and rename .env.example to .env --- .env | 3 +++ .env.example | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 .env delete mode 100644 .env.example diff --git a/.env b/.env new file mode 100644 index 00000000..7d01d486 --- /dev/null +++ b/.env @@ -0,0 +1,3 @@ +NOTION_PAGE_ID=9fd80f60b1d54dcfa893db9da14b1a6f +NOTION_SPACES_ID=fff2d8331ef0811dbf54000c3df82816 +TELEGRAM_TOKEN= diff --git a/.env.example b/.env.example deleted file mode 100644 index 0a4a8201..00000000 --- a/.env.example +++ /dev/null @@ -1,3 +0,0 @@ -NOTION_PAGE_ID= -NOTION_SPACES_ID= -TELEGRAM_TOKEN= \ No newline at end of file From 408ebba6546a99a5b839955b47e1fb294ef8bc4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <2827162018@qq.com> Date: Mon, 28 Oct 2024 22:44:37 +0800 Subject: [PATCH 03/20] =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog.config.js | 123 ++++++++++++++++++++++----------------------- public/favicon.ico | Bin 1139 -> 15406 bytes public/favicon.png | Bin 2325 -> 7272 bytes public/favicon.svg | 2 +- 4 files changed, 62 insertions(+), 63 deletions(-) diff --git a/blog.config.js b/blog.config.js index 3d1d314a..90fad561 100644 --- a/blog.config.js +++ b/blog.config.js @@ -1,21 +1,21 @@ const BLOG = { - title: 'Notionic', - author: '左蓝', - email: 'i@zuolan.me', - link: 'https://zuolan.me', - newsletter: 'Notionic Weekly', - description: 'A static blog build on top of Notion and Next.js', - lang: 'en-US', // ['en-US', 'zh-CN', 'zh-HK', 'zh-TW', 'ja-JP', 'es-ES'] - timezone: 'Asia/Shanghai', // See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones for all options. - appearance: 'auto', // ['light', 'dark', 'auto'], - font: 'sans-serif', // ['sans-serif', 'serif'] - lightBackground: '#F6F8FA', // use hex value, don't forget '#' e.g #fffefc - darkBackground: '#212936', // use hex value, don't forget '#' - path: '', // leave this empty unless you want to deploy Notionic in a folder - since: 2022, // If leave this empty, current year will be used. - postsPerPage: 10, - sortByDate: true, - pagesShow: { + title: '810C', // 博客的标题 + author: 'FuHeng', // 博主的名字 + email: '2827162018@qq.com', // 博主的电子邮件 + link: 'https://810C.cn', // 博客链接 + newsletter: 'Notionic Weekly', // 新闻订阅的名称 + description: 'FuHeng的个人博客', // 博客的描述 + lang: 'zh-CN', // 博客语言,支持多种语言 + timezone: 'Asia/Shanghai', // 时区设置 + appearance: 'auto', // 外观模式,支持亮色、暗色和自动模式 + font: 'sans-serif', // 字体类型,可选择无衬线或有衬线字体 + lightBackground: '#F6F8FA', // 亮色背景的十六进制颜色值 + darkBackground: '#212936', // 暗色背景的十六进制颜色值 + path: '', // 部署时的路径,默认为空即根路径 + since: 2022, // 博客开始年份,如果留空则使用当前年份 + postsPerPage: 10, // 每页显示的文章数量 + sortByDate: true, // 是否按日期排序 + pagesShow: { // 控制哪些页面显示 newsletter: true, notes: true, projects: true, @@ -23,60 +23,59 @@ const BLOG = { books: true, friends: true }, - showWeChatPay: true, - previewImagesEnabled: true, - autoCollapsedNavBar: false, // The automatically collapsed navigation bar - ogImageGenerateHost: 'og-zl.vercel.app', // The link to generate OG image, don't end with a slash - defaultCover: '/cover.jpg', - socialLink: { - twitter: 'https://twitter.com/izuolan', - github: 'https://github.com/izuolan', - telegram: 'https://t.me/zuolan' + showWeChatPay: true, // 是否显示微信支付选项 + previewImagesEnabled: true, // 是否启用预览图像 + autoCollapsedNavBar: false, // 导航栏是否自动折叠 + ogImageGenerateHost: 'og-zl.vercel.app', // 生成OG图像的链接 + defaultCover: '/cover.jpg', // 默认封面图片路径 + socialLink: { // 社交媒体链接 + twitter: '', // Twitter链接 + github: '', // GitHub链接 + telegram: '' // Telegram链接 }, - seo: { - keywords: ['Notionic', 'Zuolan', 'Blog'], - googleSiteVerification: '' // Remove the value or replace it with your own google site verification code + seo: { // SEO设置 + keywords: ['Notionic', 'Zuolan', 'Blog'], // 关键词 + googleSiteVerification: '' // Google站点验证代码 }, - notionPageId: process.env.NOTION_PAGE_ID, // DO NOT CHANGE THIS! Edit .env file! - notionSpacesId: process.env.NOTION_SPACES_ID, // DO NOT CHANGE THIS! Edit .env file! - notionAccessToken: process.env.NOTION_ACCESS_TOKEN, // Useful if you prefer not to make your database public - notionDomain: 'fuheng-blog.notion.site', - telegramToken: process.env.TELEGRAM_TOKEN, // The token of your Telegram bot - telegramChatId: '263895784', // The chat id of your Telegram bot - telegramChannelUrl: 'https://channel.zuolan.me/', // The link of your Telegram channel - telegramChannelName: 'zuolan_me', // The name of your Telegram channel - craftConfigShareUrl: 'https://www.craft.do/s/kQtcWqkv98cHhB', // The link to share your craft config - analytics: { - provider: '', // Currently we support Google Analytics, Ackee, Umami and Cloudflare Insights, please fill with 'ga' or 'ackee' or 'umami' or 'cf', leave it empty to disable it. - ackeeConfig: { - tracker: '', // e.g 'https://ackee.example.com/tracker.js' - dataAckeeServer: '', // e.g https://ackee.example.com , don't end with a slash - domainId: '' // e.g '0e2257a8-54d4-4847-91a1-0311ea48cc7b' + notionPageId: process.env.NOTION_PAGE_ID, // Notion页面ID,需在.env文件中设置 + notionSpacesId: process.env.NOTION_SPACES_ID, // Notion空间ID,需在.env文件中设置 + notionAccessToken: process.env.NOTION_ACCESS_TOKEN, // Notion访问令牌,用于私有数据库 + notionDomain: 'fuheng-blog.notion.site', // Notion域名 + telegramToken: process.env.TELEGRAM_TOKEN, // Telegram机器人的令牌 + telegramChatId: '263895784', // Telegram机器人聊天ID + telegramChannelUrl: 'https://channel.zuolan.me/', // Telegram频道链接 + telegramChannelName: 'zuolan_me', // Telegram频道名称 + craftConfigShareUrl: 'https://www.craft.do/s/kQtcWqkv98cHhB', // Craft配置分享链接 + analytics: { // 分析设置 + provider: '', // 可选分析提供者: Google Analytics, Ackee, Umami, Cloudflare Insights + ackeeConfig: { // Ackee配置 + tracker: '', // Ackee跟踪器URL + dataAckeeServer: '', // Ackee数据服务器URL + domainId: '' // Ackee域ID }, - cfConfig: { - scriptUrl: 'https://static.cloudflareinsights.com/beacon.min.js', // Default - token: '' // Like '{"token": "xxxxxxxxxxxxxxxxxx"}' + cfConfig: { // Cloudflare配置 + scriptUrl: 'https://static.cloudflareinsights.com/beacon.min.js', // Cloudflare默认跟踪脚本 + token: '' // Cloudflare令牌 }, - gaConfig: { - measurementId: '' // e.g: G-XXXXXXXXXX + gaConfig: { // Google Analytics配置 + measurementId: '' // Google测量ID }, - umamiConfig: { - scriptUrl: '', // The url of your Umami script - websiteId: '' // The website id of your Umami instance + umamiConfig: { // Umami配置 + scriptUrl: '', // Umami脚本URL + websiteId: '' // Umami网站ID } }, - comment: { - // support provider: utterances, supacomments - provider: '', // leave it empty if you don't need any comment plugin - supaCommentsConfig: { - supabaseUrl: '', // The url of your Supabase instance - supabaseAnonKey: '' // The anonymous key of your Supabase instance + comment: { // 评论设置 + provider: '', // 支持的评论提供者,可以为空 + supaCommentsConfig: { // SupaComments配置 + supabaseUrl: '', // Supabase实例URL + supabaseAnonKey: '' // Supabase匿名密钥 }, - utterancesConfig: { - repo: '' + utterancesConfig: { // Utterances配置 + repo: '' // GitHub仓库 } }, - isProd: process.env.VERCEL_ENV === 'production' // distinguish between development and production environment (ref: https://vercel.com/docs/environment-variables#system-environment-variables) + isProd: process.env.VERCEL_ENV === 'production' // 判断是否为生产环境 } // export default BLOG -module.exports = BLOG +module.exports = BLOG // 导出博客配置 diff --git a/public/favicon.ico b/public/favicon.ico index a68da060dee98bb8acec2899e23e1930d463ad1d..d0f5294535f5976273293690d5ddb88cc6001a59 100644 GIT binary patch literal 15406 zcmeI2TZmOv7{~W`DWmez#fWYvm9)_rM;*sYFD6+&^inFKf>xFqieg$JAw&uyQBmf- zdI&;7yd*JEnCPv@5qI?d-v{r zBfMuF{sPIGvUC;O%O&bdSN#*}*VNSHpi$r$4R62r@=tjX^pdEyw)O$X{{?vJ<4~XW z)KZ>Hc|P>3)vv3oyP15IsJgnkyVWmOVE+thTKs+fIbnf%#*7tFP`{(U2*2SxEW)>oMe}&6yCxO_fjM&z z{&tk;)AeujyXco5h4@CUAAS#)(RYY}I2?hh8^gdDyBEI=<@Rmu2}4>O%wD(C%4V4E zN*WLNTauwqI}U7LEOq+%8Pv{Xx7_(S%m1o;bfH~dSsb4Fe)+%_BAMxxD{!vFh z(Lejz9gh4SU!FFfvGq!w`g8J4TqZcYaKE+k@U!%P+4y#2->m*=-&*3MeItskZM%t8 zrtLSrV?JE})V~b9Y6+Yg<7ZvGZvP|q6?K1jbkw!!>XMgl?VpM5clB%@AFsReu74}j zSnBE;-`c|q^{mZw`5sCiswTrr+9XjsHD)0J7{!wU>N8{aic>40KvrM9Y z__49!%Gtc@AKo6zw<%cC=D&Q(cWmACux9Ol1#7?rtvBC3^MMV z*+zK^~%omCG&Yp{K1Ms28I z-MfiCpN5}fko8^e^c1#d>;9N_RFtbN;I6~&CMdj1$PmBcq5h~JJb3W%a^PpIjK|(V zNO!sAj(3{9zwxDgd2*?3Fy|(Xm($INJJudzcLtg%EXB41z3JdS(o)zRzq-SoSqy%3 zCqgY2cL#geAL@q!$C94ohoWEhdtM(?3FQVer&HG@ty{En3$`_XVq>utl!d9@tgVT| ziP+CVra9KgQe&gFb#@YXJ#SNY60){W(4LPe>%6OX7Nwrob+7g*vkJav1oI8@X@AtsgVcYKOd)x&47E0tQl5m~ znMQQgHoY^C=Be84$sZ7AW49f3^Pw0vQx_%porz4*=QZ?V@0N(=80_erlNN`I)Xj?= zn~Wzftn;aAM>D#T-|W@L?#pDNmEl+0Hw!!Cz6bfdyA9LqC~1ZG4+%TCM*Fc>IRb7n ztq{Mybr=mTZo~M6UF&P!TxtvPH`w)DT?l@yd%L0U66i;GiTgJFo45YJJAu5`$t2Pm z_naR;czGD%3A?+uMKTHc9kmYoqon_rK7VkDoc$8{S;j(HE15x)+eqCvUM| z3jX8BChmnXKS>gxlMeHB7nBCNe z3cgBYpCp~?5;{*q+P}Yb^=&>&{06(`WM15S{K(9JbUyt(ffD-=IjzyL`3n!$z&D^( zNkqNgosCNHpNA1yVb^_MUY)Oxuhw+_v3P}Dcb2vsrELViu?80g8@?&Et?OmwfF1L)$Tc97HXdNK_ zSv)`P7iPz|o+00K{SqhLofh>@0sSFR?CuNvWq*Fh<}$Fw-rEcxKD;}=!*94vJG3uv zk}T<41(4>&H;{jxIt#Cy_b12n4#kOml*NzE0*U8f_|ceX!Tbg0*t7_+m#M0%>PGzr z@Lg&_jA?NarcJtw@?g6~og-_J)3;G+c3O&mkl54dh&G^6gUyZ;&i7#vS literal 1139 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 P^aJZ@8^Ygd-hcXEq!X6R literal 2325 zcmbVOc{tR27yk`|u?=NkV!|-?B_zVQ8e5vd7zSZ15!q6fN*YuXV=Pk&xnyY&B3ZI? zl_h(!Q?iRo*^}jt+xx!H^FGi0<9*)q$5}q-bI$iX-#@2)a0BM z05H&91^~iHH_bGuHo9@NFtvy! zt^Qs3i(vh$$$#`=>Fw8_=>5g6TcNQ4WV=Cao`~e`A+H7q7Q+aiErt-Sl}|!V@VOb6 zdBcBr0RY6*^qhfp=;(4&#L-;DXZ!gA`A38QpF-GL@vXWb81qMomPm=}96@xtaQjXt zTBkqdqxr)GgusV`2HONYwL%K~4+rR9t~RT7?^W?N5=n|W@mdoP5f1F-FNYc4^eux17mhB7F1JZp zLev!cjaCS)g`W9QCyUY@MVGa%EWK-rHE{64s&bZ0(GHWJNbZb;@53vByaJ!MV zB)ozvlrSPYK+;k=UOXcged(DUmWG-9fXsP;%3{O^`PuKca1*S`zpiVk38&iT zz6ti!KTUG8D%!0e874!Ev&-H^!$j`mvi6JKKl#l`Vec&BZ0;CBUpp8S`EbMbN1xK( z89DX#+ZSe0KM7n~>bdm~WtJvRD$Kh{V_MRq?+|FEk7X94ZaCwi+p`kRMo#e%Gd1<{ zJv-T5(#-ReSxbk~CGoiY&KaBob-&4E*G|2`j#QfD%+w{GP@m*{ttS|R6x)r$HCR%@ zW;eX~MTH7rF0w z&1I3UR$ABaLBF?o*2QmUx`rs1oo@oGsF9@MfX`DgMG)cQKrEPewf|L^yPfg%aK5o>kirw4DDnO`LJ*Kf@-*q*-hLsbxTJsrTUG=7Vnm4|F_cly1cMX&4DZ4MDPq)Sbs)W}a= zK}!a#G=kSt3>0N!qQ?js<&=gacva1*mBcR=;~-{A6~TquUbx9y4HusR- zgn9X&#v^UckjD9C$zUCG4)-l*NZmo$A zIZjaF=lh0@PM;1reQumlsc)r^8AcV1y~k9?JHXWs2y?W&IPUabjN}&_8p9PC7My^Q z0ItLxX61X@0y^g9^E)-GYiBv#X#Y`^|4`BLsx9kxrwj zPa1h-#Taz0r3T}Cg_?3pSS*nWX*F_;2?9* z=-}6Wiiw)|urkVToe^e#KSH-3zYjc!Jwe+mE#C_+p5yP8Z(%`>DJdsI0`YED;ZbwC z3APnR8ibA%R6;FFAU?@qh1E%gZGrDnO^R`As)gQSETj=5tH-ov0{0akwxxO^;}O{> zCo#TNKxj_0K#+zZs0NiBE522y?LkgB2e3xI_-Z4l#sY%ltx=bHCz!=2(OYzaoL+DEg}olC%kXt zMR>a9(AeYcq2dEoP(0<(Fs9)ve%NY?QzWKprJpsxku{ee_!#Mt z`z_Os^$I!-NblVVAm7#1;P8>1%DSE&JHf_NLhW7RYd?#+WrYUx5w-1Dmx0GTjqJky zTS=2(h(*ll*^EE+w}DJq>Zh%qDl8z=SorAbPtP9aSa3D^Gvz@0nm}6(F{OOHV$~nM zJ8b_E{;F2z0DS^1$eNBxbQnIsd_CFP5{SMG%s8kPT-NW{2gir8_sd$+U=BJy0k1sNbl;O2B8 z5GcCup$da2?}T_bE$Z$i3T7sySv;97Lp|wPqkAU{)FF~f=H&s%`@53ou`e+C3kF5Q zzyw&#R8}E`O^nwd`JiJ1W}~`_OKjvCS<|jf%u~N9+3)*f#VW6?-X(Rmcz`NZx!5p} zxBpUexjpCSLJ&N6rC{jWQ+NHYxrRlqfB1O+2Pl1OGU14Z>^&UvD>>R}{##VQ$MU@& TD9D1Y9pR=Z^tqS65hDKrRr~Ic diff --git a/public/favicon.svg b/public/favicon.svg index 856b0181..9a903ff0 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1 +1 @@ - \ No newline at end of file + Face/ 9 Nose/ 7 Mouth/ 1 Eyes/ 9 Eyebrows/ 0 Glasses/ 0 Hairstyle/ 11 Accessories/ 0 Details/ 0 Beard/ 0 halloween/ 0 \ No newline at end of file From c3237197057543ae9db295a45b50659f579b5e1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <2827162018@qq.com> Date: Mon, 28 Oct 2024 23:44:34 +0800 Subject: [PATCH 04/20] =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=A7=81=E4=BF=A1?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blog.config.js | 2 -- components/ContactForm.js | 24 ++---------------------- pages/api/sendtotg.js | 24 ------------------------ 3 files changed, 2 insertions(+), 48 deletions(-) delete mode 100644 pages/api/sendtotg.js diff --git a/blog.config.js b/blog.config.js index 90fad561..c14a2e89 100644 --- a/blog.config.js +++ b/blog.config.js @@ -41,8 +41,6 @@ const BLOG = { notionSpacesId: process.env.NOTION_SPACES_ID, // Notion空间ID,需在.env文件中设置 notionAccessToken: process.env.NOTION_ACCESS_TOKEN, // Notion访问令牌,用于私有数据库 notionDomain: 'fuheng-blog.notion.site', // Notion域名 - telegramToken: process.env.TELEGRAM_TOKEN, // Telegram机器人的令牌 - telegramChatId: '263895784', // Telegram机器人聊天ID telegramChannelUrl: 'https://channel.zuolan.me/', // Telegram频道链接 telegramChannelName: 'zuolan_me', // Telegram频道名称 craftConfigShareUrl: 'https://www.craft.do/s/kQtcWqkv98cHhB', // Craft配置分享链接 diff --git a/components/ContactForm.js b/components/ContactForm.js index 1568249d..905db498 100644 --- a/components/ContactForm.js +++ b/components/ContactForm.js @@ -16,28 +16,8 @@ function Contact() { // setShowResult(true) // }, 3000) - const tgUrl = '/api/sendtotg' - const res = await fetch(tgUrl, { - body: JSON.stringify({ - name: event.target.name.value, - mail: event.target.mail.value, - message: event.target.message.value - }), - headers: { - 'Content-Type': 'application/json' - }, - method: 'POST' - }) - // await res.json() - const result = await res.json() - const status = result.status - console.log('status:', status) - if (status === 'Success') { - setSubmitting(false) - setShowResult(true) - } else { - alert(t.CONTACT.FAILED_MESSAGE) - } + + } return ( <> diff --git a/pages/api/sendtotg.js b/pages/api/sendtotg.js deleted file mode 100644 index 779ed1a4..00000000 --- a/pages/api/sendtotg.js +++ /dev/null @@ -1,24 +0,0 @@ -import BLOG from '@/blog.config' - -export default async function sendtotg(req, res) { - const TG_TOKEN = BLOG.telegramToken - const TG_CHAT_ID = BLOG.telegramChatId - const tgUrl = 'https://api.telegram.org/bot' + TG_TOKEN + '/sendMessage' - const init = { - method: 'POST', - headers: { - 'content-type': 'application/json;charset=UTF-8' - }, - body: JSON.stringify({ - chat_id: TG_CHAT_ID, - text: req.body - }) - } - const response = await fetch(tgUrl, init) - if (response.status === 200) { - // const respText = await response.text() - res.send({ status: 'Success' }) - } else { - res.send({ status: 'Fail to send message to Telegram' }) - } -} From c471271d4735acc1ee8ad8f55c7391ed813ff4f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <2827162018@qq.com> Date: Mon, 28 Oct 2024 23:54:37 +0800 Subject: [PATCH 05/20] =?UTF-8?q?=E5=88=A0=E9=99=A4=E7=A7=81=E4=BF=A12.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ContactForm.js | 112 -------------------------------------- 1 file changed, 112 deletions(-) delete mode 100644 components/ContactForm.js diff --git a/components/ContactForm.js b/components/ContactForm.js deleted file mode 100644 index 905db498..00000000 --- a/components/ContactForm.js +++ /dev/null @@ -1,112 +0,0 @@ -import { useState } from 'react' -import { lang } from '@/lib/lang' -import { useRouter } from 'next/router' - -function Contact() { - const [showResult, setShowResult] = useState(false) - const [submitting, setSubmitting] = useState(false) - const { locale } = useRouter() - const t = lang[locale] - - const sentMessage = async (event) => { - event.preventDefault() - setSubmitting(true) - // setTimeout(() => { - // setSubmitting(false) - // setShowResult(true) - // }, 3000) - - - - } - return ( - <> - {showResult ? ( -
-

- {t.CONTACT.SUCCESS_MESSAGE} -

-
- ) : ( -
-
- -
-
- -
- -
- -
- -
- {submitting ? ( - - ) : ( - - )} -

- {t.CONTACT.FORM_EMAIL_REQUIRED} -

-
-
- )} - - ) -} - -export default Contact From 1e07bd1710187a5af5a9f2413bb3233159b474c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <2827162018@qq.com> Date: Tue, 29 Oct 2024 00:07:47 +0800 Subject: [PATCH 06/20] =?UTF-8?q?=E7=A7=81=E4=BF=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/api/sendtotg.js | 2 ++ pages/contact.js | 34 ---------------------------------- 2 files changed, 2 insertions(+), 34 deletions(-) create mode 100644 pages/api/sendtotg.js delete mode 100644 pages/contact.js diff --git a/pages/api/sendtotg.js b/pages/api/sendtotg.js new file mode 100644 index 00000000..475f2485 --- /dev/null +++ b/pages/api/sendtotg.js @@ -0,0 +1,2 @@ +import BLOG from '@/blog.config' + diff --git a/pages/contact.js b/pages/contact.js deleted file mode 100644 index ee0574fe..00000000 --- a/pages/contact.js +++ /dev/null @@ -1,34 +0,0 @@ -import Container from '@/components/Container' -import ContactForm from '@/components/ContactForm' -import BLOG from '@/blog.config' -import { lang } from '@/lib/lang' -import { useRouter } from 'next/router' - -export const Contact = () => { - const { locale } = useRouter() - const t = lang[locale] - return ( - -
-

- {t.CONTACT.TITLE} -

-

- {t.CONTACT.DESCRIPTION} -

-

- {t.CONTACT.TG_DESCRIPTION} - - @{BLOG.socialLink.telegram.slice(13)} - -

-
- -
- ) -} - -export default Contact From 2f6c2a4f667df9447b3bc92c9bcab28220436a6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <2827162018@qq.com> Date: Tue, 29 Oct 2024 00:25:13 +0800 Subject: [PATCH 07/20] =?UTF-8?q?=E7=A7=81=E4=BF=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/lang.js | 19 ++++--------------- public/favicon.svg | 7 ++++++- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/lib/lang.js b/lib/lang.js index 129c195d..0e0882c1 100644 --- a/lib/lang.js +++ b/lib/lang.js @@ -9,7 +9,7 @@ export const lang = { NOTES: '笔记', NEWSLETTER: '周刊', BOOKS: '书架', - CONTACT: '私信' + CONTACT: '联系' }, PAGINATION: { PREV: '上一页', @@ -18,7 +18,7 @@ export const lang = { LAYOUT: { NOTICE_TEXT: '对于本文内容有任何疑问, 可与我联系.', PAY_BUTTON: '微信赞赏', - NOTICE_BUTTON: '一键私信', + NOTICE_BUTTON: '联系我', COMMENT_TITLE: '评论区' }, SEARCH: { @@ -28,7 +28,7 @@ export const lang = { }, HERO: { HOME: { - CONTACT_BUTTON: '一键私信', + CONTACT_BUTTON: '联系我', CONTACT_BUTTON_DES: '快速与我联系', RSS_BUTTON: '订阅博客' }, @@ -44,18 +44,7 @@ export const lang = { RSS_BUTTON_COPIED: '已复制', RSS_BUTTON_DES_COPIED: '已复制 RSS 链接' }, - CONTACT: { - TITLE: '一键私信', - DESCRIPTION: '如有疑问或建议需与我联系, 请填写下面表单.', - TG_DESCRIPTION: '也可直接联系 Telegram: ', - SUCCESS_MESSAGE: '消息已发送, 我会尽快回复到你的邮箱.', - FORM_USERNAME: '你的昵称', - FORM_EMAIL: '你的邮箱*', - FORM_CONTENT: '消息内容', - SEND_BUTTON: '发送', - FORM_EMAIL_REQUIRED: '*可以填写其他有效联系方式', - FAILED_MESSAGE: '抱歉, 发送失败, 请直接联系我的 Telegram 吧.' - }, + FOOTER: { COPYRIGHT_START: '本站原创内容基于 ', COPYRIGHT_NAME: 'CC BY-SA 4.0', diff --git a/public/favicon.svg b/public/favicon.svg index 9a903ff0..3b49ad18 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1 +1,6 @@ - Face/ 9 Nose/ 7 Mouth/ 1 Eyes/ 9 Eyebrows/ 0 Glasses/ 0 Hairstyle/ 11 Accessories/ 0 Details/ 0 Beard/ 0 halloween/ 0 \ No newline at end of file + \ No newline at end of file From 643acfdef1c7eb0963d023c0075ba7193e8c15c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <2827162018@qq.com> Date: Tue, 29 Oct 2024 00:54:07 +0800 Subject: [PATCH 08/20] =?UTF-8?q?=E4=BF=AE=E6=94=B9notes=EF=BC=8Clogo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/Common/Logo.js | 19 +++++-------------- pages/notes.js | 39 +++++++++++++-------------------------- 2 files changed, 18 insertions(+), 40 deletions(-) diff --git a/components/Common/Logo.js b/components/Common/Logo.js index a400bd52..378fc125 100644 --- a/components/Common/Logo.js +++ b/components/Common/Logo.js @@ -3,20 +3,11 @@ import * as React from 'react' const Logo = (props) => ( - - - - - + width="76" + height="65" + viewBox="0 0 76 65" + fill="none" xmlns="http://www.w3.org/2000/svg"> ) export default Logo diff --git a/pages/notes.js b/pages/notes.js index eca395ef..71309c9c 100644 --- a/pages/notes.js +++ b/pages/notes.js @@ -1,22 +1,14 @@ import Container from '@/components/Container' -import NotePost from '@/components/NotePost' -import NotesHero from '@/components/Hero/Notes' -import { getBlocksMaps } from '@/lib/getBlocksMaps' -import { getPostBlocks, getAllPosts } from '@/lib/notion' +import BlogPost from '@/components/BlogPost' +import NewsletterHero from '@/components/Hero/Newsletter' +import { getAllPosts, getPostBlocks } from '@/lib/notion' +import BLOG from '@/blog.config' export async function getStaticProps() { - const { pagesJson, siteConfigObj } = await getBlocksMaps() - - const blocksJson = pagesJson - // Hide table header and home page on Archive page. - for (let i = 0; i < blocksJson.length; i++) { - const deleteTitleBlock = blocksJson[i].title === 'Title' ? blocksJson.splice(i, i + 1) : blocksJson - const deleteIndexBlock = blocksJson[i].slug === 'index' ? blocksJson.splice(i, i + 1) : blocksJson - console.log('[INFO] Hide Craft Table Header: ', deleteTitleBlock.length, deleteIndexBlock.length) - } + const posts = await getAllPosts({ onlyNewsletter: true }) const heros = await getAllPosts({ onlyHidden: true }) - const hero = heros.find((t) => t.slug === 'notes') + const hero = heros.find((t) => t.slug === 'newsletter') let blockMap try { @@ -28,27 +20,22 @@ export async function getStaticProps() { return { props: { - blocksJson, - siteConfigObj, + posts, blockMap }, revalidate: 1 } } -const Notes = ({ blocksJson, siteConfigObj, blockMap }) => { +const newsletter = ({ posts, blockMap }) => { return ( - - - {blocksJson.map((block) => ( - + + + {posts.map((post) => ( + ))} ) } -export default Notes +export default newsletter From 61b9926b614f0b7597c0423cbde582c6f300d0ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <2827162018@qq.com> Date: Tue, 29 Oct 2024 01:04:29 +0800 Subject: [PATCH 09/20] logo --- components/Common/Logo.js | 22 +- pages/notes.js | 2 +- public/favicon.svg | 462 +++++++++++++++++++++++++++++++++++++- 3 files changed, 473 insertions(+), 13 deletions(-) diff --git a/components/Common/Logo.js b/components/Common/Logo.js index 378fc125..5f0a112b 100644 --- a/components/Common/Logo.js +++ b/components/Common/Logo.js @@ -2,12 +2,22 @@ import * as React from 'react' const Logo = (props) => ( - + + + + + + ) export default Logo diff --git a/pages/notes.js b/pages/notes.js index 71309c9c..a0a17961 100644 --- a/pages/notes.js +++ b/pages/notes.js @@ -8,7 +8,7 @@ export async function getStaticProps() { const posts = await getAllPosts({ onlyNewsletter: true }) const heros = await getAllPosts({ onlyHidden: true }) - const hero = heros.find((t) => t.slug === 'newsletter') + const hero = heros.find((t) => t.slug === 'Notes') let blockMap try { diff --git a/public/favicon.svg b/public/favicon.svg index 3b49ad18..f183c24a 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1,6 +1,456 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From dc0c1e56cb8f744f614af17f47ba7a172a6eb676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <2827162018@qq.com> Date: Tue, 29 Oct 2024 01:12:55 +0800 Subject: [PATCH 10/20] logo --- pages/notes.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/pages/notes.js b/pages/notes.js index a0a17961..eccca07b 100644 --- a/pages/notes.js +++ b/pages/notes.js @@ -1,17 +1,21 @@ -import Container from '@/components/Container' -import BlogPost from '@/components/BlogPost' -import NewsletterHero from '@/components/Hero/Newsletter' -import { getAllPosts, getPostBlocks } from '@/lib/notion' -import BLOG from '@/blog.config' +import Container from '@/components/Container' // 导入Container组件 +import BlogPost from '@/components/BlogPost' // 导入BlogPost组件 +import NewsletterHero from '@/components/Hero/Newsletter' // 导入NewsletterHero组件 +import { getAllPosts, getPostBlocks } from '@/lib/notion' // 导入getAllPosts和getPostBlocks函数 +import BLOG from '@/blog.config' // 导入BLOG配置 export async function getStaticProps() { + // 获取所有只包含Newsletter的帖子 const posts = await getAllPosts({ onlyNewsletter: true }) + // 获取所有隐藏的帖子 const heros = await getAllPosts({ onlyHidden: true }) - const hero = heros.find((t) => t.slug === 'Notes') + // 找到slug为'newsletter'的帖子 + const hero = heros.find((t) => t.slug === 'newsletter') let blockMap try { + // 获取hero的blockMap blockMap = await getPostBlocks(hero.id) } catch (err) { console.error(err) @@ -27,6 +31,7 @@ export async function getStaticProps() { } } +// 定义newsletter函数 const newsletter = ({ posts, blockMap }) => { return ( @@ -38,4 +43,4 @@ const newsletter = ({ posts, blockMap }) => { ) } -export default newsletter +export default newsletter // 导出newsletter函数 \ No newline at end of file From cb76e6cef79f051eb21d2f88c01b2690d4faf52f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <2827162018@qq.com> Date: Tue, 29 Oct 2024 01:19:04 +0800 Subject: [PATCH 11/20] 1 --- components/Common/Logo.js | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/components/Common/Logo.js b/components/Common/Logo.js index 5f0a112b..12b54936 100644 --- a/components/Common/Logo.js +++ b/components/Common/Logo.js @@ -2,22 +2,10 @@ import * as React from 'react' const Logo = (props) => ( - - - - - + + ) export default Logo From 1e9d4d58143439044e8f2ea5ac03c5c12f13d839 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <2827162018@qq.com> Date: Tue, 29 Oct 2024 01:24:31 +0800 Subject: [PATCH 12/20] logo --- components/Common/Logo.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/components/Common/Logo.js b/components/Common/Logo.js index 12b54936..5068f289 100644 --- a/components/Common/Logo.js +++ b/components/Common/Logo.js @@ -2,8 +2,21 @@ import * as React from 'react' const Logo = (props) => ( - + + + + + ) From 1de87def9153a77fc5578ebd71e0a7d68488a765 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <2827162018@qq.com> Date: Tue, 29 Oct 2024 01:28:59 +0800 Subject: [PATCH 13/20] =?UTF-8?q?logo=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/Common/Logo.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/Common/Logo.js b/components/Common/Logo.js index 5068f289..53fe3774 100644 --- a/components/Common/Logo.js +++ b/components/Common/Logo.js @@ -3,10 +3,10 @@ import * as React from 'react' const Logo = (props) => ( +width="50.000000pt" height="50.000000pt" viewBox="0 0 50.000000 50.000000" +preserveAspectRatio="xMidYMid meet"> - + ) export default Logo From 7ae3b353137bbb25ab6c2b81837e1c21a222fc57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <2827162018@qq.com> Date: Tue, 29 Oct 2024 01:48:40 +0800 Subject: [PATCH 15/20] 1 --- components/Common/Logo.js | 51 +++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/components/Common/Logo.js b/components/Common/Logo.js index 0e641d43..c060acd4 100644 --- a/components/Common/Logo.js +++ b/components/Common/Logo.js @@ -2,21 +2,42 @@ import * as React from 'react' const Logo = (props) => ( - - - - - + From 040c94dfd4902b94a88209ceb83146924fc98e54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <2827162018@qq.com> Date: Tue, 29 Oct 2024 01:55:42 +0800 Subject: [PATCH 16/20] 1 --- components/Common/Logo.js | 48 ++++++++++----------------------------- 1 file changed, 12 insertions(+), 36 deletions(-) diff --git a/components/Common/Logo.js b/components/Common/Logo.js index c060acd4..ae642598 100644 --- a/components/Common/Logo.js +++ b/components/Common/Logo.js @@ -2,42 +2,18 @@ import * as React from 'react' const Logo = (props) => ( - + + + + + From b91a65df3196bcfe26d656f0ad2168700ec1d5d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <2827162018@qq.com> Date: Tue, 29 Oct 2024 02:03:49 +0800 Subject: [PATCH 17/20] 1 --- components/Common/Logo.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/components/Common/Logo.js b/components/Common/Logo.js index ae642598..afa7d262 100644 --- a/components/Common/Logo.js +++ b/components/Common/Logo.js @@ -3,10 +3,10 @@ import * as React from 'react' const Logo = (props) => ( +width="30.000000pt" height="30.000000pt" viewBox="0 0 30.000000 30.000000" +preserveAspectRatio="xMidYMid meet"> - + ) export default Logo From 6b53e6b81387a8511e12cb378907266dc8d2e08d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <2827162018@qq.com> Date: Tue, 29 Oct 2024 02:08:56 +0800 Subject: [PATCH 18/20] 2 --- components/Common/Logo.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/components/Common/Logo.js b/components/Common/Logo.js index afa7d262..da5570f5 100644 --- a/components/Common/Logo.js +++ b/components/Common/Logo.js @@ -3,16 +3,16 @@ import * as React from 'react' const Logo = (props) => ( + width="30.000000pt" height="30.000000pt" viewBox="0 0 30.000000 30.000000" + preserveAspectRatio="xMidYMid meet"> - + From 0eb169602d89739268dcbace2886ae5c90e9f9a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <63717495+100759@users.noreply.github.com> Date: Tue, 29 Oct 2024 11:48:40 +0800 Subject: [PATCH 19/20] Update blog.config.js --- blog.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog.config.js b/blog.config.js index c14a2e89..2cc2abc9 100644 --- a/blog.config.js +++ b/blog.config.js @@ -17,7 +17,7 @@ const BLOG = { sortByDate: true, // 是否按日期排序 pagesShow: { // 控制哪些页面显示 newsletter: true, - notes: true, + notes: false, projects: true, contact: true, books: true, From 8cf8954c3754e5d85a06fd0271c546caa972c161 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=81=92?= <63717495+100759@users.noreply.github.com> Date: Tue, 29 Oct 2024 12:06:50 +0800 Subject: [PATCH 20/20] Update Logo.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更改logo大小 --- components/Common/Logo.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/components/Common/Logo.js b/components/Common/Logo.js index da5570f5..7db45f5b 100644 --- a/components/Common/Logo.js +++ b/components/Common/Logo.js @@ -3,16 +3,16 @@ import * as React from 'react' const Logo = (props) => ( - - +