chore: 重写初始提交(清空历史,整理后全量提交)

This commit is contained in:
ywxapp
2026-08-16 16:54:14 +08:00
commit 6c1a106bc1
1808 changed files with 238144 additions and 0 deletions
+68
View File
@@ -0,0 +1,68 @@
{extend name="layout"}
{block name="title"}{$docsTitle}{/block}
{block name="description"}{$docsTitle} - 框架、插件与开发指南的完整在线文档{/block}
{block name="body"}
<section class="dc-hero">
<div class="dc-hero-inner">
<h1>{$docsTitle}</h1>
<p>框架架构、插件开发、会员支付与命令行工具的完整说明,共收录 {$totalDocs} 篇文档</p>
<form class="dc-hero-search" action="/docs/search" method="get">
<input type="text" name="kw" placeholder="搜索你想了解的内容..." autocomplete="off">
<button type="submit">搜索</button>
</form>
</div>
</section>
<section class="dc-projects">
{if condition="empty($projects)"}
<div class="dc-empty">
<p>还没有发布任何文档项目</p>
<p class="dc-empty-tip">请到后台「文档中心 - 文档项目」创建</p>
</div>
{else/}
<div class="dc-project-grid">
{volist name="projects" id="p"}
<div class="dc-project-card">
<div class="dc-project-head">
<div class="dc-project-icon">
{if condition="$p.logo neq ''"}
<img src="{$p.logo}" alt="{$p.title}">
{else/}
<span>{$p.title|mb_substr=0,1,'UTF-8'}</span>
{/if}
</div>
<div class="dc-project-info">
<h2><a href="/docs/{$p.name}">{$p.title}</a></h2>
<p>{$p.intro|default='暂无简介'}</p>
</div>
</div>
<div class="dc-project-meta">
<span>{$p.doc_count} 篇文档</span>
{if condition="$p.addon neq ''"}
<span class="dc-tag">插件 {$p.addon}</span>
{else/}
<span class="dc-tag">框架核心</span>
{/if}
</div>
{if condition="!empty($p.recent)"}
<ul class="dc-project-recent">
{volist name="p.recent" id="r"}
<li><a href="/docs/{$p.name}/{$r.name}">{$r.title}</a></li>
{/volist}
</ul>
{/if}
<a class="dc-project-enter" href="/docs/{$p.name}">进入文档 →</a>
</div>
{/volist}
</div>
{/if}
</section>
<footer class="dc-footer">
<p>© {$currentYear} {$docsTitle} · Powered by YwxApp</p>
</footer>
{/block}
+47
View File
@@ -0,0 +1,47 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>{block name="title"}{$docsTitle}{/block}</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="keywords" content="{block name="keywords"}YwxApp,文档中心{/block}">
<meta name="description" content="{block name="description"}{$docsTitle}{/block}">
<link rel="stylesheet" href="/static/docs/css/docs.css">
{block name="css"}{/block}
</head>
<body>
<header class="dc-header">
<div class="dc-header-inner">
<a class="dc-logo" href="/docs">
<span class="dc-logo-mark">Y</span>
<span class="dc-logo-text">{$docsTitle}</span>
</a>
<nav class="dc-nav">
<a href="/docs">文档首页</a>
{volist name="projectList" id="p" offset="0" length="5"}
<a href="/docs/{$p.name}">{$p.title}</a>
{/volist}
<a href="/" target="_blank">返回官网</a>
</nav>
<form class="dc-search" action="/docs/search" method="get">
<input type="text" name="kw" value="{$keyword|default=''}" placeholder="搜索文档..." autocomplete="off">
<button type="submit" aria-label="搜索">
<svg viewBox="0 0 24 24" width="16" height="16"><path fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 1 0-.7.7l.27.28v.79l5 4.99L20.49 19l-4.99-5Zm-6 0A4.5 4.5 0 1 1 14 9.5 4.5 4.5 0 0 1 9.5 14Z"/></svg>
</button>
</form>
<button class="dc-menu-toggle" id="dcMenuToggle" aria-label="目录">
<span></span><span></span><span></span>
</button>
</div>
</header>
{block name="body"}{/block}
<script src="/static/docs/js/docs.js"></script>
{block name="js"}{/block}
</body>
</html>
+89
View File
@@ -0,0 +1,89 @@
{extend name="layout"}
{block name="title"}{$pageTitle}{/block}
{block name="keywords"}{$seoKeywords}{/block}
{block name="description"}{$seoDesc}{/block}
{block name="body"}
<div class="dc-layout">
<aside class="dc-sidebar" id="dcSidebar">
<div class="dc-sidebar-head">
<div class="dc-project-title">{$project.title}</div>
{if condition="count($versionList) gt 1"}
<select class="dc-version-select" id="dcVersionSelect">
{volist name="versionList" id="v"}
<option value="{$v.name}" data-default="{$v.is_default}" {if condition="$version.id eq $v.id"}selected{/if}>{$v.title}</option>
{/volist}
</select>
{/if}
</div>
<nav class="dc-tree">
{$treeHtml|raw}
</nav>
</aside>
<main class="dc-main">
<div class="dc-crumbs">
<a href="/docs">文档中心</a>
<span class="dc-crumb-sep">/</span>
<a href="/docs/{$project.name}">{$project.title}</a>
{volist name="crumbs" id="crumb"}
<span class="dc-crumb-sep">/</span>
{if condition="$crumb.id eq $activeId"}
<span class="dc-crumb-current">{$crumb.title}</span>
{else/}
<span>{$crumb.title}</span>
{/if}
{/volist}
</div>
<article class="dc-article">
<h1 class="dc-article-title">{$doc.title}</h1>
<div class="dc-article-meta">
<span>更新于 {$updateDate}</span>
<span class="dc-dot">·</span>
<span>阅读 {$doc.views}</span>
</div>
<div class="dc-content" id="dcContent">
{$content|raw}
</div>
</article>
<nav class="dc-pager">
{if condition="$prev"}
<a class="dc-pager-item dc-pager-prev" href="{$baseUrl}/{$prev.name}">
<span class="dc-pager-label">上一篇</span>
<span class="dc-pager-title">{$prev.title}</span>
</a>
{else/}
<span class="dc-pager-item is-disabled"></span>
{/if}
{if condition="$next"}
<a class="dc-pager-item dc-pager-next" href="{$baseUrl}/{$next.name}">
<span class="dc-pager-label">下一篇</span>
<span class="dc-pager-title">{$next.title}</span>
</a>
{else/}
<span class="dc-pager-item is-disabled"></span>
{/if}
</nav>
</main>
<aside class="dc-toc">
{if condition="!empty($toc)"}
<div class="dc-toc-title">本页目录</div>
<ul class="dc-toc-list" id="dcToc">
{volist name="toc" id="t"}
<li class="dc-toc-h{$t.level}"><a href="#{$t.anchor}" data-anchor="{$t.anchor}">{$t.text}</a></li>
{/volist}
</ul>
{/if}
</aside>
</div>
<div class="dc-mask" id="dcMask"></div>
{/block}
@@ -0,0 +1,18 @@
{extend name="layout"}
{block name="title"}文档未找到 - {$docsTitle}{/block}
{block name="body"}
<section class="dc-notfound">
<div class="dc-notfound-code">404</div>
<h1>{$message}</h1>
<p>该地址可能已变更或对应内容已下线</p>
<div class="dc-notfound-ops">
<a class="dc-btn dc-btn-primary" href="/docs">返回文档中心</a>
<a class="dc-btn" href="/">返回官网首页</a>
</div>
</section>
<footer class="dc-footer">
<p>© {$currentYear} {$docsTitle} · Powered by YwxApp</p>
</footer>
{/block}
@@ -0,0 +1,49 @@
{extend name="layout"}
{block name="title"}{$pageTitle} - {$docsTitle}{/block}
{block name="body"}
<section class="dc-search-page">
<form class="dc-search-form" action="/docs/search" method="get">
<input type="text" name="kw" value="{$keyword}" placeholder="输入关键词搜索文档..." autocomplete="off" autofocus>
<select name="project_id">
<option value="0">全部项目</option>
{volist name="projects" id="p"}
<option value="{$p.id}" {if condition="$projectId eq $p.id"}selected{/if}>{$p.title}</option>
{/volist}
</select>
<button type="submit">搜索</button>
</form>
{if condition="$keyword eq ''"}
<div class="dc-empty">
<p>请输入关键词开始搜索</p>
<p class="dc-empty-tip">支持搜索文档标题、关键词与正文内容</p>
</div>
{else/}
<div class="dc-search-summary">
找到 <b>{$total}</b> 条与「{$keyword}」相关的结果
</div>
{if condition="empty($list)"}
<div class="dc-empty">
<p>没有找到匹配的文档</p>
<p class="dc-empty-tip">试试更换关键词,或到后台点击「重建索引」</p>
</div>
{else/}
<ul class="dc-search-list">
{volist name="list" id="r"}
<li>
<a class="dc-search-title" href="/docs/{$r.project_name}/{$r.doc_name}">{$r.title}</a>
<div class="dc-search-path">{$r.project_title} / {$r.version_name}</div>
<p class="dc-search-snippet">{$r.snippet}</p>
</li>
{/volist}
</ul>
{/if}
{/if}
</section>
<footer class="dc-footer">
<p>© {$currentYear} {$docsTitle} · Powered by YwxApp</p>
</footer>
{/block}