catch.jp blog

デジタルをわかりやすく。

2017-9-04

MDwiki:Markdownベースの超シンプルCMS

Category: Tech   

MDwikiは、Markdownベースのとてもシンプルなコンテンツ管理ツール。

Wikiというよりも、Flat-File CMSというジャンルなのかもしれない。

非常に便利だったけど、ほとんど日本語情報がなかったので整理しておきます。

特徴

mdwiki.htmlというひとつのファイルだけあれば利用できる

で、Markdown記法で書かれたテキストファイル(拡張子 .md、以下mdファイル)を、このmdwiki.htmlと同じフォルダに置く。

これだけで、mdファイルがWebページとして表示されます。

サーバーにスクリプトやDBを設置する必要もないし、いちいちmdファイルを変換する必要もありません。

  • mdwiki.htmlのなかに、JavascriptとBootstrapベースのテンプレートが埋め込まれている
  • Gimmicks(ギミックス) という追加機能で、GoogleマップやFacebookなど今どきのソーシャルサービスにも対応。
  • クライアントサイドでhtmlが作られるので、以前は検索エンジンに引っかからなかったが、最近は対応しているらしい。
  • 作ったのは、 Timo Dörr(Dynalon)さん。ライセンスは、GPLv3 + 追加条項

サンプル

