1什么是Drupal
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com。
Drupal从2001年诞生到现在,经过了不断的版本演化和市场检验以后,日趋成熟和完善。Drupal已经超越一个传统意义上的CMS范畴,越来越多的程序员把它做看作一个内容管理框架(CMF),总之Drupal正在演化为一门平台性质的技术。我们可以从三个方面来理解Drupal:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com。
Drupal从2001年诞生到现在,经过了不断的版本演化和市场检验以后,日趋成熟和完善。Drupal已经超越一个传统意义上的CMS范畴,越来越多的程序员把它做看作一个内容管理框架(CMF),总之Drupal正在演化为一门平台性质的技术。我们可以从三个方面来理解Drupal:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
在本书中,我们首先介绍Drupal的基本原理,接着对Drupal开发中,所涉及到的基本技术和常见技巧,进行详细的描述。在很多的技术图书中,都会包含与软件安装相关的章节,由于本书主要是讲解Drupal模块开发的,我们在这里不会讲解Drupal的安装及相关模块的配置,对于Drupal的安装,由于相对来讲,是很简单的,并且网络上有很多这样的文档,所以在这里就不会为安装配置浪费笔墨了。
老葛
北京亚艾元软件有限责任公司
第一章 Drupal的工作原理11
1,什么是Drupal11
2, drupal的技术堆栈11
2.1 PHP12
2.2 web服务器12
在一个实际的Drupal项目中,我们遇到了这样的需求,将图片替换为动态图,前者是jpg的格式,后者是avi的格式,由于我们创建的站点,采用HTML5的技术,所以视频统一采用MP4的格式:
1,首先检查了一下,HTML的源代码,发现里面文件的后缀名还是avi, video/avi不是video标签支持的格式,此时显示的错误消息是“视频格式或MIME格式不支持”;,
2,所以找了一个MP4格式的文件,做测试,发现还是不行,不过显示的错误消息还是一样,将视频文件的路径放在URL中排查,发现直接跳转到了首页,使用FTP查看这个文件,发现对应文件夹下面,文件不存在;
3,上传一个转换号的文件,视频仍然无法播放,只是错误消息发生了变化,大致是“文件已损坏”,视频文件的路径放在URL中排查,发现可以显示出来播放条,里面的内容显示不出来,放在暴风影音中播放,没有问题;,
4,将MP4文件替换为一个正常的MP4文件,HTML标签,不变,尝试,可以播放,
在一个实际的项目中,我们遇到了这样的一个问题,匿名用户访问一个内容类型下面的节点时,顶部显示出来了管理员才能显示的Toolbar,也就是顶部的导航条,其它内容类型没有这个问题。
为了解决这个问题:
1,首先尝试禁用当前的主题,使用核心自带的主题bartik作为默认主题,这样可以排查是不是主题层出现了问题。排查以后,发现问题还在。
2,检查与内容类型相关的模块,负责页面显示的,我这里用的Panelizer模块,采取的措施,是禁用Panelizer模块,禁用后,检查问题是否存在,发现问题消失了。
3,这个时候,我们知道是Panelizer这里出了问题,启用这个模块,问题出现,到这个内容类型的panelizer的管理页面,禁用除标题以外的所有内容窗格,发现问题消失了。
4,采用二分法,逐个的排查内容窗格的启用,最终定位到,一个内容窗格启用了,问题就出现了,禁用了问题就消失了。
5,检查这个内容窗格里面的设置,里面有一个自定义的显示规则,采用php code的形式:
global $user;
if( $user->uid = $contexts['panelizer']->data->uid){
return TRUE;
}else{
庆祝一下,这是在上线过程中,遇到body字段无法显示时,排查问题的过程。
大概就是这样的:
1,先看一下是不是核心升级的问题,发现升级后,没有问题。
2,升级第三方模块,正文显示正常,
3,先启用search API 模块,添加solr server,删除数据,body字段还是正常。
4,启用wechat模块,发现body字段无法显示。
5,启用wechat模块+wechat views模块,不启用wechat mass模块,发现body字段正常显示
6,推测出来wechat mass模块的问题,这个模块里面创建一个body字段实例,与系统默认的配置不一样,应该是翻译的问题。
7,启用wechat mass模块,body字段无法显示,到body字段的配置页面,启用翻译,同时不同步数据,已经有了数据,body字段正常显示。
微信模块,自贡献到Drupal社区以来,不足两个月的时间,但是现在的下载量已经达到了600+,安装量只有45个。说明了一个问题,微信模块还是很受欢迎的,不过我写的这个模块,用户友好度,确实不够友好。
是的,我在以一种Drupal的方式,来编写这样的一个模块,完全的Drupal思维。在此以前,我很少登陆微信公众平台的后台,也没有参考过其它CMS系统的微信实现。自己只是看了微信开发的基本书,阅读了微信公众平台开发者文档。
Drupal的方式,意味着,对于Drupal初学者来说,用起来确实困难了一点,但是对于熟悉了Drupal的人来说,意味者灵活、扩展、框架。对于熟悉Drupal的人来说,很快就会发现这个模块的优点,进而会影响更多的初学者,瞧,高手都喜欢用这个,慢慢的也就跟着用了。
这样,慢慢的用的人多了,微信模块也日趋的完善,免费的东西也就越来越多,Drupal的竞争优势,就会凸显出来。
将一个站点,从一个服务器,迁移到另一个服务器,报了一下错误:
Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead 在 _views_slideshow_preprocess_views_slideshow() (行 73 在 /home/www/html/zhangzhongbao/sites/all/modules/views_slideshow/theme/views_slideshow.theme.inc).
老服务器的PHP版本较低,新服务器的PHP版本较高,导致的。views_slideshow这个模块的版本,较低,升级到最新的版本即可。