Drupal 7

Drupal 7数据库操作

admin 提交于 星期三, 04/12/2017 - 15:12

1. 通过db_query执行原生SQL语句

$ret = db_query('SELECT * FROM test_table  WHERE tid = :tid', array(':tid' => $tid);

db_query语句返回的是一个对象,但是这个对象可以通过foreach遍历,就好像$ret是一个数组一样遍历。其成员是对象。

 

foreach ($ret as $row) {

  echo $row->tid;

}

要注意的是,db_query语句返回的结果虽然可以项数组一样遍历,但只能遍历一次。其内部的实际逻辑是遍历的时候向数据库获取新一行数据,当数据获取完之后并不会重头再获取。

对于对象是怎样实现foreach操作的,可以参考:http://php.net/manual/en/language.oop5.iterations.php

标签

Drupal 7模块编写

admin 提交于 星期二, 02/28/2017 - 14:43

要学习Drupal 7作为PHP框架的应用首先要学习怎样写模块,我们以创建一个最简单的hello模块为例。

先创建模块目录:sites/default/modules/hello

一个最简单的Drupal 7模块至少包含两个文件:hello.info, hello.module

hello.info是对模块信息的描述:

 

name = "Hello"
description = "Hello World"
package = "Other"
core = "7.x"
version = "7.x-1.0"

hello.module的内容如下:

标签

Drupal 7模块如何定义数据库表和定义更新

admin 提交于 星期五, 02/24/2017 - 14:13

一般的PHP框架并没有一套机制去定义数据库表,通常是自己通过phpMyAdmin直接创建,或者把创建的语句写成SQL保存下来并执行。这个方式对于只维护一个网站问题不大。但如果要做成一个通用的插件,或者说这件事要在成千上万的网站上做就有问题了。

Drupal 7里,我们自己的模块如果要新增数据表,可以先在phpMyAdmin里创建。然后通过结构->schema->inspect来查看这个表在Drupal里的表示方式,如下图:

Drupal查看数据表结构

我们新增的表会出现在Unknown区域,复制代码。

创建一个mymodule.install文件(mymodule需要根据我们的模块名而变),代码如下:

<?php

标签

Drupal 7如何实现表格分页显示

admin 提交于 星期三, 12/28/2016 - 16:36

首先,我们需要用db_select,而不是db_query来写表格的查询语句。

其次,我们需要调用 ->extend('PagerDefault')

最后,我们调用theme('pager')显示页码控件,就是这么简单!

下面是代码例子:

 

$query = db_select('node', 'n')

      ->extend('PagerDefault')

      ->fields('n', array('nid', 'title'))

      ->distinct()

      ->limit(10);

 

$output .= theme('table', array('header' => $header, 'rows' => $rows));

$output .= theme('pager');

 

分页器把总记录数记录在下面的全局变量中:

global $pager_total_items;

标签

Drupal 7模块及表单编写教程(form_example)

admin 提交于 星期五, 12/02/2016 - 16:07

本教程将以最小的篇幅解释Drupal 7里最核心的两个概念:怎样创建自己的模块和怎样操作表单。

首先下载examples模块,启用其中的form_example子模块。我们将分析form_example的代码。examples模块是学习Drupal的很好资料,读者可以自行学习其它子模块。

1. 模块文件结构

Drupal 7的模块以模块名作为文件夹的名称,放在Drupal代码目录树里的某个modules文件夹内。系统模块放在Drupal根目录的modules下。Drupal官网上可以下载的模块可以放在sites/all/modules下。而自己创建的模块可以放在sites/default/modules下。这不是绝对的,不按这样的规则去放,模块也能被识别出来。如果在不同modules里放有同名的模块,会产生冲突。

一个模块的的文件夹里至少包含两个文件:foo.info和foo.module。这里的foo是指模块名,对于form_example来说就是form_example.info和form_example.module。

标签

Drupal 7教程

admin 提交于 星期五, 11/25/2016 - 16:00

Drupal是世界上最大的开源软件,Drupal本身有上万的开发人员,而使用Drupal的开发者有上百万。全世界有约2%的网站是使用Drupal开发的。

在没有开始真正学习之前,我们先了解Drupal可以做什么7个使用Drupal的理由

下载Drupal翻译包安装Drupal 7,翻译包需要按照文档的方法放到一个叫translations的目录里。

标签

Drupal7怎样做带排序功能的表格

admin 提交于 星期四, 05/19/2016 - 10:12

如果表格数据全部来自数据库,可以直接使用Drupal 7的tablesort功能。

 

$header = array(
    array('data' => '学号', 'field' => 'school_id'),
    array('data' => '姓名', 'field' => 'name'),
    array('data' => '班别', 'field' => 'class'),
    array('data' => '操作'), // 此列不支持排序
  );

$query = db_select('cj3_exam_scores', 's')
  $query->extend('TableSort')
    ->orderByHeader($header);
  $result = $query->execute();

$rows = ...; // 把$result的值填到$rows里

标签

7个不使用Drupal的理由

admin 提交于 星期二, 05/05/2015 - 16:19

在叙述完7个使用Drupal的理由之后,我们公平一点,说7个不使用Drupal的理由:


1. Drupal很难学

Drupal很复杂,很难入门。即使它具有不需要编程的CMS特性,对于懂编程的人来说也很难学。Drupal作为CMS,其易学程度绝对和Wordpress不是一个档次。

国内很少人用Drupal,想找本像样的中文书籍都难。运气好能找到的很可能只是讲CMS部分的书籍,而不涉及怎样编写自定义模块内容。换句话说,要想学习Drupal,要直接学习英文的学习资料。

在国内找个Drupal程序员很困难。

不过,需要说明的是,容易入门的东西,精通了也不会让我们有什么过人之处。难学的东西还有很多人学说明学了它确实很有用。


2. Drupal很慢

做了一个简单的测试,打开一个很干净的页面,需要做25秒数据库连接,尽管只需要9ms(当数据查询繁忙的时候很可能不止这个时间)。启用的模块越多,系统运行越慢。我做过的一个很简单的网站数据库里有65张表,一个复杂一些的网站有250张表,这对系统资源是很大的压力。

标签

7个使用Drupal的理由

admin 提交于 星期二, 05/05/2015 - 09:25

Drupal是一个基于PHP语言编写的开源内容管理框架(CMF,CMS+Framework),它既可以让人不需要编写代码就搭建起一个网站,又可以像PHP框架那样编写复杂的自定义功能模块。

全球有2%【数据来源】的网站使用Drupal创建。它具有以下10大优点:

1. Drupal遵从开源许可,拥有最庞大的开源社区

截止至2015年5月,一共有38,140名开发者为Drupal贡献代码。拥有超过30000个模块和2000个主题。我们可以边开发自己的网站,边学习别人的代码。遇到问题,可以得到庞大的社区支持。

2. 可扩展性强

使用Drupal可以搭建任何类型的网站:门户网站、博客、论坛、购物网站、新闻网站等都是很简单的事情,每添加一种功能只需要启用若干模块,然后用一定的方式和现有系统连接起来。如果功能很特殊,可以自己添加新模块,就像使用普通PHP框架那样实现定制的功能就可以了。

标签