wilson 的blog

在WindowsXP下建立Lighttpd + PHP环境

服务器端采用的是Lighttpd,个人的机子上使用的是Xampp套件,有时候程序在Apache和Lighttpd下的运行效果有差异(比如url-rewrite问题),因此需要在本地安装一个Lighttpd环境来调试PHP程序,所需步骤如下:
1、下载Win32版Lighttpd程序,在这个地址:http://en.wlmp-project.net/,下载完毕双击可执行文件即可安装;
2、在安装目录下进入conf文件夹,拷贝lighttpd-inc.conf,另存为lighttpd.conf,作为Lighttpd的运行配置文件;
3、打开lighttpd.conf,设置server.document-root、server.port两个参数;
4、在cmd窗口下运行lighttpd.exe -f path/to/lighttpd.conf -m path/to/lib -D,即可启动Lighttpd程序。打开浏览器,敲入http://localhost:(port),port为你在conf文件里设置的server.port参数,检查Lighttpd是否启动正常;

浅谈网站外包对象的选择

对于大多数人而言,做网站就是“做网站”的,而且觉得似乎现在做网站的人满天飞,是个人就会做;另一方面,由于现在网络的普及,不仅是公司,很多个人也都有做网站的需求,当他们在寻找这一方面的人员时,面对天差地别的报价往往显得很茫然,在此先给大家解释一下这个行业的概括。
其实我们一般说的”做网站“是包括两个层面的意思。
一、做网页。一般的公司网站,就是一个公司简介页面,一个产品介绍页面,一个联系方式页面等等,属于网页范畴,根本就不属于网站范畴。这可能是网站市场需求量最大的类型,同时由于网页制作比较简单,提供这方面服务的人也最多。如果需要做这种类型的网站的,最好找有美术基础的网页设计师做,因为对于公司网站,美观是占据非常重要的因素。还有,虽然这类网站比较简单,但是其实要做好还是有一定要求的,特别是对于SEO优化而言,使用CSS+DIV是基础,同时页面上各个DIV的排列其实也是有讲究的。所以最好当然就是找有美术基础的精通标准网页设计的人来做这个类型的网站;如果找不到这种人,可以考虑一下专业的网络公司,他们有专门的网页设计师和专门的网页制作师;再不济因为预算等方面的因素的话,你就挑一个自己开着比较顺眼的人帮你做吧,呵呵。

Drupal 6 Views模块剖析

一、 原理
Views模块通过hook_menu_alter()插入页面项,通过hook_form_alter插入block项。模块的核心为view对象,通过执行view对象的execute_display()方法来获取输出,View对象是数据库表views_view的映射。对view对象的各个属性(如field、argument、sort、filter等)通过handler对象实现,view对象的界面方面则通过plugin对象和hook_views_plugins()来实现。在views_theme()函数里通过调用views_fetch_plugin_data()将各个plugin集成到theme_registry里。更多......

Drupal 6 CCK模块

一、 原理
通过hook_form_alter()挂接CCK Field,通过hook_nodeapi()对挂接的CCK Field进行各项操作(CRUD)。核心函数_content_type_info()搜集当前节点系统的field types列表,widget types列表,['field types'] ['formatters']列表,fields列表和content types列表,详情......

Drupal 6 Theme系统

一、原理
二、流程
1. 系统调用函数theme(),进入theme系统;
2. init_theme()
3. theme_get_registry(),获得theme_registry列表;
4. 遍历theme_registry,选取当前调用的theme单元;
5. 判断该theme单元是否有[‘file’]、[‘path’],有则引用该文件;
6. 如果当前theme存在function,则调用该function;
7. 否则当前theme为template调用。默认渲染函数为theme_render_template(),可以自定义渲染函数和模板文件扩展名。
8. 执行该theme单元的preprocess functions注册函数,根据传进来的变量$variables['template_file']中系统中寻找合适的模板文件,执行渲染函数theme_render_template()。
三、API
1. hook_theme(),应用于module、theme_engine、theme里,返回theme单元数组;
2. 返回数组的参数:
Array(
‘hook_name’ => array(
‘function’ => ‘’, //调用函数,若省略默认为theme_hook_name;

Drupal 6 Menu系统

一、 原理
Drupal6的Menu被分为两种,一种是用于导航的Menu_router,一种是用于显示的Menu_links。Menu_links是Menu_router的一个子集。
二、 Menu Router流程
1、 系统接收请求之后启动,调用函数menu_execute_active_handler()进入Menu router系统;
2、 系统调用menu_get_item()函数寻找该请求路径对应的处理单元,判断该单元的access属性,如果为真,判断该处理单元是否需要加载额外的file文件,然后调用该处理单元的回调函数,返回相应的结果;
3、 在menu_get_item()内部,系统获取当前的$_GET[‘q’]路径,或者引用传入的路径,根据该路径组成一个优先调用的路径数组列表,在menu_router表里根据优先等级搜寻最适合的menu项,取出;
4、 调用_menu_translate()函数,将取出的menu项根据当前的实际路径值进行翻译。载入路径需要载入的对象,判断路径的access值,如果为真,进行_menu_item_localize();
三、 Menu Links流程
1、 通过调用menu_navigation_links()或者menu_local_tasks()进入Menu Links系统;

在Lighttpd下运行Drupal

Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。相比最流行的Apache,Lighttpd具有低内存开销,低cpu占用率低,高性能等特点。Apache下的一些重要模块如FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等在Lighttpd下也都有相应实现。因此从Apache迁移到Lighttpd完全不是问题。Drupal作为一个模块化的网络开发平台,由于系统架构方面的一些考量,其系统性能和内存开销一直都为人所诟病。根据数据显示,在生产环境下,同样的Drupal程序,从Apache迁移到Lighttpd可以提升大约5倍的性能,是非常惊人的提高。
从Apache迁移到Lighttpd下主要有两个方面的问题。
一、简洁路径问题。Apache下有htaccess文件,Lighttpd下没有。解决方法是在Lighttpd的配置文件里利用Rewrite模块进行重定向设置。打开你的Lighttpd配置文件例如lighttpd.conf,加入以下几行:
url.rewrite-once = (
"^/system/test/(.*)$" => "/index.php?q=system/test/$1",

关于Drupal6多语言支持的一些思考

最近我们重新设计改版了我们的网站以支持多语言,这也是我们第一次在Drupal6(6.3)下构建系统。总而言之,Drupal6在内置多语种支持方面比Drupal5相比有了非常大的提升,但是还是存在一些问题。借助于i18n模块,可以完善Drupal的多语种支持,但是系统核心还有一些问题需要修正或者修改。
首先是定制菜单项的多语种显示。在Drupal6.3下,假设你已经创建了一个定制菜单项“About Us”,然后你通过"站点创建"->"翻译界面",搜索该菜单项的名称并翻译成"关于我们",结果发现在你切换语言的时候,菜单名称并不会跟着切换。问题出在menu.inc文件里的函数_menu_item_localize()。如果是menu_link的话,名称不会通过翻译函数进行过滤,而是直接输出。因此为了要让你的定制菜单跟随你的切换语言做相应切换,你应该让menu_link的名称通过函数t()进行翻译。