テーマ
このページの内容
ããŒã
ããŒãã¯ãã€ãã£ãã® BoxLang .bxm ãã³ãã¬ãŒãã§ããå°çšã®ãã³ãã¬ãŒããšã³ãžã³ã
ãã«ãã¹ãããã¯äžèŠã§ãã
çµã¿èŸŒã¿
| ããŒã | ããŒã¹ | åè |
|---|---|---|
bootstrapïŒããã©ã«ãïŒ | Bootstrap 5ïŒãã³ãã«åæ¢±ïŒ | Poppins ãã©ã³ãããã©ã³ãã°ã©ããŒã·ã§ã³ navbar |
material | æäœãã® Material ã¹ã¿ã€ã« CSS | ã«ãŒãã¬ã€ã¢ãŠãããšã¬ããŒã·ã§ã³ã·ã£ããŠãRoboto ãã©ã³ã |
tailwind | Tailwind Play CDN | ãŠãŒãã£ãªãã£ã¯ã©ã¹é§åããã«ãã¹ãããäžèŠ |
docsy | æäœãã® CSSïŒmaterial ãããã©ãŒã¯ïŒ | Read the Docs/Docsy ã«ã€ã³ã¹ãã€ã¢ãããããã€ããŒãã«ãŒã®ãªãã¡ã¬ã³ã¹ããã¥ã¢ã«èª¿ |
slate | æäœãã® CSSïŒmaterial ãããã©ãŒã¯ïŒ | Stripe/Slate ã«ã€ã³ã¹ãã€ã¢ããã - ã©ã€ã/ããŒã¯ã¢ãŒãã«é¢ãããåžžã«ããŒã¯ãªãµã€ãã㌠|
docusaurus | æäœãã® CSSïŒmaterial ãããã©ãŒã¯ïŒ | Docusaurus ã«ã€ã³ã¹ãã€ã¢ãããã倧èãªå šå¹ ã«ã©ãŒ navbar ãšè§äžžã«ãŒã |
justthedocs | æäœãã® CSSïŒmaterial ãããã©ãŒã¯ïŒ | Just the Docs ã«ã€ã³ã¹ãã€ã¢ãããããããªãºã - æ€çŽ¢ããã¯ã¹ããµã€ãããŒäžéšã«ãããŸã |
vuepress | æäœãã® CSSïŒmaterial ãããã©ãŒã¯ïŒ | VuePress ã«ã€ã³ã¹ãã€ã¢ãããã°ãªãŒã³ã¢ã¯ã»ã³ããæãããè§äžž |
gitbook | æäœãã® CSSïŒmaterial ãããã©ãŒã¯ïŒ | GitBook ã«ã€ã³ã¹ãã€ã¢ãããäžå€®å¯ãã®èªã¿ç©åãã«ã©ã ãã»ãªãäœã®èŠåºã |
notion | æäœãã® CSSïŒmaterial ãããã©ãŒã¯ïŒ | Notion ã«ã€ã³ã¹ãã€ã¢ãããããŒããŒã¬ã¹ãªãµã€ãããŒãã»ãŒã°ã¬ãŒã¹ã±ãŒã«ã® UIãããšãã®ããäœçœ |
äžèšã® material ãããã©ãŒã¯ããã 7 ã€ã®ããŒãã¯ãmaterial ãšå
šãåã BoxLang
ãã³ãã¬ãŒãïŒlayout.bxm/page.bxm/search.bxmïŒããã¹ã³ãŒãä»ã CSS ã¯ã©ã¹ãã¬ãã£ãã¯ã¹ã®
ãªããŒã ãé€ããŠç¡å€æŽã®ãŸãŸåå©çšããŠããŸã - ç°ãªãã®ã¯ assets/style.css ã ãã§ã
ïŒjustthedocs ã«ã€ããŠã¯ãæ€çŽ¢ããã¯ã¹ããµã€ãããŒã«ç§»åãã <bx:include> è¡ã
1 ã€åé
眮ãããŠããç¹ãç°ãªããŸãïŒããã®ãããããã㯠material ããã§ã«æã€ã®ãš
åãå®å
šãªæ©èœã»ãããšãåããšã¢ã®ã£ãã察å¿ã®æåãåãç¶ããŸãã
åçµã¿èŸŒã¿ããŒãèªèº«ã® CSS/JSïŒBootstrap ã® CSS/JS ãã³ãã«ãhighlight.jsãAlpine.jsã
ããã©ã«ãã® local æ€çŽ¢ãããã€ããŒçšã® lunr.jsãããã³ mermaid ãæå¹ã«ããå Žåã®
MermaidïŒã¯ããã®ã¢ãžã¥ãŒã«ã«å梱ïŒãã³ãã«ïŒãããç¶æ
ã§åºè·ããããã«ãããã site/
ã«ãã®ãŸãŸã³ããŒãããŸã - ãã«ãæžã¿ãµã€ãã®é²èŠ§ã« CDN ãã€ã³ã¿ãŒãããã¢ã¯ã»ã¹ã
äžåäžèŠã§ããtailwind ããŒãèªèº«ã®ãŠãŒãã£ãªãã£ãšã³ãžã³ïŒéçãªã¹ã¿ã€ã«ã·ãŒãã§ã¯
ãªããã¯ã©ã€ã¢ã³ããµã€ãã® JIT ã³ã³ãã€ã©ïŒãšãèªåã§æå¹ã«ãããã®ä»ã®ãªãã·ã§ã³æ©èœ
ïŒmathãAlgolia æ€çŽ¢ãGoogle AnalyticsïŒã¯ãäŸç¶ãšã㊠CDN ããã¹ãå API ããèªã¿èŸŒ
ãŸããŸã - 詳现ã¯äžèšã®
ãšã¢ã®ã£ãã/ãªãã©ã€ã³ãµã€ã ãåç
§ããŠãã ããã
bootstrapãmaterialãtailwind ã¯åã BoxLang ãã©ã³ããã¬ããïŒ#00FF78 â #00DBFF
ã°ã©ããŒã·ã§ã³ãš #FFF500 ã¢ã¯ã»ã³ãïŒãé©çšããŸãããã®äžã«ãã 7 ã€ã®ã®ã£ã©ãªãŒããŒãã¯
ãããããåèã«ãããã©ãããã©ãŒã ã®èŠãç®ã«çæ³ãåŸãç¬èªã®ç°ãªããã¬ããã䜿çšããŸã -
詳ããã¯äžã®è¡šãåç
§ããŠãã ããããã¬ããã«é¢ãããã10 åãã¹ãŠãåãããŒãžæ©èœäžåŒã
æèŒããŠããŸã:
- ããŒãžå
ããã®ããŒãžã®å
容ãç®æ¬¡ - åããŒãžã®
h2/h3èŠåºãããçæãããŸãã - ãã³ãããªã¹ã - ãªã³ã¯ãããç¥å ã®1ã€ä»¥äžæ·±ããã¹ããããããŒãžã§ããã®ç¥å ãã§ãŒã³ã衚瀺ããŸãã
- å/次ããŒãžãªã³ã¯ - èšäºã®äžéšã«ãããã²ãŒã·ã§ã³ã®èªã¿åãé ã«åŸã£ãŠè¡šç€ºãããŸãã
- æ§æãã€ã©ã€ããããã³ãŒãããã㯠- highlight.js ãš
ç¬èªã® BoxLang ã°ã©ããŒïŒ
```bx/```boxlang/```cfscriptïŒã«ããæ§æãã€ã©ã€ãã ããããã«ã³ããŒãã¿ã³ä»ã - 察å¿ããã€ã¹ã§ã¯ãããŒæã«è¡šç€ºãããã¿ããããã€ã¹ã§ã¯ ïŒãããŒã§è¡šç€ºãããšããæŠå¿µããªãããïŒåžžã«è¡šç€ºãããŸãã Markdown æ¡åŒµæ©èœ ãåç §ããŠãã ããã - èªå·±ãã¹ãå Web ãã©ã³ã - 衚瀺æã«
fonts.googleapis.comãžã®ãªã¯ãšã¹ããªãã - ããŒã¯/ã©ã€ãã¢ãŒãåæ¿ - ãªã¢ã¯ãã£ããã£ã« Alpine.js ã䜿çšã
蚪åè
ã®éžæã¯
localStorageã«èšæ¶ããïŒæªéžææã¯ OS ã®èšå®ã«ãã©ãŒã«ããã¯ïŒã 誀ã£ãããŒããã¡ãã€ãã®ãé²ãããååæç»åã«é©çšãããŸãã - ã¬ã¹ãã³ã·ãããã㌠- ããããå¹
ã§åžžã«1è¡ã«åãŸããŸã - çããã¥ãŒããŒãã§ã¯
æ€çŽ¢ããã¯ã¹ãèªèº«ã®è¡ã«æãè¿ãã®ã§ã¯ãªãçž®å°ããŸã - ããã«æãããã¿å¯èœãª
ãµã€ãããŒããïŒ
bootstrap/material/tailwindãããããã³ããŒã¬ãŒãã°ã«ïŒä»ãã - æ€çŽ¢ããã¯ã¹ã®ããŒããŒãã·ã§ãŒãã«ãã -
/ã§ããŒãžã®ã©ãããã§ãæ€çŽ¢ã«ãã©ãŒã«ã¹ããEscapeã§çµæãéããŸããæ€çŽ¢ ãåç §ããŠãã ããã - ãªããžããªãªã³ã¯ãšããã®ããŒãžãç·šéã/ãæçµæŽæ°ãè¡ -
bxsites.yamlã®repo/lastUpdatedãªãã·ã§ã³ãèšå®ãããŠããå Žåãèšå® ãåç §ããŠãã ããã - ãMarkdown ãããŠã³ããŒãããªã³ã¯ - ããã®ããŒãžãç·šéãã®é£ã«è¡šç€ºãããŸã -
åããŒãžã®çã®
.mdãœãŒã¹ã¯ããã«ãããã HTML ãšäžç·ã«å ¬éããããã ïŒguides/themes.mdã¯guides/themes/index.htmlã®é£ã«çœ®ãããŸãïŒã人éïŒã LLMïŒã¯ ã¬ã³ããªã³ã°æžã¿ã® HTML ãè§£æãã代ããã«ããã¬ãŒã³ãª Markdown ãšããŠããŒãžã çŽæ¥èªããŸããèšå®äžèŠã§åžžã«æå¹ã§ãã ã¯ããã« ãåç §ããŠãã ããã - ãªããã€ã³ã®ããã¿ãŒïŒèäœæš©ã
socialãªã³ã¯ããBuilt with BxSitesãã¯ã¬ãžããïŒ-bxsites.yamlã®footerãtrueã®å Žåãèšå® ãåç §ããŠãã ããã - ããŒãžã§ã³ã¹ã€ããã£ãŒ - ãããžã§ã¯ããè€æ°ããŒãžã§ã³ãå«ã
docs/versions/ãã©ã«ãã æã€ãšèªåçã«è¡šç€ºãããŸããèšå® ãåç §ããŠãã ããã - ããŒãåããã
404.html- ã»ãšãã©ã®éçãã¹ãïŒGitHub Pages ãå«ãïŒã§ã äžèŽããªããã¹ã«å¯ŸããŠèªåçã«æäŸãããŸããdocs/ïŒãŸãã¯src/ïŒã®çŽäžã«404.mdã眮ããšãã¿ã€ãã«ã𿬿ãç¬èªã®å 容ã§äžæžãã§ããŸã - éåžžã®ããŒãž ãšããŠã¯ãã«ããããïŒããé ç®ãsitemap.xmlã® URL ãçæãããŸããïŒã 代ããã«site/404.htmlãšããŠã¬ã³ããªã³ã°ãããŸãã - ã«ã¹ã¿ã ããŽãšãã¡ãã³ã³ -
bxsites.yamlã®theme.logo/theme.faviconã èšå®ãããŠããå Žåãèšå® ãåç §ããŠãã ããã - æãããã¿å¯èœãªãµã€ãããŒãã -
theme.options.navCollapsibleã§ãªããã€ã³ - åèŠçŽ ãæã€ãã¹ãŠã®ã»ã¯ã·ã§ã³ïŒãªã³ã¯ä»ã/ãªããåããïŒããåžžã«ã€ã³ã©ã€ã³ã§ åèŠçŽ ã衚瀺ãã代ããã«ãã°ã«ãã¿ã³ãæã€ããã«ãªããçŸåšã®ããŒãžãå«ãã»ã¯ã·ã§ã³ã¯ åžžã«éããç¶æ ã§å§ãŸããŸããèšå® ãåç §ããŠãã ããã - Google Analytics -
bxsites.yamlã®analyticsãèšå®ãããŠããå Žåã èšå® ãåç §ããŠãã ããã - ãœãŒã·ã£ã«ã·ã§ã¢ã«ãŒãïŒOpen Graph + Twitter Card ã¡ã¿ã¿ã°ïŒ- åããŒãžã®
descriptionããã³ããã¿ãŒïŒãŸãã¯ãµã€ãå šäœã®descriptionïŒãšãããèªèº«ã®ogImageïŒãŸãã¯ãµã€ãå šäœã®ãã®ïŒããçæãããŸã -bxsites.yamlã®generateOgImagesã§ããŒãžããšã«èªåçæããããšãä»»æã§éžã¹ãŸãã èšå® ãåç §ããŠãã ããã - ããŒãžã¿ã°ãã¢ã€ã³ã³ããµããªè¡ - ãã¹ãŠããŒãžèªèº«ã®ããã³ããã¿ãŒã§ãªããã€ã³ããŸã -
ã¿ã°ã¯ãµã€ãå
šäœã®
/tags/ã€ã³ããã¯ã¹ã«ãªã³ã¯ãããããžãšããŠã¬ã³ããªã³ã°ãããŸãã ã¯ããã« ãåç §ããŠãã ããã - æç€ºç㪠nav ãªãŒããŒã©ã€ã -
bxsites.yamlãŸãã¯ç¬èªã®docs/nav.jsonã§ã å€§èŠæš¡ãµã€ãåãã«ãã©ã«ãæšå®ã眮ãæããŸããèšå® ãåç §ããŠãã ããã - 远å ã® CSS/JS -
bxsites.yamlã®extraCss/extraJsã§æ³šå ¥ãããŸãã èšå® ãåç §ããŠãã ããã - AdmonitionïŒnote/warning/tip/...ïŒã³ãŒã«ã¢ãŠãããã¯ã¹ - ã©ã®ããŒãžã® Markdown ã§ã ããã©ã«ãã§æå¹ã§ãæãããã¿å¯èœãªããªã¢ã³ããå«ã¿ãŸã - èšå®äžèŠã§ãã Markdown æ¡åŒµæ©èœ ãåç §ããŠãã ããã
- èæ³šãšå®çŸ©ãªã¹ã -
bxsites.yamlã®markdownã§ãªããã€ã³ããŸãã Markdown æ¡åŒµæ©èœ ãåç §ããŠãã ããã - ã³ã³ãã³ãã¿ããã³ãŒãã®è¡çªå·/ãã€ã©ã€ãè¡/ã¿ã€ãã«ãã³ãŒããããã¯çšã® å·®åããŒã«ãŒ/ã¿ãŒããã«é¢šãã¬ãŒã - èšå®äžèŠã§ãã Markdown æ¡åŒµæ©èœ ãåç §ããŠãã ããã
- ã¬ã¹ãã³ã·ãç»å - 察象ãšãªããã¹ãŠã®
docs/assets/**ç»åã«å¯Ÿããããªãµã€ãºæžã¿ + WebP ããªã¢ã³ããš<picture>ãžã®æžãæã - ããã©ã«ãã§æå¹ã§ãã ã¬ã¹ãã³ã·ãç»å ãåç §ããŠãã ããã - Mermaid ãã€ã¢ã°ã©ã -
bxsites.yamlã®mermaidã§ãªããã€ã³ããŸãã Markdown æ¡åŒµæ©èœ ãåç §ããŠãã ããã - æ°åŒïŒKaTeXïŒ -
bxsites.yamlã®mathã§ãªããã€ã³ããŸãã Markdown æ¡åŒµæ©èœ ãåç §ããŠãã ããã
ãããžã§ã¯ãã䜿çšããããŒã㯠bxsites.yaml ã§èšå®ããŸã:
theme: { name: material }
{ "theme": { "name": "material" } }
å ¬éæžã¿ããŒãã®ã€ã³ã¹ããŒã«
ForgeBox ã«å
¬éãããããŒãã¯ãbxSites ãã€ããªèªäœã ãã§ã€ã³ã¹ããŒã«ã§ããŸã -
box/CommandBox ã¯äžèŠã§ãããã§ã«å
¬éãããŠããããã±ãŒãžã¯ãForgeBox ã®
bxsites-themes ã«ããŽãªãŒãã
æ¢ããŸã:
bxSites install:theme --name=bx-sites-theme-blog1 [--version=1.0.0]
ããã¯ããã±ãŒãžã® zip ãããŠã³ããŒããããããžã§ã¯ãã«ãŒãã®
themes/bx-sites-theme-blog1/ ã«å±éããå®äºããåã«äžèšã® ThemeProvider å¥çŽã
æºãããŠããããšãæ€èšŒããŸãããã®æ¹æ³ã§ããããžã§ã¯ãã¯è€æ°ã®ã€ã³ã¹ããŒã«æžã¿
ããŒãã䞊è¡ããŠä¿æããçŽç²ã«ååã ãã§åãæ¿ããããšãã§ããŸã:
theme: { name: bx-sites-theme-blog1 }
{ "theme": { "name": "bx-sites-theme-blog1" } }
ããŒãã¯ïŒãã©ã°ã€ã³ãšã¯ç°ãªãïŒBoxLang ã¢ãžã¥ãŒã«/ã¯ã©ã¹ããŒããŒã®é¢äžãäžåå¿
èŠãš
ããŸãã - åãªããã¡ã€ã«çŸ€ã§ãããããinstall:plugin ã«ãããããªå¥éã®æå¹å
ã¹ãããã¯ãªããtheme.name ãèšå®ããã ãã§é
ç·ãå®äºããŸããCLI ãªãã¡ã¬ã³ã¹ã®
install:theme ãåç
§ããŠãã ããã
代ããã«ä»ã®éçãµã€ããžã§ãã¬ãŒã¿ãŒåãã«äœãããããŒãããå§ãããã§ããïŒ
ããŒãã®ã€ã³ããŒã ãåç
§ããŠãã ãã - theme:import ã¯
mkdocs/jekyll/hugo ããŒãèªèº«ã®ãã³ãã¬ãŒããã¡ã€ã«ãããã¹ããšãã©ãŒãã§
themes/<name>/ ã¹ãã£ãã©ãŒã«ããžã𿩿¢°çã«å€æããŸãã
ãšã¢ã®ã£ãã/ãªãã©ã€ã³ãµã€ã
ãã«ãããããµã€ãã¯ãbootstrapãmaterialããã㊠material ãããã©ãŒã¯ããã
7 ã€ã®ããŒãïŒdocsyãslateãdocusaurusãjustthedocsãvuepressãgitbookã
notionïŒãããã©ã«ãã® local æ€çŽ¢ãããã€ããŒãšçµã¿åãããå Žåãããã©ã«ãã§
ã€ã³ã¿ãŒãããã¢ã¯ã»ã¹ãäžåãªããŠãåäœããŸããBootstrap èªèº«ã® CSS/JSã
highlight.jsãAlpine.jsãlunr.js ã¯ãã¹ãŠãã®ã¢ãžã¥ãŒã«ã«å梱ãããŠãã
ïŒresources/assets/vendor/ïŒããã«ãæã« site/assets/vendor/ ãžãã®ãŸãŸã³ããŒ
ãããŸã - ãããã®ã©ãã«ã€ããŠããçæããã HTML ã®ã©ãã«ã CDN ã®
<script>/<link> ã¿ã°ã¯äžåå«ãŸããŸãããbxsites.yaml ã® mermaid ããŒã
æå¹ã«ãããšãMermaid ãåæ§ã«å梱ãããmermaid.min.js ãã³ãã«ã
site/assets/vendor/mermaid/ ã«ã³ããŒãããŠãçµã¿èŸŒã¿ã®ãã¹ãŠã®ããŒãããããã
èªã¿èŸŒããããå³è¡šãå€éšãžã®éä¿¡ãªãã§æç»ãããŸãã
ãã ããèªåã§æå¹ã«ããå Žåã«éããããã€ãã®æ©èœã¯ãŸã ãããã¯ãŒã¯ã« ã¢ã¯ã»ã¹ããŸã:
tailwindããŒãèªèº«ã®ãŠãŒãã£ãªãã£ãšã³ãžã³ã¯ãcdn.tailwindcss.comãã èªã¿èŸŒãŸããã¯ã©ã€ã¢ã³ããµã€ãã® JIT ã³ã³ãã€ã©ã§ã - éçãªã¹ã¿ã€ã«ã·ãŒãã§ã¯ ãªãããããã®ã¢ãžã¥ãŒã«ãåæ§ã®æ¹æ³ã§å梱ããããšãã§ããããã®ããŒã㯠ä»ã®ãšãããšã¢ã®ã£ããç°å¢ã«ã¯å¯Ÿå¿ããŠããŸããã- Mermaid èªèº«ã®ã¬ã€ã¢ãŠããšã³ãžã³ã¯ã远å ã®ãã£ã³ã¯ã§ãã
elk-api.jsã jsDelivr ããé å»¶èªã¿èŸŒã¿ããŸãããããã¯elkã¬ã€ã¢ãŠãã¢ã«ãŽãªãºã ã 䜿çšãããã€ã¢ã°ã©ã ã¿ã€ãã«éãããŸãã忢±ãããmermaid.min.jsã¯ã ãã以å€ã®ãã¹ãŠã®ãã€ã¢ã°ã©ã ã¿ã€ããå®å šã«åç¬ã§ã¬ã³ããªã³ã°ããŸãã bxsites.yamlã®mathãªãã·ã§ã³ãæå¹ã«ãããšãKaTeXïŒJS æ¬äœãšãã®ç¬èª ãã©ã³ããã¡ã€ã«ã®äž¡æ¹ïŒã CDN ããèªã¿èŸŒã¿ãŸããsearchProvider.provider: "algolia"ãšanalytics.provider: "google"ã¯ã ãã®æ§è³ªäžãã¹ãåã® APIïŒãã©ããã³ã°ãšã³ããã€ã³ããšéä¿¡ããŸã - JS ãã¡ã€ã«ã忢±ããŠãããã®äŸåé¢ä¿ã¯ãªããªããŸããã
ãããã€å
ãæ¬åœã«äžåã€ã³ã¿ãŒãããã«ã¢ã¯ã»ã¹ã§ããªãç°å¢ã§ããå Žåã¯ã
bootstrap/materialããŸã㯠material ãããã©ãŒã¯ããã 7 ã€ã®ããŒãã®ãããããã
ããã©ã«ãã® local æ€çŽ¢ãããã€ããŒãšãšãã«äœ¿ããmermaid ãæå¹ã«ããŠããå Žåã¯
elk ã¬ã€ã¢ãŠãã® Mermaid ãã€ã¢ã°ã©ã ãé¿ããmath/Algolia/analytics ã¯ãªãã®
ãŸãŸã«ããŠãã ããã
ããŒãžèªèº«ã® icon ããã³ããã¿ãŒïŒãŸã㯠nav.json ãšã³ããªèªèº«ã® iconïŒãã
çµµæåã8 ã€ã®å梱ã©ã€ãã©ãªã®ããããããã®ååä»ãã¢ã€ã³ã³ããŸãã¯ãããžã§ã¯ã
ç¬èªã®ã«ã¹ã¿ã SVG ã«ã©ã®ããã«è§£æ±ºããããã«ã€ããŠã¯ãã¢ã€ã³ã³ ã
åç
§ããŠãã ããã
ThemeProvider ã³ã³ãã©ã¯ã
ããŒãã¯åãªã以äžãå«ããã©ã«ãã§ã:
layout.bxmïŒå¿ é ïŒ - å€åŽã® HTML ã·ã§ã« + ããã²ãŒã·ã§ã³ãã¹ã³ãŒãå ã«variables.pageãvariables.navãvariables.siteConfigãvariables.themeDirãvariables.basePathãåãåãã#variables.themeDir#/page.bxmçµç±ã§å åŒã®page.bxmãã€ã³ã¯ã«ãŒãããŸããvariables.basePathã¯åžžã«/ã§çµãã ã«ãŒãçžå¯Ÿãã¹ã§ãïŒããã©ã«ãã¯/ãbxsites.yamlã®baseURLãäžæžãããŠãã å Žåã¯/my-docs/ãªã©ïŒ- å é ã«/ãããŒãã³ãŒãããã®ã§ã¯ãªãããã¹ãŠã®å éšhref/srcã«ããããã¬ãã£ãã¯ã¹ããŠãã ãããããããããšã§ããµã€ãããµããã¹ ããé ä¿¡ãããŠãããŒãã¯åäœãç¶ããŸããpage.bxmïŒå¿ é ïŒ - èšäºæ¬æããã§ã«å€ææžã¿ã® Markdown ã§ããvariables.page.contentHtmlãã¬ã³ããªã³ã°ããŸããsearch.bxmïŒçç¥å¯ïŒ - æ€çŽ¢ããã¯ã¹ã®ããŒã¯ã¢ãããbxsites.yamlã®searchãtrueã®å Žåã®ã¿layout.bxmã«ã€ã³ã¯ã«ãŒããããŸããæ€çŽ¢ ã åç §ããŠãã ãããassets/ïŒçç¥å¯ïŒ - ããŒãã® CSS/JSããã«ãæã«site/assets/theme/ã« ã³ããŒãããŸãã
variables.page.editUrl/.lastUpdatedïŒæªèšå®æã¯ç©ºæååïŒãš
variables.siteConfig.repo/.social/.footer ãåžžã«å©çšå¯èœã§ãäžèšã®ãªããžããª
ãªã³ã¯/ç·šéãªã³ã¯/æçµæŽæ°/ããã¿ãŒæ©èœãæ¯ããŠããŸã - ã«ã¹ã¿ã ããŒãã¯ãä»ã®
ãã¹ãŠãšåæ§ã«ãããããã¬ã³ããªã³ã°ãããã©ãããã©ã®ããã«ã¬ã³ããªã³ã°ãããã
èªåã§æ±ºããŸããvariables.versionsïŒ[ { label, url } ]ããLatestããå
é ïŒãš
variables.currentVersionïŒçŸåšã¬ã³ããªã³ã°äžã® labelïŒã¯ããŒãžã§ã³ã¹ã€ããã£ãŒã
æ¯ããŸã - ããŒãžã§ã³ç®¡çãããŠããªããããžã§ã¯ãã§ã¯ç©º/"Latest" ã«ãªãããã
ããŒã㯠variables.versions.len() gt 1 ã®ãšãã ãã¹ã€ããã£ãŒãã¬ã³ããªã³ã°ããã°
æžã¿ãŸãããã¹ãŠã®çµã¿èŸŒã¿ããŒãã¯ãå°ããªå
±æ SVG ã«ãã¯ã¢ãã
<bx:include template="#variables.moduleAssetsDir#/icons.bxm">ïŒbxsitesIcon( name )
ãå®çŸ©ããgithubãtwitter/xãrssãyoutubeãlinkedinãfacebookã
blueskyãthreadsãslackãpatreonãemailãeditãclock ã®ããããã
ãã以å€ã¯æ±çšã®ãªã³ã¯ã°ãªãã«ãã©ãŒã«ããã¯ïŒãããªããžããª/ãœãŒã·ã£ã«ã¢ã€ã³ã³ã
ååŸããŸã - ã«ã¹ã¿ã ããŒããåãæ¹æ³ã§ãããã€ã³ã¯ã«ãŒãããããå®å
šã«ç¬èªã®
ã¢ã€ã³ã³ãæäŸã§ããŸãã
å¿
é ãã¡ã€ã«ã®ãããããæ¬ ããŠããããŒããã©ã«ãã¯ãã¬ã³ããªã³ã°ã®å¥¥æ·±ãã§åããã«ãã
ãã³ãã¬ãŒããšã©ãŒã«ãªãã®ã§ã¯ãªãããã«ãæã«æç¢ºãª BxSites.InvalidTheme ãšã©ãŒã§
å³åº§ã«å€±æããŸãã
ããŒããªãŒããŒã©ã€ããªãã®è²ã®ã«ã¹ã¿ãã€ãº
è²ããã©ã³ãã®åŸ®èª¿æŽã®ããã«ããŒãå
šäœããã©ãŒã¯ããã®ã¯éå°ã§ã - åçµã¿èŸŒã¿ããŒãã¯ã
:root äžã®å°æ°ã® CSS ã«ã¹ã¿ã ããããã£ãããã¬ãããèªã¿èŸŒã¿ãããŒã¯ã¢ãŒãçšã«
[data-theme="dark"] ã®äžã§å宣èšããŠããŸããbxsites.yaml ã®
extraCss ã¯ããŒãèªèº«ã®ã¹ã¿ã€ã«ã·ãŒãã®
åŸã« èªã¿èŸŒãŸãããããããã§åã詳现床ã§å宣èšããã°ãresources/themes/ ã«
äžåè§Šããããšãªãåªå
ãããŸã:
extraCss: [ assets/brand.css ]
{ "extraCss": ["assets/brand.css"] }
/* docs/assets/brand.css - ãã«ãæã« site/assets/brand.css ã«ã³ããŒãããŸã */
:root {
--bxsites-gradient-start: #7C3AED;
--bxsites-gradient-end: #DB2777;
--bxsites-accent: #FBBF24;
--bxsites-link: #7C3AED;
--bxsites-link-hover: #9F5AF0;
}
[data-theme="dark"] {
--bxsites-link: #C4B5FD;
--bxsites-link-hover: #DDD6FE;
}
bootstrap ããŒãèªèº«ã®ã»ããïŒresources/themes/bootstrap/assets/style.cssïŒã¯
--bxsites-gradient-start/-endã--bxsites-accentã--bxsites-bgã
--bxsites-textã--bxsites-sidebar-bgã--bxsites-sidebar-textã
--bxsites-borderã--bxsites-linkã--bxsites-link-hoverã--bxsites-code-bgã
--bxsites-step-marker-bgã--bxsites-step-marker-textã--bxsites-step-lineã
--bxsites-step-success-bg/-textã--bxsites-step-warning-bg/-textã
--bxsites-step-danger-bg/-text ã§ãããã¹ãŠã®çµã¿èŸŒã¿ããŒãã¯
--bxsites-gradient-start/-endã--bxsites-accentããã㊠--bxsites-step-*
ã»ããããããã®æ£ç¢ºãªååã§ä¿èšŒããŠãããããextraCss ã¯ããŒãã«é¢ãããåžžã«
ãã©ã³ãã«ã©ãŒ/ã¹ããããŒã¢ã¯ã»ã³ããåã¿ãŒã²ããã§ããŸã - ãã ã
--bxsites-bg/-text/-sidebar-bg/-sidebar-text/-border/-link/-link-hover/-code-bg
ããããã®ååã§å
¬éããŠããã®ã¯ bootstrapãslateãnotion ã ãã§ã
ïŒjustthedocs 㯠2 ã€ã® -sidebar-* 系以å€ãã¹ãŠãåãæ¹æ³ã§ãšã€ãªã¢ã¹ããŸãïŒã
ãã以å€ã®çµã¿èŸŒã¿ããŒãïŒmaterialãtailwindãdocsyãdocusaurusã
vuepressãgitbookïŒã¯ããã®2çªç®ã®ã°ã«ãŒãã«ç¬èªã®å
éšã«ã¹ã¿ã ããããã£åã
䜿çšããŸãïŒäŸãã° material èªèº«ã® assets/style.css ã¯
--md-bg/--md-ink/--md-link/... ã䜿çšããŸãïŒ- extraCss çµç±ã§ãããã®1ã€ã
äžæžãããåã«ããã®ããŒãèªèº«ã® assets/style.css ãéããŠå®éã®ååã確èªããŠ
ãã ãããè²/ãã©ã³ã以å€ã®ãã®ïŒã¬ã€ã¢ãŠããã¯ããŒã ã®è¿œå /åé€ïŒã«ã¯ãæ¬ç©ã®
ãªãŒããŒã©ã€ããã«ã¹ã¿ã ããŒããå¿
èŠã§ã - äžèšãåç
§ããŠãã ããã
æ®ã㯠::: stepper/::: step ãã£ã¬ã¯ãã£ã
ãããã¯ãæ¯ããŠããŸã - --bxsites-step-marker-bg/-text ã¯ããã©ã«ãã®çªå·ä»ã
åã®ããã¯ã°ã©ãŠã³ã/ããã¹ãè²ã§ãïŒbootstrap/material ã¯ãããããŒãèªèº«ã®
--bxsites-accent ã«ããã©ã«ãããŸããtailwind ã¯åäžã®å
±æã¢ã¯ã»ã³ãããŒã¯ã³ã
æããªããããå°çšã®ãã£ãŒã«/ãã³ãã®ãã¢ã䜿çšããŸãïŒã--bxsites-step-line ã¯
ã¹ãããéã®æ¥ç¶ç·ã-success/-warning/-danger ã®ãã¢ã¯ã¹ãããèªèº«ã®ä»»æã®
color="..." 屿§ãæ¯ããŸã - ããã©ã«ãã®ããŒã«ãŒãšã¯ç°ãªããããã3ã€ã¯
ã©ã€ã/ããŒã¯ã¢ãŒããããã§ãåãåºå®ã® bg/text ãã¢ã§ãïŒããŒãèªèº«ã®ãã©ã³ã
ã¢ã¯ã»ã³ãã«çŽã¥ããªãèªå·±å®çµåã®ãããžïŒããã®ããå宣èšãã¹ã
[data-theme="dark"] ãªãŒããŒã©ã€ãã¯ãããŸãã:
:root {
--bxsites-step-marker-bg: #7C3AED;
--bxsites-step-marker-text: #fff;
--bxsites-step-success-bg: #059669;
--bxsites-step-success-text: #fff;
}
[data-theme="dark"] {
--bxsites-step-marker-bg: #C4B5FD;
--bxsites-step-marker-text: #1b1f21;
}
ããŒã ããŒãžã®ããŒããŒãããŒ
ãã¹ãŠã®çµã¿èŸŒã¿ããŒãã¯ãèŠåºãç»åãš CTA ãã¿ã³ãæã€å
šå¹
ã®ããŒã ããŒãžãããŒçšã®
CSS ã忢±ããŠããŸã - ãã®ãµã€ãèªèº«ã® docs/index.md ãããã䜿çšããŠããŸãã
å°çšã®ãã£ã¬ã¯ãã£ããããã¯ãèšå®ã¯ãªããã©ã®ããŒãžã§ãå
¥ãããããã¬ãŒã³ãª HTML
ã§ãïŒããŒã ããŒãžãæ®éã®ããŒãžã§ãããorder: 1 ãããã以å€ã®åœ¢ã§ nav ã®
å
é ã«ããã ãã§ãïŒ:
<div class="bxsites-hero">
<img class="bxsites-hero__banner" src="assets/home-banner.jpg" alt="...">
<div class="bxsites-hero__actions">
<a class="bxsites-hero__btn bxsites-hero__btn--primary" href="getting-started.md">Get Started</a>
<a class="bxsites-hero__btn bxsites-hero__btn--secondary" href="https://github.com/your/repo">View on GitHub</a>
</div>
</div>
bxsites-hero__btn--primary/--secondary ã¯ããã§ã«ã©ã®ããŒããä»ã®å Žæã§äœ¿ã£ãŠãã
ã®ãšåã2ã€ã®ã¢ã¯ã»ã³ãã¹ã¿ã€ã«ã§ã - ãã¿ã³ã¯èªç±ã«å
¥ãæ¿ããåé€ã远å ã§ããŸãã
bxsites-hero__banner èªèº«ã®ç»åããä»ã®ã©ã®ç»åã§ã解決ãããã®ãšåãæ¹æ³ã§ã
docs/assets/ çžå¯Ÿã® src ãéããŠãªãµã€ãº/å·®ãæ¿ãã§ããŸãã
ããŒãã®ãªãŒããŒã©ã€ã
èªåã® layout.bxm + page.bxmïŒãªãã·ã§ã³ã§ search.bxm/assets/ïŒãã
ãããžã§ã¯ãã«ãŒãã® theme/ ãã©ã«ãã«é
眮ããŸããBxSites ã¯ãäžèšã®å¥çŽã
æºãããŠããéããã€ã³ã¹ããŒã«æžã¿ã® themes/<name>/ ããŒããšã©ã®çµã¿èŸŒã¿ããŒã
ãããããããžã§ã¯ãã¬ãã«ã® theme/ ãªãŒããŒã©ã€ããåªå
ããŸã -
ãã®ã¢ãžã¥ãŒã«èªèº«ã® resources/themes/ ã«ããçµã¿èŸŒã¿ããŒãã¯ãã³ããŒããŠ
調æŽããããã®è¯ãåºçºç¹ã«ãªããŸããå®å
šãªè§£æ±ºé åº: theme/ïŒãã®ã»ã¯ã·ã§ã³ïŒ
â themes/theme.name/ïŒtheme.name ãäžèŽããå Žåã®
ã€ã³ã¹ããŒã«æžã¿ããŒãïŒâ theme.name ãšãã
ååã®çµã¿èŸŒã¿ããŒãã
å®äŸãèŠãŠã¿ãŸããã - bootstrap ããå§ããŠããã©ã³ããã¬ãããšèŠåºããã©ã³ãã
ç¬èªã®ãã®ã«å·®ãæ¿ãããã以å€ã®ãã¹ãŠïŒãããæ€çŽ¢ãããŒã¯ã¢ãŒããã³ãŒããã€ã©ã€ã
ãªã©ïŒã¯ãã§ã«åäœããŠããéãã«ä¿ã¡ãŸã:
my-project/
âââ bxsites.yaml
âââ docs/
âââ theme/ â ãããžã§ã¯ãã¬ãã«ã®ãªãŒããŒã©ã€ããã©ã®çµã¿èŸŒã¿ããŒãããå
ã«ãã§ãã¯ãããŸã
âââ layout.bxm â resources/themes/bootstrap/layout.bxm ããã³ããŒ
âââ page.bxm â resources/themes/bootstrap/page.bxm ããç¡å€æŽã§ã³ããŒ
âââ search.bxm â ç¡å€æŽã§ã³ããŒ
âââ assets/
âââ style.css â bootstrap ã® assets/style.css ããã³ããŒãããã®åŸç·šé
- ãã®ã¢ãžã¥ãŒã«ã®
resources/themes/bootstrap/ããã3ã€ã®.bxmãã¡ã€ã«ãšassets/style.cssããããžã§ã¯ãã®theme/ã«ã³ããŒããŸãã - 倿Žãå¿
èŠãªéšåã ããç·šéããŸãããã©ã³ããã¬ãããšãã©ã³ããå·®ãæ¿ããã ããªãã
theme/assets/style.cssã®å é éšåã ãã§ã:
:root {
--bxsites-gradient-start: #7C3AED; /* was #00FF78 */
--bxsites-gradient-end: #DB2777; /* was #00DBFF */
--bxsites-accent: #FBBF24; /* was #FFF500 */
}
body {
font-family: "Inter", system-ui, sans-serif; /* was "Poppins" */
}
bxSites buildïŒååŸ©äœæ¥äžã¯serveïŒãå®è¡ããŸã - BxSites ã¯theme/ã èªåçã«æ€åºãããããbxsites.yamlã®å€æŽã¯äžèŠã§ãïŒãããžã§ã¯ãã¬ãã«ã®theme/ãã©ã«ãã¯åžžã«theme.nameã§æå®ãããçµã¿èŸŒã¿ããŒãããåªå ãããŸãïŒã è§Šããªãã£ãéšå - ããã®ã¬ã³ããªã³ã°ãæ€çŽ¢ãããŒã¯ã¢ãŒããã°ã«ãã³ãŒã ã¢ãããŒã·ã§ã³ - ã¯ãå ã®bootstrapããŒããšãŸã£ããåãããã«åäœãç¶ããŸãã ãã®è£åŽã«ããã®ã¯ããŸã£ããåãlayout.bxm/page.bxmã®ããŒã¯ã¢ããã ããã§ãã
ãã ãããããžã§ã¯ãã® theme/ ãã©ã«ãã¯ãªãŒã«ã»ãªã¢ã»ããã·ã³ã°ã§ã - BxSites ã
1ã€ã§ãèŠã€ãããšãçµã¿èŸŒã¿ããŒãã®ä»£ããã«å®å
šã«ãã¡ãã䜿ãããŸãããã®ããã
倿Žããã®ã assets/style.css ã ãã§ãã£ãŠããç¬èªã® layout.bxm + page.bxm ã¯
å¿
èŠã§ãïŒã©ã¡ãããæ¬ ããŠãããã©ã«ãã¯ãé»ã£ãŠãã©ãŒã«ããã¯ããã®ã§ã¯ãªã
BxSites.InvalidTheme ã§å³åº§ã«å€±æããŸãïŒãCSS ã ãã®/.bxm ã䌎ããªã調æŽã«ã¯ã
代ããã«äžèšã® extraCss ã
䜿çšããŠãã ãã - bxsites.yaml ãæãã©ã®ããŒãã®äžã«ãéãªããtheme/ ãã©ã«ãã¯
äžåé¢äžããŸãããtheme/ ã¯ãããŒã¯ã¢ããèªäœã倿Žããå¿
èŠãããå Žåã®ããã®ãã®ã§ã
次ã®ã»ã¯ã·ã§ã³ã§æ±ããŸãã
ãŒãããããŒããæžã
ããŒãã«å¿
èŠãªã®ã¯2ã€ã®å¿
é ãã¡ã€ã«ã ããªã®ã§ãããã§ã¯æ¬åœã«æå°éã®ãã® -
Bootstrap ã Tailwind ããããŒã¯ã¢ãŒããæ€çŽ¢ UI ããªã - ã瀺ããçµã¿èŸŒã¿ããŒãã
ãã®äžã«è¿œå ããŠãããã®ãšãæ¬åœã«å¿
é ãªãã®ãšãæ£ç¢ºã«ç€ºããŸããäž¡æ¹ã
ãããžã§ã¯ãã® theme/layout.bxm ãš theme/page.bxm ãšããŠä¿åããŠãã ãã -
ãããžã§ã¯ãã¬ãã«ã® theme/ ãã©ã«ãã¯ïŒäžèšãšåæ§ã«ïŒèªåçã«æ€åºããã
bxsites.yaml ã®å€æŽã¯äžèŠã§ã:
<!-- theme/layout.bxm -->
<bx:script>
function renderNav( required array nodes ) {
var html = "<ul>"
for ( var node in arguments.nodes ) {
html &= "<li>"
html &= len( node.url )
? '<a href="' & variables.basePath & node.url & '">' & encodeForHTML( node.title ) & '</a>'
: encodeForHTML( node.title )
if ( node.children.len() ) {
html &= renderNav( node.children )
}
html &= "</li>"
}
return html & "</ul>"
}
</bx:script>
<bx:output>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>#encodeForHTML( variables.page.title )# - #encodeForHTML( variables.siteConfig.name )#</title>
<link rel="stylesheet" href="#variables.basePath#assets/theme/style.css">
</head>
<body>
<header><a href="#variables.basePath#">#encodeForHTML( variables.siteConfig.name )#</a></header>
<nav>#renderNav( variables.nav )#</nav>
<main>
</bx:output>
<bx:include template="#variables.themeDir#/page.bxm">
<bx:output>
</main>
</body>
</html>
</bx:output>
<!-- theme/page.bxm -->
<bx:output>
<article>
<h1>#encodeForHTML( variables.page.title )#</h1>
#variables.page.contentHtml#
</article>
</bx:output>
ããã§å®å
šã«åäœããããŒãã®å®æã§ã - variables.page.contentHtml ã¯ãã§ã«
倿æžã¿ã® MarkdownïŒã·ã³ã¿ãã¯ã¹ãã€ã©ã€ããAdmonitionãã¿ããæ°åŒãªã©ãã¹ãŠ
蟌ã¿ïŒãªã®ã§ãããŒã¹ãã¹ããã®ã¯äœãæ®ã£ãŠããããã¬ã€ã¢ãŠãããã ãã§ãã
ãããããçµã¿èŸŒã¿ããŒããæã£ãŠããŠå®éã«æ¬²ãããã®ãäœã§ã远å ããŠãã ãã:
search.bxmïŒbxsites.yaml ã® search ã true ã®å Žåã®ã¿ã€ã³ã¯ã«ãŒããããŸã -
æ€çŽ¢ ãåç
§ïŒãããŒã¯ã¢ãŒããã°ã«
ïŒresources/themes/bootstrap/layout.bxm ã® <body> ã¿ã°ãã x-data/x-init ã®
Alpine.js ãã¢ãšã察å¿ãã [data-theme="dark"] ã® CSS ãããã¯ãã³ããŒïŒã
ãã³ãããªã¹ã/ã¿ã°/ååŸãªã³ã¯ïŒã©ã®çµã¿èŸŒã¿ããŒãã® page.bxm ã«ããã¿ãŒã³ã
瀺ãããŠããŸã - ããããå°ããªã¬ã³ããªã³ã°é¢æ°ãå²ã if ã«ãããããã¹ãŠ
variables.page ã«ãã§ã«ååšãããã£ãŒã«ãã«ãã£ãŠé§åãããŸãïŒããããã¯
ç¬èªã® CSS/JS ã®ããã® assets/ ãã©ã«ãïŒãã«ãæã«èªåçã« site/assets/theme/
ã«ã³ããŒãããŸãïŒã