ここまで出来る! GitHubのMarkdownで書くウェブページ　独自テーマの開発


この記事は、[GitHubを使ってMarkdown文書を５ステップでホームページとして公開する方法](https://qiita.com/MahoTakara/items/3800e9dc83b530d0a050)の続編です。 GitHub pages では簡単にテーマを設定して、マークダウンで作成したページを美しく見やすくする事ができます。 この機能をさらに活用して、自分のプロジェクトなどの要件に応じて編集できたら、もっともっと利用用途が増える思うので、どこまで、出来るか、試みて見ました。


ここで検証した内容は、主に次の３点です。

* 独自レイアウトの設定
* JQueryを利用したメニューバーなどの作成
* YouTubeの動画貼り付け

実際に作成したページは https://takara9.github.io/docs/ からアクセスでき、マークダウン文書やその他カスタムなテーマを作成するたmに必要なデータは、GitHub は https://github.com/takara9/docs から参照する事ができます。


## 独自レイアウトの開発

独自のレイアウトを作成するために必要なファイルを把握するために、ディレクトリを参照しながら役割を説明します。

![スクリーンショット 2018-01-06 9.40.16.png](https://qiita-image-store.s3.amazonaws.com/0/42829/2d3e250e-b98f-5731-07e8-597b366c52d1.png "スクリーンショット 2018-01-06 9.40.16.png")

レイアウトを作るために必要な必須なディレクトは、以下の３種類で、`_layouts/default.html`が起点となって、レイアウトが決定されます。

* `_layouts`  default.html がマークダウン文書に適用され、レイアウトを決める。
* `assets/css` default.htmlからリンクされるスタイルシートが配置、次のCSSプリプロセッサのソースにリンク
* `_sass`  CSSのプリプロセッサのソースが配置


マークダウンの文書は、次のスクリーン・ショットのカーソルのある場所、`{{ content }}` に埋め込まれます。

![スクリーンショット 2018-01-06 9.56.59.png](https://qiita-image-store.s3.amazonaws.com/0/42829/8808efa8-f798-3109-e10e-c53fbd15ffc0.png "スクリーンショット 2018-01-06 9.56.59.png")


つまり、`_layouts/default.html` の内容を編集すれば、好みのレイアウトを作成できる事が解ると思います。


## JQueryの実行

JQueryとそのプラグインを利用して、以下のスクリーン・ショットの様なプルダウンメニューを GitHub のマークダウンで書いたウェブページに追加します。

![スクリーンショット 2018-01-06 10.04.07.png](https://qiita-image-store.s3.amazonaws.com/0/42829/140e5b0e-ee25-6963-38c7-47c8eb2df45e.png "スクリーンショット 2018-01-06 10.04.07.png")

default.htmlのヘッダー部に以下を追加

```HTML
<link type="text/css" rel="stylesheet" href="{{ '/assets/css/prmenu.css' | relative_url }}" />
<style>
  body {
    margin: 0;
    padding: 0;
  }
</style>
```

メニューの定義として、bodyにメニューの定義とJQueryとPrMenuのスクリプトのリンクをセットするだけです。

```HTML
  <body>

    <!------------ メニューバー ------------->
    <script src="{{ '/assets/js/jquery-3.2.1.min.js' | relative_url }}"></script>
    <script src="{{ '/assets/js/jquery.prmenu.min.js' | relative_url }}"></script>
    <script>
      $(document).ready(function(){
      $('#top-menu').prmenu();
      });
    </script>
    <ul id="top-menu">
      <li><a href="{{ '/' | relative_url }}">トップページ</a></li>
      <li><a href="#">メニュー #2</a>
	<ul>
	  <li><a href="https://www.ibm.com/cloud-computing/jp/ja/">IBM Cloud</a></li>
	  <li><a href="#">サブアイテム</a>
            <ul>
              <li><a href="{{ '/sub1' | relative_url }}">サブアイテム #2-2-1</a></li>
              <li><a href="{{ '/sub2' | relative_url }}">サブアイテム #2-2-2</a></li>
              <li><a href="{{ '/sub3' | relative_url }}">サブアイテム #2-2-3</a></li>
            </ul>
	  </li>
	  <li><a href="https://qiita.com/MahoTakara">Qiita @MahoTakara</a></li>
	</ul>
      </li>
      <li><a href="https://kubernetes.io/">Kubernetes Home page</a></li>
      <li><a href="#">メニュー #4</a>
	<ul>
	  <li><a href="#">アイテム #4-1</a></li>
	  <li><a href="#">アイテム #4-2</a>
            <ul>
              <li><a href="#">サブアイテム #4-2-1</a></li>
              <li><a href="#">サブアイテム #4-2-2</a></li>
              <li><a href="#">サブアイテム #4-2-3</a></li>
            </ul>
	  </li>
	  <li><a href="#">アイテム #4-3</a></li>
	</ul>
      </li>
      <li><a href="#">メニュー #5</a></li>
    </ul>
```


コードの全体は、https://github.com/takara9/docs/blob/master/_layouts/default.html に置いてあります。
JQueryとPrMenuのJavaScriptの配置は、上記のコードを参照してください。　そして、PrMenuとJQueryの入手は参考資料にリンクがあります。


### YouTubeの貼り付け

Markdownには、HTMLを直接書くこともできるので、YouTubeの動画を埋め込むリンクを試したところ、全く問題なく動作しました。

https://takara9.github.io/docs/sub3/

![スクリーンショット 2018-01-06 10.19.58.png](https://qiita-image-store.s3.amazonaws.com/0/42829/dcb86ac5-f801-27c1-880b-7d99e783047c.png "スクリーンショット 2018-01-06 10.19.58.png")



# まとめ

GitHub pages に 少しHTMLやJavaScriptを追加するだけで、Markdownをレイアウト・テンプレートに嵌め込め、JQueryを使って簡単にメニューも作れるというのは、凄く良いですね。 




# 参考資料
* シンプルなレスポンシブ・トップメニューを実装するプラグイン「PrMenu」 https://webkaru.net/jquery-plugin/prmenu/
* JQuery Download https://jquery.com/download/