评论功能本来是很简单的。一个表单就成了。
但是要营造舆论的和谐气氛,以及避免数据安全问题,需要加上过滤以及审核系统,那么就相对恶心点了。
不过评论还是会尽快出来的。交互功能嘛,不能少的。
13 views | 0 条评论
RSS订阅已经能够使用。鉴于站不大,决定xml用动态的,不做静态生成。暂时rss相关的东西也没有做成单独的类,算是偷懒了。
基本思想就是用Response向页面输出一个二进制流。以下是我的基本代码,没有读数据库的部分:
XmlTextWriter xmltw = null;
xmltw = new XmlTextWriter(Response.OutputStream,Encoding.UTF8);
xmltw.Formatting = Formatting.Indented;
xmltw.Indentation = 3;
xmltw.WriteStartDocument();
xmltw.WriteStartElement("rss");
xmltw.WriteAttributeString("version", "2.0");
xmltw.WriteAttributeString("xmlns:content", "http://purl.org/rss/1.0/modules/content/");
xmltw.WriteAttributeString("xmlns:wfw", "http://wellformedweb.org/CommentAPI/");
xmltw.WriteAttributeString("xmlns:dc", "http://purl.org/dc/elements/1.1/");
xmltw.WriteAttributeString("xmlns:atom", "http://www.w3.org/2005/Atom");
xmltw.WriteAttributeString("xmlns:sy", "http://purl.org/rss/1.0/modules/syndication/");
//以上rss
//以下channel
xmltw.WriteStartElement("channel");
xmltw.WriteElementString("title", "阳光海岸");
xmltw.WriteElementString("link", "http://blog.cn-sun.net");
xmltw.WriteElementString("description", "Phoenix Sun's Blog");
xmltw.WriteElementString("pubDate", DateTime.Now.ToString("r"));
xmltw.WriteElementString("language", "en-us");
xmltw.WriteElementString("copyright", "Copyright 2010");
xmltw.WriteElementString("generator", "http://blog.cn-sun.net");
//以下item
xmltw.WriteStartElement("item");
xmltw.WriteElementString("title", "测试");
xmltw.WriteElementString("link", "/Topic.aspx?ID=1");
xmltw.WriteElementString("pubDate", "Mon, 08 Feb 2010 09:31:55 +0000");
xmltw.WriteStartElement("category");
xmltw.WriteCData("测试分类");
xmltw.WriteEndElement();
xmltw.WriteStartElement("guid");
xmltw.WriteAttributeString("isPermaLink", "false");
xmltw.WriteString("http://blog.cn-sun.net/Topic.aspx?ID=1");
xmltw.WriteEndElement();
xmltw.WriteStartElement("description");
xmltw.WriteCData("测试内容");
xmltw.WriteEndElement();
xmltw.WriteEndElement();
//以上item
xmltw.WriteEndElement();
xmltw.WriteEndDocument();
xmltw.Flush();
xmltw.Close();
Response.ContentType = "text/xml";
Response.ContentEncoding = Encoding.UTF8;
Response.End();
这是参照网上的方法简化的。网上那个方法看着太头大了=。=!
8 views | 0 条评论
一个是后台发布文章标题时不能使用 < 和 > 标记的问题:
文章标题应该是纯文本。之前写的时候没有处理,使得<xxx>原样存入,输出时被浏览器当作是html标签,导致错误并不显示。
将入库时候的字符串做下html编码,用Server.HtmlEncode(string str) 对str即可。
另一个是关于页面伪静态的:当URL变化时候相对路径的东西的URL也会变化,导致不能正常显示图片和调用JS脚本等等。
修改了所有的相对路径的图片和JS脚本的路径,问题解决。
另:URL静态暂时还没做用于连接,但已经可以访问。比方说本文可以使用 http://blog.cn-sun.net/9/ 来访问。
57 views | 0 条评论
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,加上这个插件。我的是这样的:
......
64 views | 0 条评论
共可收藏至18个收藏网站。
代码基本思想是获取当前页面URL,整合到GET方式请求的参数中去。
这些代码全部在客户端执行。查看本页源文件即可获取到。
这段代码原先是Wordpress插件。原版权:http://www.thinkagain.cn/
16 views | 0 条评论
起了个大早,乘了一个多小时的车,终于到了三十九中。
考试真是太恶心了,编答案编的脑细胞死了好多。还好考场里有一半人没来,减少了我不少压力,不然真的直接放弃了。
回来还赶了个不巧。仙林的各个学校开始开学了。于是千军万马进仙林。回来费了不少劲儿。
在东站的时候5分钟不到,开出6辆10路,空的很——而进仙林的70、165和97是根本不能再上人了。就连平时空车跑来跑去的D1都要后门上车了。没有行李也不怕什么,有个地儿站就上吧。
话说这个考试真是悲剧,也不往后挪个几天,非得凑开学这几天。
围观到一辆临时变成165的10路车,边上的D1也不空到哪里去:

19 views | 0 条评论
又看了一天书,晕乎乎的。
想围观一下子大家的博客,想不到都搬到墙外去了。
墙是越造越高,翻起来没有以前利索了。
不知道哪个VPN比较好一点,谷歌赞助商那个看起来不错,但是好像很贵的样子。
暂时还是用IPv6 to IPv4的代理翻墙吧,那个速度不错~
还有就是,blog.cn-sun.net回来了。我么,一时半会儿是不会搬去国外的,大家放心看吧。。。
15 views | 0 条评论