シェアと Markdown コピー
更新
詳細ページのタイトル右にある 3 つのアクションボタン(シェア / Markdown コピー / お気に入り)の使い方と仕組み。
各記事のタイトル右には 3 つのアクションボタンが並んでいます。
| アイコン | 動作 |
|---|---|
| 🔼 シェア | 記事の 絶対 URL をクリップボードにコピー |
| 📋 Markdown コピー | タイトル + 本文の Markdown をクリップボードにコピー |
| ☆ お気に入り | localStorage に保存(お気に入り 参照) |
シェア(URL コピー)
クリックすると site.url + 記事のパス を絶対 URL でコピーします。site.yaml の url: キーがコピー結果に反映されるので、本番ドメインを設定しておくと SNS などへ貼り付けてすぐシェアできます。
site:
url: "https://docs.example.com"
Markdown コピー
「📋」を押すと、その記事の Markdown をクリップボードにコピーします。先頭にタイトルが # Title の形で付き、フロントマターは取り除かれます。
# 記事タイトル
本文の Markdown がここに入る。
## 見出し
...
こんな時に便利
- AI / LLM に貼り付けて質問 — 記事を読みながら ChatGPT や Claude に「この記事の手順を要約して」「コードのこの部分について解説して」と聞ける
- 別のドキュメントへ引用 — 一部を別の場所へ転記したい時
- オフラインでの参照 — 出張前にメモアプリにペーストしておく
サーバ側の仕組み
ボタンの裏では /path/to/article.md という新しいエンドポイントを叩いています。.html の URL の拡張子を .md に変えるだけで生 Markdown が返ります。
GET /guide/features/share-and-copy.md
→
Content-Type: text/markdown; charset=utf-8
# シェアと Markdown コピー
各記事のタイトル右には 3 つのアクションボタンが並んでいます。
...
エンドポイント自体も使えます。curl https://docs.example.com/guide/features/share-and-copy.md で記事の素材を取得できますし、CMS や別の生成スクリプトのソースとしても流用できます。
クリックフィードバック
コピーに成功するとアイコンが ✓ に 2 秒だけ差し替わります。失敗時(HTTPS 以外で navigator.clipboard が拒否される等)はボタンが赤くなり、title 属性で「コピーに失敗しました」が出ます。
メモ
navigator.clipboard はブラウザ仕様で HTTPS または localhost のみ動作します。http:// の本番環境ではコピーが失敗するので、SSL 証明書を入れた状態で運用してください。機能を無効化したい
ボタンを消したい場合は themes/docs/entry.html.twig から該当 <button> を削除すれば OK。/path.md エンドポイント自体は残るので、無効化したい時は Application.php の $this->router->add('GET', '/{**path}.md', ...) ルートも合わせて削除してください。
実装ファイル一覧
| ファイル | 役割 |
|---|---|
themes/docs/entry.html.twig |
3 つの <button> の HTML |
public/assets/docs/js/entry-actions.js |
クリック → clipboard.writeText、フィードバック演出 |
src/Repository/EntryRepository.php |
findMarkdown() でフロントマターを除いた本文を返す |
src/Core/Application.php |
renderEntryMarkdown() + /path.md ルート |
すべて IIFE で囲まれているので他スクリプトと const 名が衝突する心配もありません。
次のページ
もっと見る (htmx 段階展開) →