メインコンテンツに移動
Drupalのテキストフィルターにsyntaxheighlighterが改行変換フィルターより後ろに
問題点:モジュール(Syntax Heighlighter)で表示されたソースコードに改行タグ(<br>)
- 背景:Drupal7.54、Syntax Heighlighter7.x-2.0、CKEditor7.x1.17
- CKEditorインストールします
- CKEditorのプラグインSyntaxHighlighterをインストールします
- このプラグインはCKeditorのプラグインフォルダだに入れるだけで、Drupalとの関連はありません
- テキストフォーマット管理画面(ホーム » 管理 » 環境設定 » コンテンツ作成 » テキストフォーマット)でSyntax Heighlighterフィルターを有効化にします
- 編集されたソースコードがハイライトされましたが、ソースコードに改行タグ(<br>)が表示されました
テキストフォーマット管理で改行フィルターはSyntax Heighlighterの後ろにあるべき
- テキストフォーマット管理画面(ホーム » 管理 » 環境設定 » コンテンツ作成 » テキストフォーマット)の「フィルターの処理順序」で「改行をHTMLに変換 (たとえば、<br> や <p>などに) 」項目をSyntax Heighlighter項目の後ろに移動
- 再度コンテンツ画面をリフレッシュすればソースコードが正常に表示されました
必要なモジュール
- Wysiwyg - 7.x-2.1
- CKEditor - 3.x.x
- Syntax Highlighter - 7.x-2.x
- Syntax Highligther Insert - 7.x-1.0
- Alex Gorbatchev Syntax Highlighter - 3.0.83
モジュールの設定
- Wysiwyg Profilesの設定
- Admin管理画面(Home > Administration > Configuration > Content authoring > Wysiwyg profiles)でWysiwyg Profilesを開く
- CKEditorまたはTinyMCEエディターの「編集」ボタンをクリックして、エディターの詳細設定画面を開く
- 「BUTTONS AND PLUGINS 」メニューに「Insert syntaxhighlighter」タグをチェックする
Text Formatsの設定
- Admin管理画面(Home > Administration > Configuration > Content authoring > Text formats)でText Formatsを開く
- CKEditorまたはTinyMCEエディターに組み込まれたフォーマット(例:FullHTML、FiltedHTML)の「編集」ボタンをクリックして、詳細設定画面を開く
- 「Enabled filters」欄に「Syntax highlighter」をチェックして、有効化する
- フィルタの順序: 「Syntax highlighter」 ⇒ 「Convert line breaks into HTML」 (これが重要)
Syntax Highlighterの設定
- Admin管理画面(Home > Administration > Configuration > Content authoring > Syntax highlighter)でSyntax highlighterを開く
- 「Enabled Languages」欄から必要な言語を選択する
- 「Tag name」欄にある初期タグ「<pre>」を使用する
Syntax Highlighterの使用
- 新しいコンテンツ(例:Article)の作成/編集画面を開いて、「Insert Syntax Highlighter」ボタンが現れる
- 「Insert Syntax Highlighter」ボタンをクリックして、Syntax Highlighter設定画面が開かれる
- 必要な条件を設定して、「Inser SyntaxHighlighter Tag」ボタンをして、コード入力のエリアが表示される
- コード入力エリアにコードを入力して、保存ボタンを押すと、ハイライトされたコードが表示画面に現れる
問題点
- 現時点、CKEditorがうまく動作していない
- TinyMCEが動作しているが、一行ですべてのコードを表示している(原因はコードに<br>タグが自動に挿入された)
解決
- CKEditorが対応していないようで、解決方法がまだ見つかっていない。
- TinyMCEで、HTMLソース編集(<pre>タグを手動で追加)すれば、コードがうまくハイライトされている