标签/Tag为[SiteLog]的文章 [ 1/4 ]

[SiteLog]全站 https 的尝试和MT相应修改

This is a sitelog of Easun.org.

ssltest of easun.org

貌似已经落伍了。。 看见大家的网站已经统统迁移到了 https ,也是,更安全貌似也更流行?

研究了一番,最后也图省事。 干脆在 腾讯云 上申请免费的 DV证书 并下载到自己的服务器完事,其过程乏味无趣,也就一笔略过。
配置完后上 https://www.ssllabs.com/ssltest/ 测试一下。达到 A+ 为宜。

评论模式的小小改变和JS重写 ,,

This is a sitelog of Easun.org.

因为 PSGI 运行 MT ,貌似服务器执行效率不再是瓶颈, so 渐渐取消了了一些为了节省资源的"优化",简单记录如下:

  1. 评论后博文重建的改变
    原来为了效率。我的博文页其实有两个。一个是博文本身,另一个是 json 格式的评论全集。 比如这个: http://easun.org/blog/archives/json/311.json。 当每次有新的评论发表时候,我的原设计是并不刷新本页,只是重载 json 罢了。 通过自写的 JSjson 中的所有评论更新一遍。 而且每个页面的评论也都加入了"刷新" 和"重载"两个按钮。 其中"刷新"的含义是重载 json 文件, "重载"则从数据库重载。 抓图如下:
    旧模式评论
    而现在,考虑再三, 取消了 json 格式的博文页, 减少一次服务器写文件的次数? 同理,改写了 JS,移除了在加载文件同时加载 json 文件。 当然,保留了从数据库直接重载评论的设计。 顺便改了一下 "重载" 的 UI,让它更 醒目 一点 (也许是更*丑陋*了一点。哈哈),抓图如下:
    新模式评论

[JS随笔]网站评论、显示界面细微调整和杂谈 ,,

随笔写下一些东西,作为 SiteLog 和备忘。

都是一些评论、显示界面的调整,一个意图:用户体验。 说的不好听的就是"路杨的强迫症又犯了",反正是折腾无极限。。

这两个月, 整个 Blog 的 js 估计被我修改过不下10次,有些是纯粹为了闭包,有些是为了美观和清晰流程。。。

简单记下曾经的修改吧。

先说前端:

  1. ajax提交优化。 所有流程彻底闭包为一个函数,和 json 显示本地评论互动,增加了提交成功后如果通过审查的话,动态加载新评论及动画,并同时重置评论提交表单。
  2. 多说评论界面优化。 绑定了原来系统的显示/隐藏评论、 显示/隐藏评论框的函数,让原来界面的操作同时操作两个系统的界面。 在 SOTHINK提示下,虽然依然设置多说评论框为默认,但是登录本地系统(包括QQ等本地系统支持的社交帐号)的朋友则显示"本地评论系统评论框"。 代码片段为:

    codevar check_mt_user = function(u) {
    if(typeof duoshuoQuery.is_ds_hide =='undefined') {
    if (!u) u = w.mtGetUser();
    if (u && u.is_authenticated) { duoshuoQuery.is_ds_hide=true;}
    else duoshuoQuery.is_ds_hide=false;
    }
    };
    
  3. 本地json评论界面优化。 彻底完成本地评论js的闭包。进一步和多说评论界面糅合, 增加了刷新重载 两个操作界面,前者从本地文本静态json cache中重新获取本地评论,后者读取 MySQL 库实时获取本地评论。

  4. 延迟加载图片重写。 也完成了一次JS闭包。 美化了延迟加载图片时候占位的动画,因为目前本站仅在评论者头像上使用延迟加载图片技术,也许大家并不能彻底体验到界面的加载过程(因为加载的太快了)。。。

上面的所有修改,均可以查看本站现有 JS 来获得代码。 本站的 JS 并无加密 :P

