积累日常生活的点滴,开发过程的心得。

为Drupal Views提供自定义的Sort字段

这个可以通过Views PHP模块来实现,在Sort中添加一个Global PHP的Sort条件,然后选择
SQL Sort Code,注意这里返回Order By的字句

return 'abs(STRCMP(ifnull(term_data_node_data_field_radio_location__term_fields_term_term_country_value,\'ZZ\'), \''.$view->exposed_input['country'].'\'))';

在这里可以参考到View的exposed filter的值,通过$view->exposed_input['country']。

西游降魔记真心不好看

如何使用VBO加Term Fields模块实现批量修改Term的自定义字段值

VBO可以修改CCK的字段值,但是Drupal6里面Term没有很好的CCK支持,我们只能用term fields来扩展term的自定义字段,要想批量修改Term的自定义字段的值,只能手写PHP脚本。

首先创建一个VBO,可以根据指定的条件筛选要变更的Term的列表,然后
执行Execute Arbitary PHP Script执行下面的语句,将VBO传过来的Object的内容打印出来

watchdog("radio", print_r($object,TRUE));

stdClass Object ( [tid] => 330 [vid] => 4 [name] => Zhejiang [description] => Zhejiang [weight] => 0 [language] => [trid] => 0 )

通过打印内容,我们可以知道$object->tid, $object->vid信息,

然后我们就可以用VBO执行
db_query("INSERT INTO {term_fields_term}
(tid, vid, term_country_value)
VALUES (%d, %d, 'CN')",
$object->tid, $object->vid);

来批量修改Term的字段值

Drupal常用函数

watchdog可以用来输出日志信息到系统的日子报告中
watchdog("radio", "page size:".$page_size);

db_query可以用来执行SQL
$result = db_query("INSERT INTO {my_table}
(name, description, array1, array2)
VALUES ('something', 'something else', '%s', '%s')",
serialize($myarray1), serialize($myarray2)
);

批量修改Drupal的字段

我们可以使用Views Bulk Operations,然后使用Execute Arbitrary PHP Script 来修改实体的字段值

$object->field_foo['und'][0]['value'] = 'some_value'

天价馒头

今天去超市买馒头,貌似过年都没有卖的,好不容易找到了4个馒头,也没看价格,交了钱回家,老婆看到了价格标签,突然发现4个馒头10块钱,比肉包子还贵,tnnd

IPV6的地址

原来IPV6的地址是这个样子的
http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html

Drupal真是太爽了

正在想怎么扩展Term呢,就找到了一个Term Fields的插件,发现基本上你能想到的东西,Drupal上基本上都有了,除了Apple和Google推送服务没人做,不得已自己做了一个。Drupal的扩展性方面简直将joomla爆成渣,不过性能实在是不怎么样,Webhosting用起来还是比较困难啊。

酷狗音乐真tmd傻逼

酷狗的二逼程序员,用它的电台听音乐的时候,为了速度在SD卡的cache目录下面下载了一堆的临时文件,每次都不删除,把我的SD卡都给占满了,真tmd傻逼

从数据库设计的角度如何扩展一个既存数据库应用,同时尽可能小的减少变更及测试工作量

很多时候,当我们要对既存系统进行改造的时候,会遇到改造和测试工作量的评估问题,特别是测试工作量。对于一个规模比较大的,10万行以上的已经上线运行很长时间的系统,如何能够保证改造对既有功能尽可能小的影响,不会产生regression bug,是一个非常严峻的问题。

比如既有的一个表,有三个字段,主键nid,字段A,B,现在我们想多储存一些信息,需要增加对C,D信息的保存时,一种策略是直接在原表基础上追加字段,但是这会造成表的索引,查询计划优化等等一系列信息的变更,对已有的SQL查询造成很大的影响,导致我们的测试工作量极大的增加。还有一种做法就是,追加一个新表,该表的主键nid,和原表是一致的,同时追加C,D字段。当需要对新表做变更的时候,追加对新表的增删改,但是原有的表的SQL处理可以尽可能的减少,这样做的好处是灵活,对既有系统的侵入性小,可以减少我们的测试工作量。

同步内容