第 1 部分,简介和概述 (2007 年 3 月 15 日)
第一篇文章概述了这个项目以及业务场景,并分析对比了几个内容管理系统。解释了选用 Drupal 的原因,以及如何对 Drupal 进行扩展来满足需求。
第 2 部分,设计有效的用户体验 (2007 年 3 月 22 日)
第二部分将描述一种灵活的设计方法,以解决应用程序的设计过程中的问题。这个过程可以用来为 Web 站点或应用程序设计用户体验。
第 3 部分,在 Windows 中建立开发环境 (2007 年 4 月 2 日)
为您的事业建设有用的网站功能,透过博客、产品目录、电子报、地图与您的客户联系。
- 为商业和非营利网站设置必要的功能
- 整合其他 Web 2.0 网站,例如Google地图、Digg、Flickr、YouTube以增加流量;建立网路社区,增加网站的影响力。
- 不需要网站研发知识
- 一个真实网站的完整范例和清楚解释
【书本细节】
每个人都知道事业成长和客户联系需要一个网站。然而自己建设网站是件困难的工作,而且耗时费力。简易的网站开发工具无法让你拥有现代的功能,也不容易维护。付费给网站设计师开发一个完整的网站会很贵,而且每回简单的更新都需要付费。
Drupal 是一个强大、免费的系统,让任何人可以利用它建立自己的网站。用这麽强大、易用的工具,就不必再付钱给专家设计网站,因为你也可以自己动手做,免费。
本书是建置商业网站的步骤指引,包括博客、事件行事历、产品目录和服务,还有更多。
在本书中,我们将会为虚构的客户从头开始建置一个完整的网站。从下载、安装Drupal 开始,到建立、编辑页面。我们也将探讨最受欢迎的 Drupal 模块。书中呈现的所有功能,有都清楚的步骤指引,让你可以很容易跟着开发自己的网站。
下面是一些网上免费的drupal教程,这些教程将对初学者和那些从别的CMS转向drupal的开发者非常有帮助。 初级教程
1.在开始用drupal之前,你要知道一些基本的东西,内容很简单,但有些还是值得做个笔记的,http://drupal.org/getting-started/before.
2.如果你想完整地读一本面象初级者的教程,你可以参照 Drupal cookbook for beginners (PDF),如果你想在线阅读,可以参照http://drupal.org/handbook/customization/tutorials/beginners-cookbook.
问: 如何更改注册页面中的form描述信息?
答: 思路:在template.php中,预处理的时候,截获变量$variables,然后就可以随意更改了。在theme目录下建了一个文件,命名为user-register.tpl.php,然后在template.php中加phptemplate_preprocess_user_register(&$variables)函数,接着用theme函数进行声名,把garland_theme()函数中加入: return array( 'user_register' => array('template' => 'user-register','arguments' => array('form' => NULL) ), ); 再清空一个缓存,就可以显示了。
1. 创建一个HTML帮助的block,让它只出现在"node/*/edit" and "node/add/*"
2. 用admin/user/roles下的"edit permissions"去管理每一个具体内容的权限
3. 在admin进入网站时,用Firefox Web Developer Toolbar去"Populate Form Fields" (不太明白什么意思)
4. 用google的"site:drupal.org {search terms}"格式去搜索http://drupal.org上的内容,在firefox上建立shortcut,你可以用"dru [your search]"和api.drupal.org/apis/{search_term}格式去searchdrupal.
5. 用pathauto给用户名设一个别名,这样用户就无法改变自已的用户名了
6. 用Pathauto 和path redirect给新的连接设一个别名重定向到旧的连接。这样搜索引擎就不会抛弃你了
7. 用Global Redirect 模块确保首页以"/"结尾 ,并且当前页没有别名
为了让更多的学习者少走弯路,结合自己的一点经验和大家分享一下,尽量把步骤简单明了。在drupal里如何做双语(中英)站呢?方法有很多,今天以i18n为例,简单介绍一下。
在安装i18n模块之前必须做一项准备工作。
1. 开启locale模块,在admin/build/modules下Core – optional下:
2. 下载i18n模块,下载地址: http://drupal.org/project/i18n。选择适合你的drupal的那个版本的,下载完成之后,就可以安装i18n了。
3. 解压i18n文件,然后复制到sites/all/modules/下。
4. 刷新目录admin/build/modules,会发现多了Multilanguage系列模块,全部勾选,点save configuration 按钮,会有以下提示:
意思是启用这些模块,点continue继续,系统会自动开启必须的模块。
未完,待续。。。
Drupal是一款优秀且功能强大的CMS,很多人采用drupal来开发,很重要的一点莫过于它的多站点(Multi-Site)机制了。那么如何利用drupal来开发多站点呢?今天以一个小例子简单介绍一下。
1、到sites目录下添加你要新增的另外一个站点。以drupal花园为例,我想建个xxx.drupalgarden.cn子站,那么就在sites下建一个xxx.drupalgarden.cn的目录。
2、复制default目录下的default.settings.php改名为settings.php。(注意:因为你装该网站时,Drupal核心会修改settings.php的,例如添加Mysql的资料等等。所以你需要添加一个空白的default.settings.php。)如果你是drupalgarden.cn/xxx, 那就新建一个文件夹,命名为drupalgarden.cn.xxx。
未完,待续。。。。。。
Drupal自带的编辑器功能很简单,通常需要安装一个 WYSIWYG 的编辑器,其中 FCKeditor 是一款比较优秀的编辑器,下面说明 FCKeditor 的安装方法。
1.下载安装包,需要两个,一个是FCKeditor本身,另一个是 drupal 的fckeditor 接口模块:
1.下载安装包,需要两个,一个是FCKeditor本身,另一个是 drupal 的fckeditor 接口模块:
到 http://www.fckeditor.net/download 下载FCKeditor, 目前最新的版本是FCKeditor_2.6.2.zip。
到 http://drupal.org/project/fckeditor 下载接口模块,我的 drupal 是 6.9,所以下载一个 for 6.x 的:
http://ftp.drupal.org/files/projects/fckeditor-6.x-1.3-rc6.tar.gz
2.解压上传到站点
变量名 描述
$breadcrumb 网站的层级导航链接,如“首页>管理>模块”。
$closure 这个变量内主要包含一些页面使用的JavaScript等客户端脚本,它们通常在标记结整前被载入。也就是当整个页面加载完时,再加载客记脚本。
$content 页面的HTML代码
$footer_message 在admi/settings页面定义的“底部信息”。
$head 一些模块生成的HTML代码,在标签中输出。
$head_title 页面的标题,会在标签中输出。它的值是由$title,$title_name和$site_name以及$site_slogan组成的。
$help 帮助文字。
$language 页面的语言编码。例如英语就是en。
$layout 这一变量允许定义外观的不同类型的风格,而变量$layout的值依赖于启用的工具条(sidebars)的数量。可能的值包括:none, left,right, and both.
$logo 站点图标的地址。
$messages 给用户的状态和错误信息
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(