再说后台:

  1. 彻底解决了QQ头像、Gravatar 头像显示问题。 并缓存Gravatar 头像到本地。 不同原来的做法。这次写 插件,直接 hook 了 MT::Author::userpic_url 。 比较极端的做法。 代码如下:

    codeour($old);
    {
    no warnings 'redefine';
    no strict 'refs';
    require MT::Author;
    If ($old = MT::Author->can('userpic_url')) {
    *MT::Author::userpic_url = sub{
    my ($author) = @_;
    if ( ($author->auth_type =~ m/^QQ/ ) && $author->hint && ($author->hint=~ m!^https?://!) ) { return $author->hint. '#QQ' ;}
    my ($oldurl) = $old->(@_);
    return $oldurl if ($oldurl);
    my $email = $author->email;
    return &_hdlr_gravatar_url_mail($email);
    };
    }
    }
    
  2. 更换了后台插入图片后的显示,适应 HTML5。 这个没有写插件,直接Hacklib/MT/Asset/Image.pm 中的 can_html 。 更加的简单粗暴。 代码片段如下:

    code$text = sprintf(
    '<figure class="post-image"><img title="%s" src="%s" %s %s /></figure>',
    MT::Util::encode_html( $asset->label ),
    MT::Util::encode_html( $asset->url ),
    undef,undef,
    );
    

要查看详细的修改文件,可以移步到我的 GitHub

其他:

话说,多说 服务器维护了。 貌似以为会好一点,结果似乎结果一样? 另外,多说评论加载不出来时候,下面的加载动画一直显示的时候, 这个时候刷新就OK了,觉很奇怪, 查看了一下 log。 结果,100% 的在出现这个状态的时候,浏览器报错:

17:24:55.691 Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://easun.duoshuo.com/api/threads/listPosts.json?thread_key=301&author_key=1&url=http%3A%2F%2Feasun.org%2Fblog%2Farchives%2Fgodaddy_cpanel_perl_dbdmysql.html&title=Godaddy%20cPanel%20%E4%B8%BB%E6%9C%BA%E5%92%8C%20Perl%E6%A8%A1%E5%9D%97%20DBD%3Amysql&require=site%2Cvisitor%2Cnonce%2Clang%2Cunread%2Clog%2CextraCss&site_ims=1442293934&lang_ims=1442293934&referer=http%3A%2F%2Feasun.org%2Fblog%2F&v=15.4.27. (Reason: CORS header 'Access-Control-Allow-Origin' missing).1

干啥子嘛~~
明显的服务器响应问题。。。
判断跨域的服务端脚本的得到没有执行。。
其实listPosts.json 返回数据了,可惜被浏览器拒绝了。 难怪不显示。。。。。。
话说,抛开 服务器 判断跨域的服务端脚本的问题。 listPosts.json 难道一定要用 JSON 模式? 又不是 POST, GET 而已,换成 JSONP 模式不就万事大吉了,而且也能节省服务器的判断跨域,输出 Access-Control-Allow-Origin header。。。。。。

另外,服务器维护了, 貌似脚本的版本还是 2015-04-27 。。。。

--EOF--

[随笔]关于 JS 和 ajax 提交评论等等 ,

This is a sitelog of Easun.org.

因为 本地评论 JS 化,又重写了一遍 MTajax 提交过程。梳理了一下流程。

主要是删除了 MT 提交过程的 2次服务器认证,把第一次服务器认证(登录信息预提交验证) mtCommentSessionVerify 有限度地交给 JS + cookie

简单的说,就是设置全局变量 usernull,然后重新在 cookie 中读取 user 来判断登录信息是否正常? 然后其他的认证在 提交表格 时完成就好。 简单 JS 片段如下:

code var refresh_user = function(u) {
if (u) mtSetUser(u);
if (!u) { user = null; mtFireEvent('usersignin'); u = mtGetUser(); }
if ( u && u.is_authenticated ) { /* do nothing*/ }
else { $f.find(':input[name="sid"]').attr("value","") ; ShowCommentsOpenData(); }
};

然后发现 JQ $.ajax 的小问题:

我的 $.ajax 如下:

code$.ajax({
type: 'POST',
cache:false,
url: url,
context: el,
xhrFields: { withCredentials: true },
data: $f.serialize(),
success: successfuc,
beforeSend:beforefun,
error: errorfun,
complete:completefuc
});

本来是吧 refresh_user 写到 beforeSend 中的,但是执行的时候发现 refresh_user 中对 $f 的改变,并没有在 data: $f.serialize() 中 体现出来。 所以只好显式在 $.ajax 前调用此函数了。

笔记下来,为自己提醒。

另外,本来对 JS 全面进行 JQ 改写来着,但是实际对 form 元素操作中发现,同样对

code<form name="comments_form" id="comments-form">
<input type="hidden" name="preview" value="" />
...
</form>

中 的 name="preview"value 操作。 原来的代码是

codevar f = document['comments_form'];
if (f.preview.value == '') f.preview.value = '1';

JQ 呢? 貌似。。。。。

codevar $f = $("#comments-form");
var $preview= $f.find(':input[name="preview"]');
if ($preview.attr("value") == '') $preview.attr("value","1");

f$f 是为了方便操作预先定义好的。 貌似还是不用 JQ 操作的快一点。或者就现在这样混合用吧。。。。

另外,给 ajax 提交完成后刷新新评论搞了一段简单的 JQ 特效: 代码如下:

code var animate_item = function(id) {
var $el =$("#comments-content .comment#comment-"+id);
var _top = $el.offset().top - ( $(window).height() - $el.height() )/2;
$("html,body").animate({scrollTop:_top},1000);
$el.addClass("notice")
.animate({left:'30px',opacity:'0.2'},"slow")
.animate({left:'0px',right:'30px',opacity:'0.8'},"slow")
.animate({left:'0px',right:'0px',top:'30px',opacity:'0.2'},"slow")
.animate({left:'0px',right:'0px',top:'0px',bottom:'30px',opacity:'0.8'},"slow")
.animate({left:'0px',right:'0px',top:'0px',bottom:'0px',opacity:'1'},"slow");
var total= parseInt( $("#comments").attr("data-total"));
function c() { $el.removeClass("notice").addClass( (total%2) ? "odd":"even" ); }
$el.one('click',c).one('mouseover',c);
};

没有抓 gif ,简单完成效果如下:

jq_submit_png.png

--EOF--

[SiteLog]近日网站折腾小记 ,

8月快过去了。时间真的是。。。。
顺便记下这几天对网站的一些小小的折腾吧。

1. 多说评论显示逻辑调整:

还是要从多说说起: 路杨已经基本上实现了把所有的多说评论同步到了本地。 默认同步到多说评论处于未发布状态,防止和多说JS载入的评论形成重复评论。 定时把本地数据库的多说评论转成发布状态,以防止多说服务器抽风导致评论不显示。

但是问题来了: 怎么让同步并本地发布的同一条评论只显示一次呢? 原来的实现办法是在 多说JS 中识别这条评论是否已经本地发布,如果发布则 hook 多说JStemplates.post 函数,让它不生成这条评论
核心代码如下:

codevar DSinMTids = [];
function check_ds_in_mts() {
DSinMTids = [];
$("#comments-content div.ds-post-self").each(function()
{
if ( ( $(this).attr("data-source") == 'duoshuo' ))
{
DSinMTids.push($(this).attr("data-post-id"));
}
});
}
check_ds_in_mts();
var _D_post=DUOSHUO.templates.post;
DUOSHUO.templates.post=function (e,t){
var rs=_D_post(e,t);
if ( $.inArray(e.post.post_id, DSinMTids) != -1 return '';
/* sth others*/
return rs;
}

网站启用ajax无刷新技术(pjax)和多说的一些小技巧 ,

先说ajax无刷新技术吧
因为 Godaddy 空间中资源和国内访问速度的原因,能节省一点资源就节省一点资源吧。虽然对于传统的 ajax 来说,更新版的 pjax 可以同时写入浏览器历史( pushState )和动态更换 url 显示,但是对于我来说,貌似还有一下不足:

  1. 浏览器缓存(内存)不会释放,会让老爷机的朋友感觉到机器卡。
  2. 不利于SEO(当然比 ajax 已经很好了)。 pjax 再先进也只更新某个容器,对于 head 内的一些 meta 是不会处理的,强迫症的伤不起啊。
  3. url 虽然写进了浏览器历史( pushState ),但是在 FireFox 下用 Backspace 返回时候。很多时间只是浏览器的url变了,但是内容还需要再次刷新。

好处也就不说了。减小重复资源的http请求
言归正传,简单说说本站是怎么启用这个吧:
直接用了 defunkt/jquery-pjax 这位大神的成熟方案。对本站的链接(a)做了处理。 代码如下:

code$.getScript("http://Path/to//js/jquery.pjax.js", function() { $(function() { easun_pjax(); }); });

其中 easun_pjax(); 为核心函数。 简单如下:

codefunction easun_pjax()
{
$(document).pjax('a[target!=_blank]', '#content', {fragment:'#content', timeout:6000});
$(document).on('pjax:send', function() {
$('#content').fadeTo(700,0.0);
});
$(document).on('pjax:complete', function() { $('#content').fadeTo(700,1); });
}

这样基本完成, 如果一些需要在替换#content(<div id="content">...<div>)的内容需要 js 实现的。请在pjax:complete中(上面有示例)中重新运行一次。

成功后实例可以参见本站的各博文之间的切换。

再说多说的一些小技巧吧

用多说一段时间了。乱七八糟的改了一起。多说的自定义其实还很强的,只是官方似乎不是很重视这些小技巧? (官方现在都长草了)

  • 彻底自定义CSS。
    不是官方说的在某些位置加入CSS,而是彻底把多说的CSS 放在自己的网站。 其实很简单。就是定义duoshuoQuery.theme= 'none' 即可。
    再说的清楚点就是这样定义duoshuoQuery:
    var duoshuoQuery = { short_name: "YOURKEY", theme:'none'};

这样,多说就不会加载任何 CSS ,变成了一张白纸,自己享受重头定义本地 CSS 的乐趣吧。

  • 让评论加载不在颤抖。
    大家也许都注意到,有时间加载多说的评论会先从没有任何 CSS 样式再切换到有CSS样式。
    原来以为是 CSS 没有及时加载进来。 后来一看官方的 CSS 才知道。 CSS 根本没有定义 .ds-thread(class="ds-thread")而只定义了#ds-thread(id="ds-thread")。
    而多说的机制是找到.ds-thread 并以其做为容器加载评论文章,最后再给这个容器加上id(#ds-thread)。
    奇怪的逻辑~~ 为什么不直接以 ID 操作呢? 多说自己的不自信?
    知道原因了,让评论加载不颤抖也就很简单,把加载评论的 <div class="ds-thread" ...> 提前改成 <div class="ds-thread" id="ds-thread" ...> 就可以了。 或者,你也可以按照彻底定义CSS的办法重新对 .ds-thread 做 CSS定义。

  • pjax 动态加载 评论。
    其实也就是上面的问题的延伸。 在pjax:complete中加载即可。 代码为

    if ($('.ds-thread').length > 0) { if (typeof DUOSHUO !== 'undefined') DUOSHUO.EmbedThread('.ds-thread'); else $.getScript("//static.duoshuo.com/embed.js"); }

完整代码如下:

code$(document).on('pjax:complete', function() { $('#content').fadeTo(700,1);
if ( $('.ds-thread').length > 0 ) {
if (typeof DUOSHUO !== 'undefined') DUOSHUO.EmbedThread('.ds-thread');
else $.getScript("//static.duoshuo.com/embed.js");
}
});
}

--EOF--

[SiteLog]2015年5月6月回顾

每年的5月、6月总是很忙~ 回顾一下 Blog 情况,主要体现在以下:

  1. 网站对于 IE8/7/6 的兼容。
    从后台来看,来访的朋友中 IE8 还是占很大比例(也是,XP系统最大支持到IE8), IE6 居然也占相当比例。。 (汗,IE6 也许是最长寿的浏览器版本? )
    我迁移到Win7平台很久了。没有注意现在的网站在IE8及以下居然有网页错位和 JS 错误? 特意检测了下,调整了CSS和JS,现在基本上在 IE6/7 下面没有大的错位和JS错误,IE8下所有功能正常。

  2. Perl學習手札 - Easun.org 镜像 的移动优化。
    重构了这本书的所有页面,在保证PC界面和原来基本相同的情况下,移动端实现了自适应,方便同好者移动端阅读。

  3. 彻底修复和解决了 QQ 登录的一系列问题。
    XX的腾讯, API写的回调地址和浆糊一样而且处处矛盾。只能猜测+测试,而每次改动还需要审核~
    其实解决的办法就是回调地址*并不是API文档宣称的不加 http(s):// 的纯域名,而是必须加上 http(s)://的具体到脚本的全url* 才可以。

  4. 对 Ajax 评论做了跨域处理。
    [SiteLog]JQ AJAX 跨子域Post再总结。 同时对 JS 脚本重写和闭包处理,以方便移植。同时,对于多说附件JS 也做了重写和闭包处理。

7月也许会继续优化网站, 自娱自乐莫过于此。 写下来做个记录。

--EOF--

[SiteLog]JQ AJAX 跨子域Post再总结 ,

为了配合 CDN 前台。 后台的域名改成了 mt.easun.org/cgi-bin。 之所以启用子域而不是独立域名,是因为同域不同子域间可以天然共享 cookie ,而MT的POST必须带有 cookie ,不然登录信息验证不过。

测试一下正常的POST,没有任何问题。cookie 由于 CookieDomain 为 .easun.org ,所以cookie信息正常传递给了 mt.easun.org 后台。

但是接下来用 JQ $.post 进行 AJAX POST 的时候,就出现跨域问题了。 如果是Get,很简单,可以参考我上篇( [JQ+Perl]JQ AJAX跨域请求HTML/JS页面内容总结 )解决之。 POST 就必须设置跨域请求了。

不想回归 iframe 。幸好服务器部分配置可以自己控制。在后台脚本目录建立 .htaccess,内容如下:

code<IfModule mod_headers.c>
Header set Access-Control-Allow-Credentials: true
Header set Access-Control-Allow-Origin "http://easun.org"
</IfModule>

这下应该可以 $.post 了吧?

但是结果依然很悲哀,这次 POST 成功, 但是 JQ 并不传递 Cookie。导致身份认证出错。 Google之。发现跨域(包括子域), 如果要传递Cookie, JQ AJAX 还需要手动发送认证凭证,设置 withCredentials ,这样才会传递 Cookie.

根据这些信息。 重写 $.post$.ajax 模式,代码如下:

code$.ajax({
type: 'POST',
cache:false,
url: url,
data: $("#comments-form").serialize(),
success: function(data){
if (f.preview.value =='1' ) { EasunisPreReturn(data);}
else {EasunisPostReturn(JSON.parse(data));}
},
xhrFields: { withCredentials: true },
});
return false;

调试之,一切OK。

参考资料:

1.【前端笔记】使用ajax跨域withCredentials的作用

后记:

对于IE8,9 来说。JQ AJAX 跨子域Post 即使设置了上述也会失败。原因很奇葩,跨域提交需要使用 XDomainRequest 对象。

幸好有 JQ 插件 jQuery-ajaxTransport-XDomainRequest 可以解决。 在 $.ajax 前引入:

code<!--[if lte IE 9]>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js"></script>
<![endif]-->

同时,为了兼容出错信息,当$.ajax 失败的时候,设定正常方式POST。虽然这样界面乱了,但是保证功能正常。

codeerror: function(){ f.submit(); }

--EOF--

[多说]不本地化embed.js使多说评论显示UA ,

title.jpg

个性化 多说显示,让多说显示评论者的 UA,貌似教程很多。


比如: 我的那些事 - 多说回复后显示浏览器及操作系统信息(Useragent) 这里。


但是方案都是 本地化 embed.js 然后修改 embed.js 完成。

不想本地化 embed.js ,搜索了一下网络, 发现有不本地化 用 JS Hook 方式修改的办法,见
https://github.com/huhuime/make_duoshuo_show_ua

但是,根据这个修改后无效, 检测了多说的 embed.js 代码,发现是因为版本更新导致变量失效,修改 e.agent 为e.post.agent 即可。

简单整理如下。

在 多说 自己的 JS 导入后面的任意位置添加以下代码:

<script src="您的网站地址/ua-parser.min.js"></script>

<script type="text/javascript">
    if (typeof DUOSHUO !== 'undefined')hookDUOSHUO_tp();
    else $('[src="http://static.duoshuo.com/embed.js"]')[0].onload=hookDUOSHUO_tp;
    function hookDUOSHUO_tp(){
        var _D_post=DUOSHUO.templates.post
        DUOSHUO.templates.post=function (e,t){
            var rs=_D_post(e,t);
            var agent=e.post.agent;
            if(agent&&/^Mozilla/.test(agent))rs=rs.replace(/<\/div><p>/,show_ua(agent)+'</div><p>');
            return rs;
        }
    }
    function show_ua(string){
        console.log(string)
        $.ua.set(string);
        var sua=$.ua;
        if(sua.os.version=='x86_64')sua.os.version='x64';
        return '<span class="this_ua platform '+sua.os.name+'">'+sua.os.name+' '+sua.os.version+'</span><span class="this_ua browser '+sua.browser.name+'">'+sua.browser.name+'|'+sua.browser.version+'</span>';
    }
    </script>

多说,社交登录评论平台 ,

This is a SiteLog for Easun.org。

 多说 是一款追求极致体验的社会化评论框,可以用微博、QQ、人人、豆瓣等帐号登录并评论。

恩,就是这样。

写下这个的原因是路杨正式启用 多说 作为本站博客的评论系统, MT 本身的 评论系统也保留。

原因很简单: MT 的留言系统资源问题。

其实在 多说 和 Disqus 之间选择的时候, 第一选择的是 Disqus,但是分析后发现, Disqus载入方式是 iframe ?

对于 iframe 我貌似有点轻度洁癖。 于是选择 多说。

分析了多说的代码, 利用 JS 把多说的评论框排版折腾的和 原来 MT 布局差不错多了。

觉得 多说 的系统的自定义和配置方面还小有瑕疵,等有空写写。

--EOF--

安吉丽娜(angelina),您意欲何为? ,

安吉丽娜(angelina),您意欲何为?

自昨天晚上8点,网站就奇慢无比,进后台频发 504 。因为没有啥可以值得关注的,就关掉电脑休息了。
今天一上班。就收到了一大堆邮件。
首先是 Godaddy 的 资源限制提醒邮件,(这个一点也不意外,昨晚卡的厉害)。
limits.png


然后是网站后台自动 locked out 了16个 IP 地址的邮件提醒。

ip_locked.png


这个就有点意外了。 MT 一般只对试图频繁后台登陆的IP做 Lock~~
小站,自娱自乐难道也有人要Crack之?
登陆后台, 查看日志,我的天。
一位叫"angelina"(也许,大概吧)的朋友利用杭州电信的 N个地址对小站进行了全面的检视,当然后台登陆也不放过。
简单抓图如下:

angelina.png

下载活动日志到本地,排序筛选仅留登陆信息也有319个 (3516个记录中的 319 个。汗)

angelina2.png


进awstats看了看, 呃,安吉丽娜,您的贡献大了。小站的来访问的前15位都是您啊。
抓图:
awstats.png

--EOF--

[SiteLog]2015年4月回顾

转眼。五一假期都已经过了。

一些琐事,随便写写。

五一短短假期, 在家宅着,啥地方也难没有去。笑看各地堵车、堵人、刻字,也算是种另类休假?

关于网站。 4月改动较多,后台模板体细微地方调整了很多遍。

不过主要的还是主页的分页显示。 修改了3版,最后稳定成现在的 ajax 方式的 在本页追加模式载入以前的文档。

CloudFlare云加速 现在其实处于取消状态, 只是 NS 服务器托管给了 CloudFlare 而已。

重新开放了TrackBack。但是 SPAM 问题没有解决。 阿郎的插件在新的MT上无法工作。

Google Analytics 在取消2个月后重新加回。

这次吧所有的 JS 统统放在了页面的尾部,应该对网页的载入速度不会有大的影响。

简单的就这些。 5月也许对博客有大的修改,自娱自乐罢了。

--EOF--

本站YSlow网站性能分析结果 ,

YSlow 是雅虎基于网站优化规则推出的一款扩展,有FireFoxChrome 、甚至浏览器书签版, 它帮助你分析并优化网站性能。

网上介绍它的资料一堆一堆的。

这里就不东施效颦,多做说明了。

我的 Firefox 装不上 YSlow,只能用其 浏览器书签版本。

对最近优化过的网站做了一次测试,还不错, 87 分。

抓图如下:

[SiteLog]终于迎来了原生的MT主页/分类页的分页 ,

 This is a SiteLog for Easun.org。

   对于静态发布的MT来说,主页/分类页 的分页很不好实现。一直以来,要在主页展示更多页面的朋友们都是利用一个  插件PageArchives  来实现。对我来说,实现这个功能实在太繁琐了点,也就懒得折腾。

今天,在测试MT5的新主题( Rainier 1.04)的时候,居然发现可以分页了。

立即查看模板,发现可以原生分页,分页由 mt-seach.cgi 完成。呃,又是这个 cgi ,看来资源大户的名气又要响亮一点了。

我的模板是在一直 在 "Professional Blog" 上修改的。 不想再次重写模板了。 直接移植吧。

其实很简单,要实现分页,必须给 <mt:Entries> 加上 search_results 选项。

[SiteLog]网站改版和移动访问优化

This is a SiteLog for Easun.org。

这也是3年以来第一次改版。 目标很单纯, 抛弃 XHTML ,改投 HTML5

耗时一周,代码基本上都是自己在改。 网站结构全部重构,但是尽量通过 CSS 让大家感觉不出来界面有大的调整 :)

主要改动如下:

  1. 结构重写,CSS也全部推翻重写。 用 HTML5 的 header section nav article aside footer 等新标签替换掉了原模板中大量的 div 标签。让他显的有意思,并大量删除了自带模板中多重嵌套的div。这样一来大大的减少了网页的容积 :P 评论框仿照 扶凯 大侠的网站,进行了仿写。 不过貌似在手机上lable标签有点变形~~
  2. 移动优化,也就是改写了CSS,利用CSS3的特性,让页面布局可以根据不同的浏览器分辨率进行自动切换,用我的 Mate7 看了一下,结果还是差强人意:)
  3. JS改写, 因为LightBox升级,jQuery 库彻底引入,自己的 ajax 提交评论以及一些自定义的JS都统统用 jQuery 库重写了。让代码更简洁。
  4. QQ登录的引入, 给整个网站加入了最热门的 QQ互联 功能,也就是用QQ帐号登录评论功能。 代码以 plugin 方式运行, 也算自己的原创 MT 插件,等稍后整理出来,于同好共享之。另外,评论登录界面也做了修改,融合了 MT 4 的列表显示来代替MT 5 的select选择。更好看意见,大家可以点击 http://easun.org/cgi-bin/mt/cp?__mode=login&blog_id=2 来看看结果。

基本上的改动就是这样了。 一些东西,比如 ajax 提交评论、后台的的防止 SPAM 的SimpleComment 0.12 等自己折腾的东西,等有时间会写成博文,方便大家也方便自己:)

