‘程序代码’ 分类的存档

一直都在用wordpress的HTML编辑器,经常要添加链接,可是HTML编辑器里的添加链接按钮并没有“在另一窗口打开”这一选项。于是修改其js源码解决之。
方法如下:
打开wp-includes/js/quicktags.js,查找

查看代码 JAVASCRIPT
1
if(a){edButtons[c].tagStart='<a href="'+a+'">';

修改为:

查看代码 JAVASCRIPT
1
if(a){edButtons[c].tagStart='<a href="'+a+'" target="_blank">';

2011年7月3日21:36 | 评论关闭
分类: 程序代码
标签: ,

WordPress3.1版本发布有一段时间了。该版本不仅仅有自动保存历史版本的功能(通常都用不着,还会造成一些垃圾数据),还增加了一个自动保存草稿的功能。你每次点击”add new”时都会在post表中保存一条状态为“auto-draft”的后台不可见记录,同样会造成一些垃圾数据以及ID的不连续性。

为保证尽量减少数据库中的垃圾和保持日志ID的连续性,人们想了很多办法,各显神通。但大部分都是采用插件形式。插件形式仅仅能禁止日志的历史版本,却对自动插入的状态为”auto-draft”的记录无能为力。而且这种记录并不能在wordpress的后台看到。对于追求完美和有洁癖的人来说,这些记录实在是很烦人。

禁止自动生成 auto-draft 的不可见草稿:
在wp-admin/includes/post.php中,从第374行开始,有一个if判断,代码如下:

1
2
3
4
5
6
7
8
if ( $create_in_db ) {
                // Cleanup old auto-drafts more than 7 days old
                $old_posts = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date" );
                foreach ( (array) $old_posts as $delete )
                        wp_delete_post( $delete, true ); // Force delete
                $post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
                $post = get_post( $post_id );
} else {

解释一下这段代码的功能,首先,清除七天以前的自动草稿,然后插入一条新草稿,如果你继续写文章并发布,那么这条草稿就被使用了,包括在后台首页有一个快速发布,也用到了这个。但如果你仅仅是点击了new post(添加文章),接下来没有输入任何内容就跳到别的页面去了或关闭了,此时仍然会生成一个自动草稿,而这个草稿,是后台不可见的,是垃圾数据。

所以修改了一下代码,将这个if判断中的内容替换成以下内容,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
if ( $create_in_db ) {
        // modify by akii start
        global $current_user;
        $post_auto_draft = $wpdb->get_row( "SELECT * FROM $wpdb->posts WHERE post_status = 'auto-draft' AND post_author = $current_user->ID ORDER BY ID ASC LIMIT 1" );
        if ($post_auto_draft){
            $post = $post_auto_draft;
        } else {
            $post_id = wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) );
            $post = get_post( $post_id );
        }
        // modify by akii end
} else {

原理及说明:当数据库中有一条或多条状态为”auto-draft”的自动草稿时,取ID最小的,新文章即使用此条记录。如果没有此种类型的数据,才会新插入一条数据。并且查询数据时是根据当前的用户来判断,不会出现多用户时出错。这样就可以避免了自动草稿(auto-draft)的冗余垃圾数据。保证了日志ID的连续性。但最后我要提醒一句,如果你在日志中添加了附件,如图片,那么该图片也会占用一条数据,即一个连续的ID,所以,如果你以ID形式,发现日志有时候不是连续的ID了,那么,有可能是你日志的附件占用了临近的ID。

2011年3月5日22:19 | 评论关闭
分类: 程序代码
标签:

WordPress一个让人很蛋疼的功能在编辑文章的时候默认自动保存草稿,这一点会造成服务器的负担加重,影响网页加载速度,另外,产生的草稿文件也会使数据库过于庞大,维护不便。还会使得文章ID不连续,让人头疼。
在以前的版本使用Disable Autosave插件就可以搞定,现在3.0.1下不好使了。
解决方法:在wp-config.php文件中加入

1
2
define('WP_POST_REVISIONS', false);
define('AUTOSAVE_INTERVAL',999999999);

这两行代码,然后编辑wp-admin/includes/post.php文件,在

1
if ( $create_in_db ) {

语句之前加入一行

1
$create_in_db = false;

搞定。

2010年8月23日22:57 | 评论关闭
分类: 程序代码
标签:

本来想把用C#写的程序重写移植到win32平台的,但是感觉重写好累,而且不是很熟练,就想着能不能在未安装.net的机器上运行,有需就有求,嘎嘎,百度了一会,已经有各位老大们已经在讨论用飞信的虚拟机平台来进行加载运行.net程序了,于是自己就想着去尝试着去做一下。
(PS:飞信的就是在.net平台上开发的,不同的是飞信做了一个.net虚拟机的平台,这样就能在非安装.net的机器上运行了)

由于启动文件要在win32上运行,所以就用了VC++6来进行写程序了,使用该启动程序来进行启动外部程序(我们的.net程序)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "stdafx.h"
 
int APIENTRY WinMain(HINSTANCE hInstance,
         HINSTANCE hPrevInstance,
         LPSTR lpCmdLine,
         int nCmdShow)
{
   //HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727
 
   HKEY hKey;
   LPCTSTR path="SOFTWARE\\Microsoft\\.NETFramework\\v2.0.50727";
   //打开注册表键,查看系统是否安装了.net Frameworkv2.0
 
   LONG lResult=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,path,0,KEY_READ,&hKey));
   ::RegCloseKey(hKey);
   if(!lResult==ERROR_SUCCESS)//若不是返回成功
   {
      WinExec("FetionVM.exe myapp.exe", SW_SHOW);
   }
   else
   {
      WinExec("myapp.exe",SW_SHOW);
   }
   return 0;
}

通过读取注册表看看有没有安装.net2.0(net3.5增加了新功能,核心还是2.0,所以2.0就足够运行了),如果有,就直接运行了,就不使用虚拟机加载了。
然后把飞信的一些东东“借”过来用了哈,文件在D:\Program Files\China Mobile\Fetion\VMDotNet\v2.0.50727(把这个目录下的文件全部考走)
然后把这些文件和release的exe放到一起。
这些工作完成后,就可以进行打包了
安装包文件10M左右,对比过去单个exe的80Kb来说是大了不少,不过这样对于一个不想装190多M的.net库的人来说,很值了

——————————————————————————–

飞信虚拟机运行.net 程序的方法在网上已经有很多文章了,就不再说了.
飞信虚拟机不太好支持数据库,这里就说一下让飞信虚拟机支持数据库的方法.
让飞信虚拟机支持使用Access的mdb数据库,即可以使用System.Data命名空间下的类和方法

需要使用以下6个dll.
1.System.Data.dll
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll
2.Microsoft.VC80.CRT.manifest
飞信安装目录可以找到(已经在虚拟机目录了,但还是要,具体原因就不知为什么了)
3.System.EnterpriseServices.dll
4.System.EnterpriseServices.Thunk.dll
5.System.EnterpriseServices.Wrapper.dll
在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\目录下
6.System.Transactions.dll
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Transactions.dll

这6个dll跟你的.net程序放一个目录就OK了.
比如说:
安装飞信2008后,找到安装目录,
留下 VMDotNet 目录 和 Fetion.exe ,其它全删除
你的程序改名为 FetionFx.exe ,相应的mdb数据库也复制过来.再把上面说的6个dll也复制过来.
双击Fetion.exe就可以运行你的程序了.

注:GdiPlus.dll(也可以拷到跟前面6个dll相同的目录,win2000缺少GDP+,有它才能运行)
飞信目录可以找到.
类似原因.在2000下运行,你可能还需要升级mdac.
net2.0需要的是mdac 2.6以后版本的.需2000自带的是mdac2.5版.
直接google.谷歌搜索mdac升级就可以找到一大把升级下载.

2010年6月11日16:40 | 评论关闭
分类: 程序代码
标签: , ,

在这段wordpress建站历程中,曾经遇到这样类似的错误提示:

Fatal error: Allowed memory size of 33554432 bytes exhausted …

出现错误怎么办呢?逅客百度Google找寻了下,大概意思就是提示wordpress内存不足。根据问题导致原因所不同,大概有这么几个解决办法。

一、如果是php.ini中限制的(前提是空间支持ini):
1、首先在public_html 目录创建文件 php.ini,添加以下代码:

1
memory_limit = 88M

然后在根目录下修改.htaccess文件,添加下面代码:

1
suPHP_ConfigPath /home/username/public_html/

2、同样是修改php.ini
先在网站根目录下,建立一个php.ini文件,写入下面这句:

1
memory_limit = 88M

接着再到网站根目录下修改.htaccess这个文件,写入下面这句:

1
SetEnv PHPRC /home/host1/public_html/usr1/

(unix path to the directory where php.ini is)
(keep the slashes)

二、如果是因为wordpress插件安装过多导致的。一般停用一些wordpress插件即可解决问题。如果不想停用插件,也可以采取放宽内存限制的方法:

1、修改WP配置文件。

编辑wp-config.php这个文件,在加上一句:

1
define('WP_MEMORY_LIMIT', '88M');

上面88M这个数字可根据情况修改为更大数值,比如168M。

2、打开wp-settings.php在第十三行找到如下语句:

1
define('WP_MEMORY_LIMIT', '32M')

将其中32修改为更大数值即可。

2010年5月7日22:09 | 评论关闭
分类: 程序代码

修改下列代码相应位置并保存为.vbs脚本

1
2
3
4
5
6
on error resume next 
set sysenv = CreateObject("WScript.Shell").Environment("user") 
'系统环境变量的数组对象Environment("user")或Environment("system")
sysenv.Remove("zm")        '删除变量zm
sysenv("zm")="%USERPROFILE%\桌面"       '添加变量zm
msgbox "添加成功!",64,"提示"

使用VBS脚本设置系统环境变量不重启

2010年5月6日19:16 | 评论关闭
分类: 程序代码
标签: ,

兼容IE7、IE8、FF等主流浏览器的多标签选项卡和滑动门菜单,基于CSS+JS技术实现,简洁漂亮,千万不要错过,用到一张背景图片,您可以自行下载到本地,本选项卡是大网站扒下的,而且好多网站都有用过,绝对值得收藏的一款点触式滑动门。
预览:
tab_biaoqianxuanxiangka.html
huadongmen.html
阅读全文…

2010年3月28日15:47 | 评论关闭
分类: 程序代码

第一步、用photoshop等图形处理工具制作一个小日历效果的图标,一般为45*50,这个根据自己主题而定,上传到主题下的图片文件夹。

第二步、用EditPlus打开你所启用的主题的index.php文件。(ps:每次写文章,都要提到这一步,因为这步涉及到wordpress的编码问题,不得马虎。)找到标题这一行:

1
<h2><a class="title" href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2>

在这一行前插入以下代码:

1
2
3
4
<div class="contentdate">
	<h3><?php the_time('m'); ?> - <?php the_time('y'); ?></h3> 
	<h4><?php the_time('d'); ?></h4>
</div>

这两行的含义请参考:wordpress中如何调用时间及时间格式汇总

第三步、接下了就是通过强大的css来控制这个能够让你的页面焕发盎然生机的WordPress标题小日历效果了。打开主题style.css,在其中加入一下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*标题日历图标*/
 .contentdate {
    background: #FFFFFF url(img/date.gif);
    background-repeat: no-repeat;
    float: left;
    width: 40px;
    height: 45px;
    margin-right: 3px;
    padding: 0px;
}	
 .contentdate h3 {
    color: #FFFFFF;
    font-size: 11px;
    font-weight: normal;
    padding-top: 2px;
    text-align: center;
    margin: 0px;
    text-transform: uppercase;
}	
 .contentdate h4 {
    color: #999999;
    font-size: 18px;
    font-weight: bold;
    padding-top: 5px;
    margin: 0px;
    text-align: center;
}

搞定收工!

2010年2月21日14:59 | 评论关闭
分类: 程序代码
标签:

周数
W:ISO-8601格式年份中的第几周,每周从星期一开始(PHP 4.1.0新加入),例如:42(当年的第42周);


d:月份中的第几天,有前导零的两位数字,例如01 到 31;
D:星期中的第几天,以文本表示,截取对应英文名称的前三个字母,例如Mon到Sun;
j:月份中的第几天,没有前导零,例如1 到 31;
l(L的小写形式):星期几,完整的文本格式,例如Sunday到Saturday;
N:ISO-8601格式数字表示的星期中的第几天(PHP 5.1.0新加入),例如1(表示星期一) 到7(表示星期日);
S:每月天数后面的英文后缀,2 个字符,例如st,nd,rd和th,可以和j一起使用;
w(W的小写形式):星期中的第几天,数字表示,例如0(表示星期日) 到 6(表示星期六);
z(Z的小写形式):年份中的第几天,例如0 到 366;
阅读全文…

2010年2月21日14:52 | 评论关闭
分类: 程序代码
标签:

用css制作圆角WordPress tab导航栏
圆角导航栏标签
这里我们需要用到四张图片,其中各有两张用于当前导航栏状态和激活之后的导航栏状态样式。我将其命名为navleft,navright和avleft_active,navright_active.其中navright和navright_active应该足够长,以适应那些长的分类目录或者是分
类页面。
阅读全文…

2010年2月21日14:28 | 评论关闭
分类: 程序代码
标签: ,