返回顶部

[文摘] 实战Drupal之总览篇

[复制链接]
awagink 显示全部楼层 发表于 2015-8-16 18:40:38 |阅读模式 打印 上一主题 下一主题
因为工作的原因,需要基于Drupal做开发,因此不得不从零开始系统的了解Drupal以及尝试完成以下的一系列工作,包括:
  • 升级Drupal 6到Drupal 7
  • 编写一个灵活性非常高的Drupal模板
  • 将其他系统通过模块组合的形式在Drupal中实现,并迁移数据
  • 基于多台服务器,通过Nginx+Memcached对Drupal做简单的分布式部署
  • 通过一套Drupal系统支持多个子域名并实现不同模板,不同功能
经过2周的时间,基本完成了前2项工作,觉得有必要将很多东西记录下来备忘及分享。那么首先还是谈一些我对Drupal的整体感受以及开发中要注意的点
Drupal为什么难
提起Drupal似乎看到最多的字眼就是“难上手”、“学习曲线陡峭”这样的词汇,而实际体验了一下,确实如此。但是问题应该进一步化简为:Drupal为什么难,可以归结到哪些问题点?这样才有可能将其一一解决,让难事变得简单,而不是一味的抱怨。
在我看来,Drupal之所以难,主要可以归结到下面的点:
  • 中文资料稀缺,需要比较好的资料查找能力和英文阅读能力。
  • Drupal教程中很多有很多基础的注意事项没有说清楚,环境搭建往往被一笔带过,而这些很细小的问题却往往是最困扰初学者的。
  • Drupal教程总是侧重于介绍工作原理,缺少对于实际情况的应对方法。
  • Drupal的进阶功能几乎都是基于第三方模块的,有些模块的复杂程度甚至高于内核,但是一般教程中只涉及Drupal内核,给人的感觉是看完一本Drupal的书,还是什么都干不了。
  • Drupal自定义的规则非常多,无论是主题开发还是模块开发,要求开发者对系统的了解程度高于其他框架
那么对于这些存在的问题应当如何解决呢。
对于问题1,我在之前的关于不要重复造轮子的二三事中也有过一些解决方法。可以说英文阅读能力是程序员的核心基本功了,如果不去设法提高自己的能力,而靠为数不多的中文资料过活或者转投一些不成熟的国产CMS,无形中你就已经给自己设置了一道难以跨越的GFW。
对于教程的问题,我本人一向是彻底的实践派,尤其鉴于Drupal大量依赖模块的特性,可能即便从头到尾看完一本书,遇到实际项目还是无从下手。只是有一些事项需要注意一下,详见后文。
而对于Drupal繁多琐碎的Hook系统,可以说是一把双刃剑,既带来了灵活的处理方式,相应的也带来了更重的学习负担。不过其实还是可以在一定程度上取巧的,比如主题开发,按Drupal的设计,合格的主题需要复用Drupal规定的标签及属性,这样做的目的是可以借助CMS的Block管理管理员在后台可以自由组织页面,这样意味着我们没有办法自由组织HTML标签,让主题定制有很大的限制。但其实实际项目中我们无需那么规范的主题,因为大部分页面都会有唯一固定的布局。活用Views/Services完全可以在短时间内以不依赖Drupal规则快速上手,关于这一点可能会在之后的日志中说明。
开始Drupal项目的注意点
下面都是一些我在开始Drupal项目后总结的注意点/坑点,总结如下:
经验谈1:恢复后台界面为英文
虽然中文界面可能在短期内用起来会舒服一点,但是从长远计,无论是检索资料还是参考其他文章时,英文关键词能带来更准确的结果,避免因为翻译引起的操作误区。
经验谈2:安装模块后第一时间到权限页面去开启
安装模块后,需要提醒自己第一时间去模块的权限页面去设置权限, 即Administration › People › Permissions
只有开启权限后才能在后台进行进一步的设置。
经验谈3:开发时关闭缓存
Drupal内置了大量的缓存机制来提升性能,但是在开发环境中,最好将其全部关闭,才能最快的看到修改的结果
进入后台
administer -> configuration -> perfromance
  • Cache pages for anonymous users
  • Cache blocks
都取消勾选。
另外为了让主题的修改即时生效,需要在主题的template.php的最上方加入
drupal_theme_rebuild();经验谈4:避免修改Drupal核心文件
在Drupal的文件结构中,模块与主题可以安装在drupal/modules、drupal/themes下,也可以安装在drupal/sites/all/modules、drupal/sites/all/themes下。建议选择后者,这也是官方所推荐的。因为这样一来,项目的修改可以集中在sites目录下,当Drupal版本升级时,可以直接覆盖所有核心文件而无需有其他的担心。
当然Drupal由于将web根目录设定在代码的根目录,从安全角度考虑不注意的话可能会被访问到类库的文件,所以可以控制一下除sites目录以外的文件权限。
经验谈5:Drupal报错时的处理
由于Drupal自己接管了php的错误处理,所以一般发生数据库错误时,屏幕只会出现

The website encountered an unexpected error. Please try again later.

的提示。
一般来说如果发生这种错误,可以在后台 Administration › Reports › Recent log messages查看错误日志。
但如果有时候发生了更恶劣的情况,比如安装了某些模块,可能会报出上述错误并且连后台都无法进入。
那么此时可以去数据库查看watchdog数据表,variables字段保存了错误信息,可以用编辑器打开查看错误明细(这需要启用Database logging模块)。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

纳速健身网成立于2006年8月,是国内优秀健身运动网站,现拥浏览人数超30万。网站是集养生、武术、太极拳和健身气功等多种健身项目于一体的多功能交流平台。平台提供大量优质的教学视频、伴奏音乐(太极拳晨练音乐,广场舞音乐,健身气功音乐)、图文教程、运动科普和经验分享,为健身爱好者提供完善的运动指导平台。
  • 纳速QQ群乙:151815303
  • 纳速QQ群丙:79104490
  • 微信交流群:微信好友搜索【nasuwang】加小纳微信进群交流健身知识,备注【纳速】
  •                     或者扫描页面底部右侧二维码添加小纳微信>>>
  • 微信公众号

  • 微信群客服交流

  • Copyright © 2006-2021, 纳速健身网. | | 辽ICP备13002388号-1 辽公安网备21050202000005号公安网备号 纳速武术-乙 QQ