--EOF--

[SiteLog]一则js错误寻找和 jQuery ,

本站的图片显示一直使用 LightBox
最近升级,才发现 LightBox悄悄迁移到了 jQuery 平台。
笑ing, jQuery 貌似越来越份额多了。

想到既然是要导入 jQuery ,干脆把自己的一些 js 也用 jQuery 重写一下,尤其是 ajax 方式提交评论的代码。
于是,打开 mt.js ,看见了大量的

var f = document['comments_form'];

于是就想当然了。把原来的代码改成
$.post("http://easun.org/path/to/mt-cms.cgi",
$.param($("#comments_form").serializeArray())
).success(function(data) {
if (f.preview.value =='1' ) { EasunisPreReturn(data);}
else {EasunisPostReturn(JSON.parse(data));}
}) ;

结果运行不能正常获取返回值,百思不的其解。
最后,打开 模板的 form 部分。发现 代码如下
<form ... name="comments_form" id="comments-form" ... >

我倒~, id 根本就不对。难怪出错。
回到 mt.js 改成
$("#comments-form")

运行,一切OK。

笔记之,给自己再次修改提个醒。

--EOF--

[SiteLog]原地满血复活以及MT升级、QQ互联接入 ,

This is a SiteLog for Easun.org。

终于, $12 付款给了 GoDaddy , 网站又回来了。 近年事情良多,加上 微信 等APP越来搞得信息碎片化, Blog 已经快想不起来写了。 但是多年的积累,貌似也不应该丢掉? 笑ing

网站基于 MT 建立,但是 6A已经不在对MT进行免费, 虽然从 MT 日本官方 依然可以下载到最新的版本,但是我还是停留在最后的免费授权版本吧。 折腾可一劝,升级到 version 5.2.12 足够了。 以后不再跟随官方升级,维护 bug 等交给自己吧。也方便自己把一些 MT Hack 直接融入。

MT 的资源占用,主要出现在 mt-search.cgi ,分析了本站以前的tags文本cache生成,貌似就快读不懂代码了。看来需要有空整理下,写出来,方便自己也方便别人。

方便网友评论和同时 Anti-Spam ,给整个网站加入了最热门的 QQ互联 功能,也就是用QQ帐号登录评论功能。 代码以 plugin 方式运行, 等运行成熟后,发布共享之。

--EOF--

[SiteLog]用Windows Live Writer 写Blog

This is a SiteLog for Easun.org

后台实在太慢了,网络不好,貌似和 DreamHost 的主机性能也有关系? 正好机器上有从来没有用过的 Windows Live Writer ,设置好了,先发一篇试试?

遗憾的是没有办法设置 basename 和 tags ,另外,上传的图片只能在 blog 下的  Windows-Live-Writer 目录,不人性化。

--EOF--

1   2   3   4