1. ホーム
  2. Web プログラミング
  3. ウェブ編集者

fckeditor エディタでのカスタムページ区切り

2022-01-01 21:01:51

ここでは、スクリプトホームエディタリファレンスいくつかの記事を整理するために特別に、友人より少しサポートを使用します。

編集部が改ページを制御する際に、手動で改ページを挿入するのが面倒だったため、FCKで改ページを挿入する際の挿入文字を
によって修正されました。
開く /editor/js/
fckeditorcode_gecko.js と fckeditorcode_ie.js を検索してください。
fckには2つのjsファイルがあり、fckeditor_code_gecko.jsは非IE用です。そのため、2つのjsファイルを変更する必要があります。
これで将来的にページネーションを挿入しやすくなるので、こんな大きな文字列は必要ない。
見つけてください。
var FCKPageBreakCommand=function(){this.Name='PageBreak';};FCKPageBreakCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep(); var e=FCK.EditorDocument.createElement('Div')このコマンドは、FCKページブレーク・コマンドです。
と続く文字は、自分のページの改行に合わせて変更するだけです。

fck ページブレーク修正

     FKCで追加されたデフォルトのページブレークは、 <div style="page-break-after: always"><span style="display: none">&nbsp;</span> </div>.B です。

      記事をページ分割するために、String.split("pagination")メソッドで記事をページ分割してString型の配列を返していますが、ダブルクォート同士は入れ子にできないので、split()メソッドのパラメータを設定する方法はありません。
      デフォルトのページネーション文字を変更する方法。

      jsファイルを探します。fckeditor/editor/js/ ディレクトリの下に、修正が必要な js ファイルが二つあります: fckeditorcode_ie.js (IE ブラウザ用の設定), fckeditorcode_gecko.js (IE 以外のブラウザ用の設定).
      jsファイルから以下のコードを探し、変更してください。

  var FCKPageBreakCommand=function() 
   {this.Name='PageBreak';}; 
  FCKPageBreakCommand.prototype.Execute=function() 
   {FCKUndo.SaveUndoStep(); 
  var e=FCK.EditorDocument.createElement('DIV'); //here is the creation of <div> tag, no need to change here 
  e.style.pageBreakAfter='always'; //here is the style for <div> add it, remove it. 
  e.innerHTML='<span style="DISPLAY:none">&nbsp;</span>'; 
//here is the content added in the <div>, modify it; mine is modified to e.innerHTML='[jb51page]'; that is, only one space;



      保存して、投稿を追加し直しても変化なし、保存してデータを見ると、改ページ位置が、<div>[jb51page]</div>に変化しています。
      記事のページネーションはsplit("<div>[jb51page]</div>")メソッドで分割することが可能です。

以下のメソッドは、dedecmsから参照されています。
fckeditorのページネーションに関する記述を修正する場合は、必ずオリジナルのものを読むようにしてください。直接上書きすると、問題が発生しやすくなります。

dedecms メソッドです。

コピーコード コードは以下の通りです。

var FCKPageBreakCommand=function(){this.Name='PageBreak';};
FCKPageBreakCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();
var e=FCK.EditorDocument.createElement('P');e.innerHTML='[jb51page]';

Scripting Homeの考え方。

コピーコード コードは以下の通りです。

var FCKPageBreakCommand=function(){this.Name='PageBreak';};
FCKPageBreakCommand.prototype.Execute=function(){FCKUndo.SaveUndoStep();
FCK.EditorDocument.selection.createRange().text='[jb51page]';

注)使用しているバージョンの関係で、FCKUndo.SaveUndoStep()があり、これが付いていないとエディタが表示されません。皆さん必要に応じて修正してください。

後者は、dedecmsが追加した小さな関数を見つけたので、それを参考にするとよいでしょう

var FCKLineBrCommand=function(){this.Name='LineBr';};
FCKLineBrCommand.prototype.Execute=function(){FCK.EditorDocument.selection.createRange().pasteHTML("<br/>");};
FCKLineBrCommand.prototype.GetState=function(){return 0;}

var FCKQuoteCommand=function(){this.Name='Quote';};
FCKQuoteCommand.prototype.Execute=function(){
	var quoteString = "<table style='border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: # cccccc 1px dotted; border-bottom: #cccccc 1px dotted' cellspacing=0 cellpadding=6 width='95%' align=center border=0>\r\n";
 quoteString += "<tr><td style='word-wrap: break-word' bgcolor='#fdfddf'>\r\n<font color='#FF0000'>Here's the quote:</ font><br>\r\n";
 quoteString += "</td></tr></table>\r\n";
	FCK.EditorDocument.selection.createRange().pasteHTML(quoteString);
};
FCKQuoteCommand.prototype.GetState=function(){return 0;}