1.首先为CKeditior添加了一个插件,用于插入[more]标记。
在CKeditor的plugins目录下新建一个文件夹,我取名pagemore,再在其中添加一个js文件plugin.js:
CKEDITOR.plugins.add( 'pagemore',
{
init : function( editor )
{
// Register the command.
editor.addCommand( 'pagemore', CKEDITOR.plugins.pagemoreCmd );
// Register the toolbar button.
editor.ui.addButton( 'PageMore',
{
label : 'PageMore',
command : 'pagemore',
icon: this.path+"images/apage.jpg"//这里是编辑器上的图标,当前是相对路径
});
},
requires : [ 'fakeobjects' ]
});
CKEDITOR.plugins.pagemoreCmd =
{
exec : function( editor )
{
// Create the element that represents a print break.
var moreObject = CKEDITOR.dom.element.createFromHtml( '[more]' );
var ranges = editor.getSelection().getRanges();
for ( var range, i = 0 ; i < ranges.length ; i++ )
{
range = ranges[ i ];
if ( i > 0 )
moreObject = moreObject.clone( true );
range.splitBlock( 'p' );
range.insertNode( moreObject );
}
}
};
这个是参照pagebreak写的,作用是换行并插入[more]标记。网上有个看起来更简单点的,但用下来报错。
要在工具栏中启用之得修改配置文件config.js,加上这个插件。我的是这样的:
config.extraPlugins = 'syntaxhighlight,pagemore';//这里注意有2个插件时,在引号里用逗号隔开
//使用自定义工具栏
config.toolbar =
[
['Source', '-', 'Code'],
['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', ],
['Undo', 'Redo', '-', 'Find', 'Replace', '-', 'SelectAll', 'RemoveFormat'],
['Image', 'Flash', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', '-', 'PageMore'],//我放到这里的
'/',
['Bold', 'Italic', 'Underline', '-', 'Subscript', 'Superscript'],
['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', 'Blockquote'],
['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock'],
['Link', 'Unlink', 'Anchor'],
'/',
['Format', 'Font', 'FontSize'],
['TextColor', 'BGColor'],
['Maximize', 'ShowBlocks']
];
2.再次在首页处理[more]标记,将其之后的内容截掉。加个静态方法,可以搞定。
public static string ShowShortContent(string content,int length)
{
if (length == -1)//全显示
{
length = content.Length;
}
else if (length == 0)//根据标签显示
{
int ml = content.IndexOf("<p>\r\n\t[more]</p>");
if (ml > 0)
{
length = ml;
}
else
{
length = content.Length;
}
}
//length的值除0和-1以外都是实际指长度
if (content.Length > length)
{
return content.Substring(0, length) + "......";
}
else
{
return content;
}
}
3.最后在内容页忽略掉[more]标记,同样静态方法。
public static string ShowContent(string content)
{
string rt = content;
rt = rt.Replace("<p>\r\n\t[more]</p>", String.Empty);
return rt;
}