Publishでカスタムテーマを作成する方法(Swift)
「PublishでWebサイトを構築する」は4部構成です。
記事を順番に読み進めると、PublishでWebサイトが構築できるようになります。
第1部: セットアップ&使い方
第2部: カスタムテーマの作成 ←イマココ
第3部: プラグインのインストール
第4部: プラグインの作成(未投稿)
はじめに
Publishでテーマをカスタマイズする方法を紹介します。
環境
- OS:macOS Monterey 12.2.1
- Xcode:13.3 (13E113)
- Swift:5.6
- Publish:0.8.0
既存テーマの複製
0からテーマを作成するのは手間なので、本記事では foundation
テーマを複製して作成します。
複製時はライセンスに遵守するよう気をつけてください。
以下から foundation
テーマのSwiftファイルとCSSをダウンロードします。
Swiftファイルは Sources/{パッケージ名}
フォルダ以下に格納します。
CSSは Resources
フォルダ以下に格納します。
私は uhooi
というテーマを作成するので、ファイル名とフォルダ構成は以下としました。
$ tree
.
├── Resources
│ └── UhooiTheme
│ └── styles.css
└── Sources
└── WebsiteSample
├── Theme+Uhooi.swift
└── main.swift
テーマ名やパスなどを修正します。
+ import Publish
import Plot
public extension Theme {
- static var foundation: Self {
+ static var uhooi: Self {
Theme(
- htmlFactory: FoundationHTMLFactory(),
- resourcePaths: ["Resources/FoundationTheme/styles.css"]
+ htmlFactory: UhooiHTMLFactory(),
+ resourcePaths: ["Resources/UhooiTheme/styles.css"]
)
}
}
- private struct FoundationHTMLFactory<Site: Website>: HTMLFactory {
+ private struct UhooiHTMLFactory<Site: Website>: HTMLFactory {
func makeIndexHTML(for index: Index,
context: PublishingContext<Site>) throws -> HTML {
// ...
}
// ...
}
作成したテーマを使うように修正します。
try WebsiteSample().publish(using: [
.addMarkdownFiles(),
.copyResources(),
- .generateHTML(withTheme: .foundation),
+ .generateHTML(withTheme: .uhooi),
.generateRSSFeed(including: [.posts]),
.generateSiteMap(),
.deploy(using: .gitHub("uhooi/uhooi.github.io", useSSH: false))
])
publish-cli run
を実行して問題ないことを確認したら、既存テーマの複製が完了です。
テーマのカスタマイズ
テーマを複製したら、カスタマイズしていきます。
HTMLのカスタマイズ
HTMLは Plot というPublishと同じ作者が提供しているライブラリを使って書きます。
SwiftUIのようなDSLで、HTMLやRSSなどをSwiftを使って型安全に書けます。
試しに簡単な修正をしてみます。
フッターの「RSS feed」を「RSSフィード」に変更します。
private struct SiteFooter: Component {
var body: Component {
Footer {
Paragraph {
Text("Generated using ")
Link("Publish", url: "https://github.com/johnsundell/publish")
}
Paragraph {
- Link("RSS feed", url: "/feed.rss")
+ Link("RSSフィード", url: "/feed.rss")
}
}
}
}
publish-cli run
を実行してWebサイトを確認します。
Before | After |
---|---|
ページ下部の文言が変わったことがわかります。
このようにしてHTMLをカスタマイズできます。
CSSのカスタマイズ
CSSのカスタマイズは、そのままCSSを更新するだけです。
試しに背景色を白から青にしてみます。
body {
- background: #fff;
+ background: blue;
color: #000;
font-family: Helvetica, Arial;
text-align: center;
}
publish-cli run
を実行してWebサイトを確認します。
ChromeではCSSをキャッシュすることがあるので、更新されない場合はスーパーリロード(Command + Shift + R)すると反映されます。
Before | After |
---|---|
背景色が変わったことがわかります。
このようにしてCSSをカスタマイズできます。
デフォルトだとURLが折り返されないので、修正すると読みやすくなります。
.content {
margin-bottom: 40px;
+ overflow-wrap: break-word;
}
こちらの修正は PR を頂いて対応しました。
本家にも同様のPR を作成しています。
おわりに
これでPublishでカスタムテーマを作成できました!
オリジナルのテーマを作成して自分だけのWebサイトを作りましょう
参考リンク
Author And Source
この問題について(Publishでカスタムテーマを作成する方法(Swift)), 我々は、より多くの情報をここで見つけました https://qiita.com/uhooi/items/111d4439273775586149著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .