WordPress 自定义侧边栏部件

2008-02-29 17:12  |  分类:程序设计

想在博客的侧边栏显示随机文章,使用了“中文 WordPress 工具箱”插件,功能介绍里说是可以显示随机文章的,但是这个插件比较老了,不支持 widget,便想到了改造一下这个插件。查了一下部件的语法。其语法如下:

  1. <?php
  2. function widget_mywidget($args) { 
  3. extract($args);
  4. ?>
  5. <?php echo $before_widget; ?>
  6. <?php echo $before_title . 'My Widget' . $after_title; ?>
  7. My Widget
  8. <?php echo $after_widget; ?>
  9. <?php
  10. }
  11. register_sidebar_widget('My Widget', 'widget_mywidget');
  12. ?>

register_sidebar_widget 注册函数之后,输出部件标题 "My Widget" 及內容 "My Widget"。
又从 WordPress Widgets 文档中知道:不能在插件导入之后执行任何代码,要使用 plugins_loaded 这个 hook,所以 add_action 的对象即是 plugins_loaded。

最后,在插件程序文件 mulberrykit.php 后增加了如下代码:

  1. function widget_random_posts_init() {
  2.  
  3.   if ( !function_exists('register_sidebar_widget') || !function_exists('register_widget_control') )
  4.     return;
  5.  
  6.   function random_posts_sidebar_module($args) {
  7.     extract($args);
  8.  
  9.     echo $before_widget . $before_title . $title . $after_title;
  10.     echo "<h2>随机文章</h2><ul>";
  11.       random_posts();
  12.     echo "</ul>";
  13.     echo $after_widget;
  14.   }
  15.  
  16.   register_sidebar_widget('Random Posts module', 'random_posts_sidebar_module');
  17. }
  18.  
  19. add_action('plugins_loaded', 'widget_random_posts_init');

在管理后台的 外观 -> Widgets 中就可以找到 Random Posts module 这个部件了。

ExtMail 列表邮件名乱码

2007-10-11 10:24  |  分类:程序设计

用 php 程序通过 smtp 发邮件,发现使用 ExtMail 列表中文邮件时邮件名是乱码,而且邮件被 Amavisd-new 打上了垃圾邮件的标签,且在邮件头中有以下提示:
X-Amavis-Alert: BAD HEADER Non-encoded 8-bit data
而在其它邮件系统中显示是正常的,在 Foxmail 中也是正常的。
对比接收到的正常邮件,发现邮件名是 base64 编码了的,于是在发送邮件时进行编码:
$subject = "=?GB2312?B?".base64_encode($subject)."?=";
这时候邮件不被标记为垃圾邮件了,但是邮件名列表时还是乱码。仔细对比后发现,是程序中 Subject: 后少了个空格。
看来,程序书写不够仔细;ExtMail 提取非规范书写的 Subject 内容时有点问题。

Linux 备份时排除目录

2007-10-09 11:54  |  分类:存储备份, 操作系统

tar 备份 Linux 系统的时候用了这样的命令:
tar -cjpvf /mnt/winh/linux.tar.bz2 / --exclude=/mnt --exclude=/proc --exclude=/lost+found --exclude=/sys --exclude=/tmp

恢复的时候:

tar -xjpvf /mnt/winh/linux.tar.bz2 -C /

使用 rsync 备份目录时也用 --exclude="/sourcedir/tmp" 发现并没有排除掉呢。

还是得用 --exclude "tmp",路径为相对路径。

rsync -a --exclude "tmp" --exclude "temp" /sourcedir/ /backup/$(date +%Y%m%d --date='1 days ago')

安装:
apt-get install cvsd
 
配置:
默认的 cvsroot 在 /var/lib/cvsd
改为适合自己的
mkdir /home/cvsroot
cvsd-buildroot /home/cvsroot
这会建立一个 cvsd 的虚拟系统(有如 chroot)。
mkdir /home/cvsroot/repos
初始化代码仓库
cvs -d /home/cvsroot/repos init
使 cvsd 用户/组有权读写代码仓库
chown -R cvsd:cvsd /home/cvsroot/repos
 
接下来修改 /etc/cvsd/cvsd.conf 的配置
RootJail /home/cvsroot
Repos /repos
这里的 /repos 是相对于 cvsd 虚拟系统的 /
 
添加用户:
cvsd-passwd /home/cvsroot/repos bluedata
重启一下
/etc/init.d/cvsd restart
 
客户端的使用:
touch ~/.cvspass
export CVSROOT=:pserver:bluedata@HOST/repos
cvs login
 
附:CVS使用手册

Debian Sarge 升级到 Etch

2007-07-28 18:08  |  分类:操作系统

Debian 4.0 (Etch) 发布有一段时间了,今天也把我用了好些年的 Sarge 升级上去了。
apt 实在是很方便。
cat /etc/apt/sources.list
deb http://mirrors.shlug.org/debian/ stable main contrib non-free
deb http://mirrors.shlug.org/debian-security stable/updates main contrib non-free
deb http://mirrors.shlug.org/debian/ proposed-updates main non-free contrib
 
apt-get dist-upgrade
基本只需要按回车使用默认配置就升级完了。
一切都是那么简单,赞一个。

页码: 上一页 1 2 3 ...5 6 7 8 9 10 11 12 13 下一页