Skip to content

Commit

Permalink
feat(hexo): layout for docs
Browse files Browse the repository at this point in the history
  • Loading branch information
ourai committed Apr 6, 2023
1 parent 70023e9 commit 9f1689b
Show file tree
Hide file tree
Showing 8 changed files with 108 additions and 5 deletions.
23 changes: 23 additions & 0 deletions src/hexo/_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ theme_config:
navbar:
placement: right
footer:
partial: _local/footer
links:
- text: OOSS
url: https://oss.ourai.ws/
Expand All @@ -151,6 +152,14 @@ ksio:
- javascripts/ksio/components/toc
post:
extends: page
ksio/doc:
values:
ksio_asset_css:
- stylesheets/ksio/vendors/share
ksio_asset_js:
- javascripts/ksio/vendors/share.min
- javascripts/ksio/components/page
- javascripts/ksio/components/toc
page:
- scope:
type: posts
Expand All @@ -163,6 +172,20 @@ ksio:
- javascripts/ksio/initializers/time
- javascripts/ksio/vendors/jquery.lazyload
- javascripts/ksio/initializers/lazyload
- scope:
type: knosys
values:
layout: ksio/doc
ksio_asset_css:
- stylesheets/ksio/pages/post
- stylesheets/ksio/pages/doc
ksio_asset_js:
- javascripts/ksio/vendors/jquery.timeago
- javascripts/ksio/vendors/jquery.timeago.zh-CN
- javascripts/ksio/initializers/time
- javascripts/ksio/vendors/jquery.lazyload
- javascripts/ksio/initializers/lazyload
repo: cookbook

# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
Expand Down
14 changes: 14 additions & 0 deletions src/hexo/source/_data/local/repos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
cookbook:
name: 食用手册
collection: guides
toc:
- text: 概述
collection: pages
slug: guides
- slug: getting-started
- text: API
collection: apis
items:
- site-config
- page-config
- html-reuse
25 changes: 25 additions & 0 deletions src/hexo/themes/lime/layout/_ksio/components/doc-toc.ejs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<ul>
<% let _inc_site_url = config.root || '/' %>
<% if (_inc_site_url.slice(-1) === '/') { %>
<% _inc_site_url = _inc_site_url.slice(0, -1) %>
<% } %>
<% items.forEach(_inc_item => { %>
<li>
<% const _inc_collection = _inc_item.collection || collection %>
<% const _inc_docs = (site.data[`knosys/${repo}/${_inc_collection}`] || {}).items %>
<% const _inc_url_parts = page.path.replace('/index.html', '').slice(1).split('/') %>
<% if (_inc_item.items) { %>
<span><%= _inc_item.text %></span>
<%- partial('_ksio/components/doc-toc', { repo, items: _inc_item.items, collection: _inc_collection }) %>
<% } else if (_inc_item.slug) { %>
<% if (_inc_collection === 'pages') { %>
<a<% if (_inc_item.slug === _inc_url_parts[1] && _inc_url_parts.length === 2) { %> class="is-selected"<% } %> href="<%= _inc_site_url %>/<%= _inc_item.slug %>/"><%= _inc_item.text %></a>
<% } else { %>
<a<% if (_inc_item.slug === _inc_url_parts.slice(-1)[0]) { %> class="is-selected"<% } %> href="<%= _inc_site_url %>/<%= _inc_collection %>/<%= _inc_item.slug %>/"><%= _inc_docs[_inc_item.slug].title %></a>
<% } %>
<% } else { %>
<a<% if (_inc_item === _inc_url_parts.slice(-1)[0]) { %> class="is-selected"<% } %> href="<%= _inc_site_url %>/<%= _inc_collection %>/<%= _inc_item %>/"><%= _inc_docs[_inc_item].title %></a>
<% } %>
</li>
<% }) %>
</ul>
21 changes: 21 additions & 0 deletions src/hexo/themes/lime/layout/_ksio/layouts/doc.ejs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<%- partial(theme.header && theme.header.partial || '_ksio/partials/header') %>
<div class="Page-content">
<% const repo = site.data['local/repos'][page.repo] %>
<% if (repo && repo.toc) { %>
<aside class="Page-aside">
<div class="AsideBrand"><%- partial('_ksio/components/brand-link', { className: '' }) %></div>
<nav class="AsideNav"><%- partial('_ksio/components/doc-toc', { repo: page.repo, items: repo.toc, collection: repo.collection }) %></nav>
</aside>
<% } %>
<main class="Page-main">
<article class="Article container-fluid">
<header class="Article-header">
<%- partial('_ksio/slots/header') %>
</header>
<div class="Article-content col-md-9"><%- page.content %></div>
<footer class="Article-footer col-md-3"><%- partial('_ksio/slots/footer') %></footer>
</article>
<%- partial(theme.footer && theme.footer.partial || '_ksio/partials/footer') %>
</main>
</div>
<script>$('table').addClass('table table-bordered')</script>
5 changes: 3 additions & 2 deletions src/hexo/themes/lime/layout/_ksio/layouts/hack.ejs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<% if (page.layout && page.layout.split('/')[0] === 'ksio') { %>
<%- partial(`_ksio/layouts/${page.layout.split('/').slice(1).join('/')}`) %>
<% const layoutParts = (page.layout || '').split('/') %>
<% if (layoutParts.length > 1) { %>
<%- partial(layoutParts[0] === 'ksio' ? `_ksio/layouts/${layoutParts.slice(1).join('/')}` : layoutParts.join('/')) %>
<% } else { %>
<%- partial('_ksio/layouts/page') %>
<% } %>
4 changes: 2 additions & 2 deletions src/hexo/themes/lime/layout/_ksio/partials/footer.ejs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<footer class="Page-footer Footer">
<div class="<% if (site.data.local && site.data.local.repos && site.data.local.repos[page.repo]) { %>container-fluid<% } else { %>container<% } %>">
<% let utm_params = `utm_source=${theme.meta.url}&utm_medium=common-footer` %>
<div class="<% if (site.data['local/repos'] && site.data['local/repos'][page.repo]) { %>container-fluid<% } else { %>container<% } %>">
<% const utm_params = `utm_source=${theme.meta.url}&utm_medium=common-footer` %>
<div class="Footer-description">
<% if (theme.footer && (theme.footer.links || []).length > 0) { %>
<!-- Important links -->
Expand Down
2 changes: 1 addition & 1 deletion src/hexo/themes/lime/layout/_ksio/partials/header.ejs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<header class="Page-header">
<div class="navbar navbar-static-top">
<div class="<% if (site.data.local && site.data.local.repos && site.data.local.repos[page.repo]) { %>container-fluid<% } else { %>container<% } %>">
<div class="<% if (site.data['local/repos'] && site.data['local/repos'][page.repo]) { %>container-fluid<% } else { %>container<% } %>">
<div class="navbar-header">
<% if (theme.header && (theme.header.navs || []).length > 0) { %>
<button class="navbar-toggle collapsed" type="button" data-target=".Page-navs" data-toggle="collapse">
Expand Down
19 changes: 19 additions & 0 deletions src/hexo/themes/lime/layout/_local/footer.ejs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<footer class="Page-footer Footer">
<div class="<% if (site.data['local/repos'] && site.data['local/repos'][page.repo]) { %>container-fluid<% } else { %>container<% } %>">
<% const utm_params = `utm_source=${theme.meta.url}&utm_medium=common-footer` %>
<div class="Footer-description">
<% if (theme.footer && (theme.footer.links || []).length > 0) { %>
<nav class="Footer-navs">
<ul><% theme.footer.links.forEach(link => { %><li><%- partial('_ksio/components/link', { link, utm: utm_params, wrap: true }) %></li><% }) %></ul>
</nav>
<% } %>
<div class="Footer-copyright">
<p><%- partial('_ksio/components/copyright', { utm: utm_params }) %></p>
<p>由 <a href="https://linxoid.com/ourai/?<%= utm_params %>" target="_blank" rel="external ">欧雷</a> 用 ♥ 设计与开发</p>
</div>
<div class="Footer-licenses">
<p>本站通过 <a href="https://knosysio.github.io/?<%= utm_params %>" target="_blank" rel="external ">KnoSys</a> 借助 <a href="https://hexo.io/" target="_blank" rel="external ">Hexo</a> 生成</p>
</div>
</div>
</div>
</footer>

0 comments on commit 9f1689b

Please sign in to comment.