Joomla!! Template CassiopeiaにシンタックスハイライトのPrism.jsを導入します。
Summary
- シンタックスハイライトについては、既にgoogle-code-prettifyを導入しておりますが、試しにPrism.jsも導入してみます
- PrismのWebサイトから好みのjsを選択してオリジナルのjsを作成することができますが、今回は簡便なCDNによる導入を試します
- なお、JCEにはCode SampleというPluginが用意されており、こちらを使用すれば、以下に案内の方法より簡便に導入することができるかもしれません
Setup
Basic usage
- 公式サイトに従い、CDNによる導入を行います
- jsはbody要素の最後にscript要素で指定します
- cssはhead要素にlink要素で指定します
- 当サイトでは、コアに加え次のプラグインとテーマを追加しています
- コア
- prism : コアファイルです
- autoloader : 必要な言語ファイルをロードします
- プラグイン
- toolbar : 次のshow-languageとcopy-to-clipboardに必要です
- show-language : 指定言語を表示します
- copy-to-clipboard : クリップボードへコピーするボタンを用意します
- line-numbers : 行番号を表示します
- line-highlight : 指定する行をハイライト表示します
- テーマ
- prism : コアテーマ(?)です
- okaidia : ダーク系のテーマです
- コア
- なお、コアも含め、多くのプラグインがcssとセットになっています
- いずれも、ファイル名にminを含む最小化(圧縮?)タイプを選択しています
JSDELIVR
Joomla! Template Setup
index.php
- 上記で取得したURLをもとに、CassiopeiaのChild Templateのindex.phpに次のように追記します
- System > Site Templates > Cassiopeia_child Details and FIles (child) > Editor > index.php
js
- script要素はbody要素の最後に配置します
<body>
---
<!-- prism.js -->
<!-- core -->
<script src="https://cdn.jsdelivr.net/npm/This email address is being protected from spambots. You need JavaScript enabled to view it. .0/prism.min.js"></script>
<!-- language autoloader -->
<script src="https://cdn.jsdelivr.net/npm/This email address is being protected from spambots. You need JavaScript enabled to view it. .0/plugins/autoloader/prism-autoloader.min.js"></script>
<!-- toolbar -->
<script src="https://cdn.jsdelivr.net/npm/This email address is being protected from spambots. You need JavaScript enabled to view it. .0/plugins/toolbar/prism-toolbar.min.js"></script>
<!-- show-language -->
<script src="https://cdn.jsdelivr.net/npm/This email address is being protected from spambots. You need JavaScript enabled to view it. .0/plugins/show-language/prism-show-language.min.js"></script>
<!-- copy-to-clipboard -->
<script src="https://cdn.jsdelivr.net/npm/This email address is being protected from spambots. You need JavaScript enabled to view it. .0/plugins/copy-to-clipboard/prism-copy-to-clipboard.js"></script>
<!-- line-numbers -->
<script src="https://cdn.jsdelivr.net/npm/This email address is being protected from spambots. You need JavaScript enabled to view it. .0/plugins/line-numbers/prism-line-numbers.min.js"></script>
<!--line-highlight -->
<script src="https://cdn.jsdelivr.net/npm/This email address is being protected from spambots. You need JavaScript enabled to view it. .0/plugins/line-highlight/prism-line-highlight.min.js"></script>
</body>
css
- link要素はhead要素内に配置します
<head>
---
<!-- prism.js -->
<!-- core css -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/This email address is being protected from spambots. You need JavaScript enabled to view it. .0/themes/prism.min.css">
<!-- line-numbers css -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/This email address is being protected from spambots. You need JavaScript enabled to view it. .0/plugins/line-numbers/prism-line-numbers.min.css">
<!-- toolbar css-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/This email address is being protected from spambots. You need JavaScript enabled to view it. .0/plugins/toolbar/prism-toolbar.min.css">
<!-- line-highlight css-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/This email address is being protected from spambots. You need JavaScript enabled to view it. .0/plugins/line-highlight/prism-line-highlight.min.css">
<!-- okaidia css-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/This email address is being protected from spambots. You need JavaScript enabled to view it. .0/themes/prism-okaidia.min.css">
</head>
user.css
- 上記セットアップ直後では、間延びした行間になってしまいました
- そこで、CassiopeiaのChild Templateのuser.cssに次のように追記しました
- pre要素下のcode要素下のすべてにpadding: 0 !important;を指定して上書きしています
- System > Site Templates > Cassiopeia_child Details and FIles (child) > Editor > user.css
/* prism.js */
pre code * {
padding: 0 !important;
}
Reference
- Prism
- Usage with CDNs
- CDNによる導入方法が記載されています
- Supported Languages
- 297言語が用意されています
- Usage with CDNs
- JSDELIVR | prismjs
- Web Design Leaves | Prism.js でシンタックスハイライト
- 大変丁寧なご説明で勉強になりました
- JCE | Code Sample
- エディターのJCEにはPrism.jsライブラリを利用したCode Sampleというプラグインが用意されています