DedeCms 5.7 でコードの強調表示を実装する方法

藏色散人
リリース: 2019-12-26 09:49:48
オリジナル
2136 人が閲覧しました

DedeCms 5.7 でコードの強調表示を実装する方法

DedeCms 5.7 でコードの強調表示を実装するにはどうすればよいですか?

ブログ Web サイトを構築する場合でも、CMS タイプの Web サイトを構築する場合でも、その多くはコードの強調表示が必要です。Dreamweaver CMS は、中国で最も優れた CMS Web サイト構築システムの 1 つです。 WordPress などのプラグインが利用可能です。私は最新の dedeCMS 5.7 を使用しています。長い間インターネットで情報を探してきました。ほとんどの情報は CKEditor と SyntaxHighlighter の統合に関する記事を書いています。ただし、dedecms には ckeditor が統合されています、通常は config.js の ckeditor のみを対象とします。変更内容は異なります。

推奨学習: 梦Weavercms

なので、自分で考えて修正するしかないので、ウェブマスターの友人の参考のために方法を書き留めておきます:

1. まず、SyntaxHighlighter の公式 Web サイトにアクセスしてダウンロードします (URL: http://alexgorbatchev.com/SyntaxHighlighter/download/)。バージョン 2.1 をダウンロードすることをお勧めします。バージョン 3.0 は自動行折り返しをサポートしていないようです。ここではバージョン 2.1.382 を使用します。ダウンロードしたファイルを syntaxHighlight フォルダーに解凍し、不要なファイルを削除し、script フォルダーと style フォルダーだけを残します。

2. 新しいダイアログ フォルダーを作成し、その中に syntaxhighlight.js という名前のファイルを作成します。コードが大きすぎるため、投稿するのは適切ではありません。syntaxhighlight.js を直接ダウンロードしてください

変更したい場合 コード部分のスタイルは、以下のコードの

タグ内のスタイルを変更してください。

コードは次のとおりです:

onOk : function() { 
var i = this.getParentEditor(); 
var h = i.getSelection(); 
var g = h.getStartElement(); 
var l = g && g.getAscendant("pre", true); 
var j = f(); 
this.commitContent(j); 
var k = e(j); 
var m = CKEDITOR.dom.element 
.createFromHtml(&#39;<table style="border:1px solid #EAED9C;width:660px;"><tr><td><pre class="&#39; + k + &#39;">&#39; 
+ c(j.code) +"
ログイン後にコピー
"); if (l) { m.insertBefore(l); l.remove() } else { i.insertElement(m) } },

3. 次に、syntaxhighlight.gif 画像ファイルを保存する新しい画像フォルダーを作成します。画像ファイルはエディターのツールバーに表示されます。16 を使用できます。 *16 ピクセル. 画像

4. 言語パックである新しい lang フォルダーを作成します. その中には 2 つのファイルがあります, 1 つは中国語の cn.js で、もう 1 つは英語の en.js です. コードの内容

en.js コードは次のとおりです:

コードは次のとおりです:

CKEDITOR.plugins.setLang(&#39;syntaxhighlight&#39;, &#39;en&#39;, 
{ 
syntaxhighlight: 
{ 
title: &#39;Add or update a code snippet&#39;, 
sourceTab: &#39;Source code&#39;, 
langLbl: &#39;Select language&#39;, 
advancedTab: &#39;Advanced&#39;, 
hideGutter: &#39;Hide gutter&#39;, 
hideGutterLbl: &#39;Hide gutter & line numbers.&#39;, 
hideControls: &#39;Hide controls&#39;, 
hideControlsLbl: &#39;Hide code controls at the top of the code block.&#39;, 
collapse: &#39;Collapse&#39;, 
collapseLbl: &#39;Collapse the code block by default. (controls need to be turned on)&#39;, 
showColumns: &#39;Show columns&#39;, 
showColumnsLbl: &#39;Show row columns in the first line.&#39;, 
lineWrap: &#39;Disable line wrapping&#39;, 
lineWrapLbl: &#39;Switch off line wrapping.&#39;, 
lineCount: &#39;Default line count&#39;, 
highlight: &#39;Highlight lines&#39;, 
highlightLbl: &#39;Enter a comma seperated lines of lines you want to highlight, eg <em>3,10,15</em>.&#39; 
} 
});
ログイン後にコピー

cn.js コードは次のとおりです:

コードは次のとおりです:

CKEDITOR.plugins.setLang(&#39;syntaxhighlight&#39;, &#39;cn&#39;, 
{ 
syntaxhighlight: 
{ 
title: &#39;添加或更新代码&#39;, 
sourceTab: &#39;代码&#39;, 
langLbl: &#39;选择语言&#39;, 
advancedTab: &#39;高级&#39;, 
hideGutter: &#39;隐藏分割线&#39;, 
hideGutterLbl: &#39;隐藏分割线和行号&#39;, 
hideControls: &#39;隐藏工具栏&#39;, 
hideControlsLbl: &#39;隐藏浮动工具栏&#39;, 
collapse: &#39;代码折叠&#39;, 
collapseLbl: &#39;默认折叠代码块 (需要启用工具栏)&#39;, 
lineWrap: &#39;自动换行&#39;, 
lineWrapLbl: &#39;关闭自动换行&#39;, 
autoLinks: &#39;自动链接&#39;, 
autoLinksLbl: &#39;不自动转换超链接&#39;, 
lineCount: &#39;起始行号&#39;, 
highlight: &#39;高亮行号&#39;, 
highlightLbl: &#39;输入以逗号分隔的行号, 如 <em>3,10,15</em>.&#39; 
} 
});
ログイン後にコピー

5. 新しい plugin.js ファイルを作成します。このファイルは ckeditor プラグインに必要なファイルであり、プラグインの構成がいくつか含まれています。

コードは次のとおりです:

CKEDITOR.plugins.add("syntaxhighlight", { 
requires : [ "dialog" ], 
lang : [ "cn" ], 
init : function(a) { 
var b = "syntaxhighlight"; 
var c = a.addCommand(b, new CKEDITOR.dialogCommand(b)); 
c.modes = { 
wysiwyg : 1, 
source : 1 
}; 
c.canUndo = false; 
a.ui.addButton("Code", { 
label : a.lang.syntaxhighlight.title, 
command : b, 
icon : this.path + "images/syntaxhighlight.gif" 
}); 
CKEDITOR.dialog.add(b, this.path + "dialogs/syntaxhighlight.js") 
} 
});
ログイン後にコピー

6. dedecms 5.7 には dedepage プラグインが統合されているため、それが使用されます ckeditor カスタム プラグインを追加します。 /ckeditor/dedepage フォルダーで、plugin.js ファイルを開き、最後に次を追加します:

requires: ['syntaxhighlight']、syntaxhighlight はコード ハイライト プラグインのファイルです。フォルダー名、コード追加後の内容は次のとおりです。

[code] 
// Register a plugin named "dedepage". 
(function() 
{ 
CKEDITOR.plugins.add( &#39;dedepage&#39;, 
{ 
init : function( editor ) 
{ 
// Register the command. 
editor.addCommand( &#39;dedepage&#39;,{ 
exec : function( editor ) 
{ 
// Create the element that represents a print break. 
// alert(&#39;dedepageCmd!&#39;); 
editor.insertHtml("
"); 
} 
}); 
// alert(&#39;dedepage!&#39;); 
// Register the toolbar button. 
editor.ui.addButton( &#39;MyPage&#39;, 
{ 
label : &#39;插入分页符&#39;, 
command : &#39;dedepage&#39;, 
icon: &#39;images/dedepage.gif&#39; 
}); 
// alert(editor.name); 
}, 
requires : [ &#39;fakeobjects&#39; ], 
requires : [&#39;syntaxhighlight&#39;] 
}); 
})(); 
[/code]
ログイン後にコピー

7. /include/ckeditor/ckeditor.inc.php ファイルを変更し、変更後に $toolbar['Basic'] 配列の最後の行に要素 Code を追加します。コードは次のとおりです:

コードは次のとおりです:

$toolbar[&#39;Basic&#39;] = array( 
array( &#39;Source&#39;,&#39;-&#39;,&#39;Templates&#39;), 
array( &#39;Cut&#39;,&#39;Copy&#39;,&#39;Paste&#39;,&#39;PasteText&#39;,&#39;PasteFromWord&#39;,&#39;-&#39;,&#39;Print&#39;), 
array( &#39;Undo&#39;,&#39;Redo&#39;,&#39;-&#39;,&#39;Find&#39;,&#39;Replace&#39;,&#39;-&#39;,&#39;SelectAll&#39;,&#39;RemoveFormat&#39;), 
array( &#39;ShowBlocks&#39;),array(&#39;Image&#39;,&#39;Flash&#39;),array(&#39;Maximize&#39;),&#39;/&#39;, 
array( &#39;Bold&#39;,&#39;Italic&#39;,&#39;Underline&#39;,&#39;Strike&#39;,&#39;-&#39;), 
array( &#39;NumberedList&#39;,&#39;BulletedList&#39;,&#39;-&#39;,&#39;Outdent&#39;,&#39;Indent&#39;,&#39;Blockquote&#39;), 
array( &#39;JustifyLeft&#39;,&#39;JustifyCenter&#39;,&#39;JustifyRight&#39;,&#39;JustifyBlock&#39;), 
array( &#39;Table&#39;,&#39;HorizontalRule&#39;,&#39;Smiley&#39;,&#39;SpecialChar&#39;), 
array( &#39;Link&#39;,&#39;Unlink&#39;,&#39;Anchor&#39;),&#39;/&#39;, 
array( &#39;Styles&#39;,&#39;Format&#39;,&#39;Font&#39;,&#39;FontSize&#39;), 
array( &#39;TextColor&#39;, &#39;BGColor&#39;, &#39;MyPage&#39;,&#39;Code&#39;) 
);
ログイン後にコピー

この時点で、エディタの変更は完了しました。変更後の syntaxhighlight フォルダー ファイルのディレクトリ構造は次のとおりです:

DedeCms 5.7 でコードの強調表示を実装する方法

syntaxhighlight フォルダーを /include/ckeditor/plugins/ フォルダーにアップロードし、バックエンドを開き、試す記事を追加して、図に示すボタンが画面上に表示されるかどうかを確認します。エディターの最後の行:

DedeCms 5.7 でコードの強調表示を実装する方法

ボタンをクリックすると、以下に示すダイアログ ボックスが表示され、コードを入力できます。詳細オプションに切り替えて、コードの強調表示を設定できます。 :

DedeCms 5.7 でコードの強調表示を実装する方法

8. ただし、これだけでは不十分です。強調表示されたブラシ JS ファイルと CSS ファイルを記事テンプレート ファイル /templets/default/article_article.htm に導入する必要もあります。ファイルには大量の JS を導入する必要があるため、インポートされたコードを タグの前に配置し、前の Web ページが読み込まれるのを待ってから、読み込んで表示することをお勧めします。

コードは次のとおりです:

<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shCore.js"> </script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shBrushJava.js"></script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shBrushJScript.js"></script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shBrushPhp.js"></script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shBrushScala.js"></script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shBrushSql.js"></script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shBrushVb.js"></script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shBrushXml.js"></script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shBrushBash.js"></script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shBrushCpp.js"></script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shBrushCSharp.js"></script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/cripts/shBrushCss.js"></script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shBrushDelphi.js"></script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shBrushDiff.js"></script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shBrushGroovy.js"></script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shBrushPlain.js"></script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shBrushPython.js"></script> 
<script type="text/javascript" src="/include/ckeditor/plugins/syntaxhighlight/scripts/shBrushRuby.js"></script> 
<link type="text/css" rel="stylesheet" href="/include/ckeditor/plugins/syntaxhighlight/styles/shCore.css"/> 
<link type="text/css" rel="stylesheet" href="/include/ckeditor/plugins/syntaxhighlight/styles/shThemeDefault.css"/> 
<script type="text/javascript"> 
SyntaxHighlighter.config.clipboardSwf = &#39;/include/ckeditor/plugins/syntaxhighlight/scripts/clipboard.swf&#39;; 
SyntaxHighlighter.all(); 
</script>
ログイン後にコピー

最終的に公開および生成された記事ページのレンダリングは次のとおりです:

DedeCms 5.7 でコードの強調表示を実装する方法

もちろん、これは統合にはいくつかの欠点もあります。HTML ページに大量の JS ファイルが導入される可能性があり、読み込みが遅い場合があります。また、スケーラビリティが強力ではありません。プラグインも随時最適化します。すべてのネチズンがコメントを提供できることを願っています。

以上がDedeCms 5.7 でコードの強調表示を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート