使用drupal与没有使用drupal,在网站的设计过程上本质是一样的!所以,我们在使用drupal建一个新网站时,要时刻联想自己在没有drupal时是如何设计开发的。

不使用drupal时,我们通常按如下步骤设计开发一个网站:

1.静态页面设计。主要包括主页、二级列表页、二级内容页三类页面,制作过程一般是:PS效果图->切图->HTML/CSS/JS静态页。通常一个优秀的美工/前端工程师,可以搞定这一切,比如我们的XiaoLu童鞋。

2.静态页面整理/页面布局整理——对代码进行切块、拆分。在自己开发时(如使用PHP或ASP.NET MVC技术开发),我们通常会将共享的代码拆分为小文件(或称PartialView、用户控件等),如banner、footer等html代码或共享的css、js代码拆分为一个个小文件,可供其它页面include使用。

在使用ASP.NET MVC技术开发时,我们会在视图中设计一个或多个_Layout页面,使得后续开发的页面可以套用这些_Layout页面。Layout-“布局”也,“框架”也,“母板”也,“模板”也!通常我们至少需要一个主页Layout、一个二级Layout。

备注:在纯静态页环境下,我们可以在页面中借助jquery技术(如$(”#divID”).load(”footer.html”))载入那些共享的html代码页。

一个理想的前端工程师也应该搞定本步骤中的一切,所以XiaoLu童鞋加油哦!

3.数据库表设计。将要动态发布的信息设计为数据表,比如新闻、图书信息、企业信息等,并先手工录入一些测试数据。(这里暂不考虑具有复杂业务流程的数据)

4.动态内容展示页面的编程。结合数据表,编程呈现新闻列表、新闻内容等动态内容展示页面。通常这些动态页都自动套用相应的_Layout“布局模板页”。

5.后台管理功能的编程。不是本文重点,在此不再赘述。

~~~~~~~~~~~~~~~~~~~~~~~~~

Drupal的优势即是高度抽象替代了编程部分,不需要编程了!这与一些代码自动生成工具本质上没有区别,只不过它比那些工具在建网站这方面更全面、更出色!

从这个角度看,使用drupal建网站时,前面的第1、2、3步骤应是一样的(无限相近的),第4、5步骤则是在drupal后台配置即可实现的。

当然,结合drupal自身特点,我们归纳总结一下使用drupal建网站时的步骤:

1.静态页面设计。(同上)

2.静态页面整理/页面布局整理。(同上)

3.静态页面布局转化为drupal主题。通常基于zen主题制作子主题。如果第2步做得好,这一步会相对轻松!这一步实际上是drupal中的区域/区块的划分与设计过程,其与第2步是何其相似!

4.内容类型设计(实质等同于数据库表设计)。添加相应的内容类型,同时添加一些内容,等同于录入一些测试数据。

5.视图设计。Drupal中“视图”的概念与数据库中“视图”的概念是相似的,可以理解为对数据表中数据的List呈现。针对已添加的内容类型(数据表),分别添加相应的视图(数据视图),视图最终以区块的形式呈现到页面中。

6.区块设置。将视图区块,或者一些静态区块放置到合适的区域。

7.后台管理功能设置。配置并开放合适的账号给客户,用于管理发布内容。Drupal后台也有很多漂亮的第三方主题可供下载使用。后台管理功能暂不深入研究了。

备注:Drupal建网站详细过程参见《如何将普通网站转为Drupal网站》。

综上:

(1)第5、6、7步是替代人工编程的部分,特别是第5、6步其实质可以理解为代码自动生成工具。

(2)特别注意第2步一定要做到位,不要省略!不要有了静态页面就急着向drupal主题转化!

~~~~~~~~~~~~~~~~~~~~~~~~~

总结:

(1)拆分大问题。我们往往会忽略了第2步“静态页面整理”,然后觉得将一个静态网站转换为drupal主题太复杂了——问题之所以复杂,往往是因为实现过程的耦合度太高,步骤粒度太大,步子迈得太大,感觉上一团乱麻。如果把过程梳理得更清晰一些、更细致一些,步骤粒度小一些,可能问题就没有那么难以解决了。大问题总可以拆分为更小的两个问题,总可以这样拆分下去。如果面对问题感觉没有头绪,就去拆分问题吧!

(2)抽身看问题。钻进问题里,有时会看不清问题的本质,就象我们总想用drupal解决所有问题一样,被drupal强大、繁多的功能所迷惑,不可自拔。放下drupal,想一想没有它我们怎么做,然后有它我们该怎么做。诗云“不识庐山真面目,只缘身在此山中”,诗又云“不畏浮云遮望眼,只缘身在最高层”。如果能够抽身并站在庐山之上看庐山,自然能够看个清清楚楚、明明白白。

夏春涛

2014-07-31

Drupal建站过程思考——不识庐山真面目,只缘身在此山中的更多相关文章

  1. FarBox的建站过程

    FarBox的建站过程 本文转自:http://mosir.org/html/y2012/How-to-build-your-website-by-farbox.html 作者: mosir 时间:  ...

  2. SEO 建站过程复盘

    今天在A5看到一篇关于一个牛站的复盘,整个建站过程值得借鉴. https://www.admin5.com/article/20200218/943930.shtml

  3. Python+Flask+MysqL的web技术建站过程

    1.个人学期总结 时间过得飞快,转眼间2017年就要过去.这一年,我学习JSP和Python,哪一门都像一样新的东西,之前从来没有学习过. 这里我就用我学习过的Python和大家分享一下,我是怎么从一 ...

  4. 《Dotnet9》建站-记录建站过程中使用的一些网址

    时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...

  5. window下Jekyll建站过程

    > 前言 最近决定要写一个博客,先后注册了博客园和CSND的博客,但是他们的界面主题都不是很符合自己的要求,还没有足够个性化的发挥空间,遂决定自己建一个博客. 网上找了一下教程,感觉都不太详细, ...

  6. Hexo建站过程总结

    Hexo 是一个基于 Node.js 快速.简洁且高效的博客框架,可以将 Markdown 文件快速的生成静态网页,托管在 GitHub Pages 上. 由于原来博客的主机费用问题,我没有办法再在那 ...

  7. Web网站建站过程(白嫖)——域名

    目录 1.域名注册商(选一个吧) 2.域名注册 没有域名建啥站? 1.域名注册商(选一个吧) 到时候你们就会想起: ...... 但是我们不用上面的,因为上面的太费Q,我们要用的是-- 2.域名注册 ...

  8. 利用阿里云Centos7建站过程

    以下可能不尽详述,如有问题欢迎指出 准备过程:1. 阿里云主机一台2.域名一个 3.github个人帐号开始: 1.以root帐号登录云主机 2.安装apache [root@192 ~]# yum ...

  9. wordpress建站过程5——footer.php

    footer中写的就只有网站地图,公司信息等等简单东西而已: <?php wp_footer(); ?> <div class="footer"> < ...

随机推荐

  1. JavaScript权威指南学习笔记5

    下午在杭图回去前看了书中第二部分的13-17章,看的很粗,感觉大部分东西自己已经知道或者平时开发中不会用到,很多章节只是简单的翻了一下,没有仔细思考里面说到的道理,下面对各章节简单的记录下. 第13章 ...

  2. T-SQL中return 返回语句学习

    return命令用于结束当前程序的执行,返回到上一个调用它的程序或其他程序,其语法格式如下: return   整数值或变量 return语句要指定返回值,如果没有指定返回值,SQL Server系统 ...

  3. vimrc 配置支持backspace

    在vimrc中添加: set nocompatible set backspace=indent,eol,start

  4. 港股street和nominee区别

    股票的street和nominee区别主要用在公司行动的过户费方面,street股票需要收取过户费,nominee不收过户费. street股票通过做公司行动收取过户费后会变成nominee股票,下次 ...

  5. test_wifi

    #!/system/bin/sh #Load driver echo "ASD WIFI TESTING..." AP_NAME="default" num=0 ...

  6. JStorm 是一个分布式实时计算引擎

    alibaba/jstorm JStorm 是一个分布式实时计算引擎. JStorm 是一个类似Hadoop MapReduce的系统, 用户按照指定的接口实现一个任务,然后将这个任务递交给JStor ...

  7. [AngularJS] ngMessageFormat

    ngMessageFormat can be installed via npm using the following command: $ npm install angular-message- ...

  8. [ES6] ... spread operator

    var parts = ['shoulders', 'knees']; var lyrics = ['head', ...parts, 'and', 'toes']; // ["head&q ...

  9. mysql 修复表和优化表

    REPAIR TABLE `table_name` 修复表 OPTIMIZE TABLE `table_name` 优化表

  10. MediaPlayer 音频播放 示例

    状态机.流程图.生命周期 对播放音频/视频文件和流的控制是通过一个状态机来管理的.下图显示一个MediaPlayer对象被支持的播放控制操作驱动的生命周期和状态. 椭圆代表MediaPlayer对象可 ...