はじめ方

  1. ドキュメントをmdファイルとして準備。
  2. 文字コードはUTF-8
  3. 1行目は、見出し1にする(#記号)
  4. 最初のページのファイル名は、index.mdとします。
  5. MDwikiをダウンロード。>> https://github.com/Dynalon/mdwiki/releases
  6. index.mdとmdwiki.htmlを同じフォルダにおく
  7. mdwiki.htmlを開くと、自動的にindex.mdが変換されて表示
  8. どこかにWebサーバーがあるなら、そこにおいてもいい。社内とかイントラネットで使うなら、XAMPPとか用意するのが早いかも。

使い方

使い方も、とてもシンプル

ページアクセス

  • 「mdwiki.html」を開く場合は、index.mdが変換されて表示される
  • 下記のように「mdwiki.html」の後ろに「#!」+mdファイル名をつけると、そのmdファイルが変換されて表示される
  • 例 http://example.com/mdwiki.html#!myfile.md

ページ内のナビゲーション

  • 見出し1が、ページタイトルになって、見出し2が複数あるとサイドに一覧表示される

書式設定

markdownでやる。画像やリンクもOK。

http://dynalon.github.io/mdwiki/#!layout.md

ナビゲーションバー

  • 下記のように、navigation.mdファイルを書いて、同じフォルダに置くと、上部の共通ヘッダーにナビゲーションバーが表示される
# サイトタイトル

[Home](home.md)
[About](about.md)
[Download](download.md)

ページパス

URL 表示されるページ
mdwiki.html index.md
mdwiki.html#!myfile.md myfile.md
mdwiki.html#!myfolder/ myfolder/index.md
mdwiki.html#!myfolder/myfile.md myfolder/myfile.md

各種設定

テーマの切り替え

公式サイトの右上にあるやつ。

Theme chooserというギミックスでできる。

http://dynalon.github.io/mdwiki/#!customizing.md#Theme_chooser

navigation.mdに、こんなふうに記述すると、テーマ選択メニューが表示される。

[gimmick:themechooser](Choose theme)

navigation.mdに、こんなふうに記述すると、デフォルトテーマを指定できる。

[gimmick:theme](flatly)

ギミックス

Gimmicks(ギミックス) という追加機能で、GoogleマップやFacebookなど今どきのソーシャルサービスにも対応。

こんなのが、ありますね。

  • Alerts
  • GitHub Gists
  • Facebook Likebutton
  • Fork me on GitHub - Ribbon
  • Google Maps
  • UML Diagrams via yUML.me
  • Math
  • Twitter
  • Youtube
  • Disqus

http://dynalon.github.io/mdwiki/#!gimmicks.md

スタイルシート

mdwiki.htmlに埋め込まれているので、そこをいじる。

デフォルトでは、Twitter bootstrapが組み込まれていて、さらに追加のcssがある。

個人的には、追加部分をmdwiki.cssという外部cssファイルに切り出して、そちらでいじっている。見出しなどのスタイルを変えるときも、そこでやる。

そのために、mdwiki.htmlの194行目あたりに以下のコードを埋め込む。

link rel="stylesheet" href="style.css"

もしも、自分でMDwikiをビルドできるなら、style/custom.cssにスタイルを追記できる。

ページ一覧の取得

ページ一覧を取得する方法がないので、navigation.mdで上部メニューに手動で追加する。

まあ、wikiなので、ページ一覧を表示させるのは、本質的ではないということかも。

設定ファイルによるカスタマイズ

config.jsonというファイルを同じフォルダにおくと、カスタマイズできる。こんな設定がある。

  • サイドナビのON/OFF
  • オリジナルの改行指定
  • フッターテキストの追加
  • 見出しのアンカー記号
  • タイトル(ただし、Google検索の結果には反映されない。そこを変えるには、htmlのtitleタグを修正する)
{
    "useSideMenu": true,
    "lineBreaks": "gfm",
    "additionalFooterText": "All content and images © by John Doe",
    "anchorCharacter": "#",
    "title": "ACME Industries Wiki"
}

詳細は、http://dynalon.github.io/mdwiki/#!customizing.md#Configuration

追加のJavascript

こんな感じで、mdwiki.htmlの200行目(mdwiki.jsの一番最後)に追加すると、「MyGimmick」というギミックスが追加できる。該当ページが表示された後に、1回だけコードを実行してくれる。

(function($) {
    'use strict';
    var myGimmick = {
        name: 'MyGimmick',
        version: $.md.version,
        once: function() {
            // write code here

        }
    };
    $.md.registerGimmick(myGimmick);
}(jQuery));

h1の見出し(#記号のやつ)をタイトルに設定する

// Add title
var titletext = $('h1:last').text();
document.title = titletext + " / catch.jp-memo" ; // 表示テキスト

外部リンクを別タブで開く。

// Add external link on a-tag
var domain = "www.example.jp/wiki/"; // 設置場所
$('a[href^=http]').not('[href*="'+domain+'"]').attr('target','_blank');

あと、こんな方法もあるみたい。

ライセンス

  • GPLv3 + 追加条項
  • 追加条項は、GoogleマップのコードとかTwitterボタンとかは、GPLv3の対象外とか言っている(たぶん) -- https://github.com/Dynalon/mdwiki/blob/master/LICENSE.txt

関連情報

レビュー

少し増えていた

  • MDwiki Markdownをコンテンツに使ったCMS/Wikiシステム MOONGIFT http://www.moongift.jp/2013/11/mdwiki-markdown%E3%82%92%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%81%AB%E4%BD%BF%E3%81%A3%E3%81%9Fcmswiki%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0/
  • MarkDownで書いたファイルを置くだけでWiki化できるMDWikiを導入してみた。 - Qiita http://qiita.com/nusa/items/8b07a8d75abc2044fa87
  • MDWikiを導入してみてわかったこと - Qiita:http://qiita.com/nusa/items/54cc7b38517192b3caf4
  • MDwikiに感動した - Qiita:http://qiita.com/tukiyo3/items/4cbfa1d2338c061df015
  • MDwikiでローカルにオレオレWikiを作成する - 気になったことをいろいろやってみる:http://ogeji.hatenablog.com/entry/2015/06/05/121109
  • MDwikiはじめました | 3D技術研究所Blog:http://3dtech.jp/blog/?p=101

  • 【MDwiki】HtmlとMarkdownファイルを置くだけで作成できる!自分専用Wikiツールのご紹介: シーサー渋谷ではたらく技術担当のブログ(SSGブログ):http://techdev.seesaa.net/article/436995731.html

  • [dropbox][wiki]MDWikiについての情報をまとめる | ブログ | そうだ車輪と名づけよう 5th:http://www.atyks.org/blog/detail/2015-10-22-1
  • MDwikiに関するTips - hphm’s diary:http://hphm.hateblo.jp/entry/2015/03/23/124819
  • MDWikiの導入方法 - MIN:http://min.hatenablog.jp/entry/2016/02/06/155242
  • MDwikiをOwncloudと連携させてWebで編集できるようにした - ひよこになりたい:http://zipsan.hatenablog.jp/entry/20151014/1444816696

  • MDWikiに関する6件の投稿 - Qiita:http://qiita.com/tags/MDWiki

類似ツール

  • Flat-FileCMS:https://www.google.co.jp/search?q=Flat-FileCMS&ie=utf-8&oe=utf-8&gfe_rd=cr&ei=TdmaWa3hK6fK8gfU6I7YBg

  • Markdown・Textile・Wiki記法をサポートしたJavaScript製ドキュメントフレームワーク「Invisible.js」を公開しました(オープンソース) | Chrome Life:http://www.chrome-life.com/javascript/554/

  • 好きなブラウザで動作するMarkdownビューアlocal-notes.jsを公開しました http://henry.animeo.jp/blog/2013/11/29/local-notes-js/
  • marked.js https://github.com/chjj/marked

あと、MDwikiという名前のツールが、他にもいくつかあって、ちょっとまぎらわしい

  • erickrdch/mdwiki https://github.com/erickrdch/mdwiki
  • http://www.mdwiki.net/