Summary

  • Joomla! Template Cassiopeiaにコードをカラフルに修飾するシンタックスハイライトのgoogle-code-prettifyを導入し、articleの視覚的印象を向上させます
<head>
    <script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script>
</head>

HowTo

  • google-code-prettifyはhtmlのhead要素にscript要素を挿入するだけで機能します
    • サーバーに保存してカスタマイズする選択肢もあります
  • script要素では、src属性にCDNサービスのjsDelivrを指定します
  • joomla!のchild templateにindex.phpを新規に配置して同ファイルを編集します(存在しない場合)
    • 当方の環境で動作したので、この方法をよしとしましたが、正しいのかどうかの確信はございません
    • child templateの作成ついては、Artcleを作成の予定です
  • article記述時はSource Code画面でpre要素内にコードを入力します
    • ただし、事前に[<]は[&lt;]に、[>]は[&gt;]になどエスケープ処理が必要です

Setup

  1.  System > Site Templates > Cassiopeia Details and FIles (Parent)をクリックします
  2. index.phpを開きます
  3. スクリプトをすべてコピー(Ctrl+A -> Ctrl+C)します
  4.  System > Site Templates > Cassiopeia_child Details and FIles (child)をクリックします
  5. New Fileをクリックします
    • Folder: /templates/cassiopeia_chldをクリックします
    • File Name: indexと入力します
    • File Type: phpを選択します
    • Createをクリックします
  6. テキストボックス内に先ほどコピーしたスクリプトを貼付け(Ctrl+V)、index.phpを複製します
  7. head要素内にscript要素を貼付けします
    • <script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js"></script>
  8. Saveをクリックします

Usage

  • note: エディタはTinyMCE editorの場合の手順です
  1. Articleに挿入するコードを用意します
  2. エスケープ処理を行うWebサービスを利用してコードを修正してコピーします
  3.  Joomla!のArticle作成画面を開きます
    • Articles:Edit  > Tab: Content > Blk: Article Text
  4.  コード編集画面に変更します
    • Menu:Tools > Source Code+をクリックします
      Menu_Tools_Source_Code
  5. pre要素でコードを挿入します
    • class属性に"prettyprint"を指定します
  6. Saveをクリックします
  7. Preview をクリックして、サイト表示に問題ないことを確認します

Customization

skin

  • Defaultを含め5種のスキンを選択できます
  • script要素のsrc属性に次のように指定します(sunburstの場合)
    • <script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js?skin=sunburst"></script>

css

  • 設定しているCSSは次のとおりです
    • Templateとの兼ね合いで場当たり的に設定した箇所もあります
/* pre code element for google-code-prettify */
pre.prettyprint ol li span {
  padding: 0;
}

pre.prettyprint ol{
  margin: 0 0.25rem;
  white-space: pre-wrap;
}

pre.prettyprint ol.linenums > li {
  list-style-type: decimal !important; /* Display each line with line numbers */
  border-left: solid 1px #339933; /* Displaying the separator between line numbers and code */
  padding-left: 0.5em;
  line-height: 1em;
}

Reference

  • GitHub | google archive / code-prettify
    • JSをサーバーに保存する場合は、ファイルを入手できます
    • Announcement: Action required rawgit.com is going away.と、rawgit.comは廃止された旨の警告があります.Webにはrawgit.comのURLで説明されているサイトもあるので、注意が必要です。
  • Web Design Leaves | Google Code-Prettify
    • 詳細なご説明を確認できます
    • CSSを拝借させていただきました
  • 電脳職人村 | Google Code-Prettifyについて
    • google-code-prettifyのシンタックスハイライトについて問題を指摘されています
    • ご指摘のとおり、上記cssのハイライトは値のみで、border-leftプロパティに至っては明らかに誤認識されています
  • サルワカ | HTMLエスケープ・ツール
    • エスケープ処理を行っていただけるWebツールです