hook_nodeapi的update

最近,需要在节点创建的时候需要在一个分类里同时创建和该节点标题相同的分类项,这时,就要用hook_nodeapi,在创建节点的时候用节点标题创建一个分类,在更新的时候更新分类的name。

按照一般思路,创建的时候用case 'insert';向tarm_data和term_hierarchy插入相应记录,添加分类。但是在编辑节点,更新的时候,使用case 'update'的,update是在节点刚被更新到了数据库中,也就是说在运行我们的代码的时候节点已经更新完了,那么如何才能把和我们之前节点标题相同的分类与节点编辑同步更新呢?我的想法是能不能在update之前,把我们更新之前的标题存到一个变量, 然后在case 'update'的时候当做SQL语句的查询条件,用以达到同步更新的目的。但是经过一些尝试,发现做不到,但是却发现了另外一个很神奇的地方,解决了这个问题。


本文永久地址:http://drupalsh.cn/node/3027 , 转载请注明出处.

从事搜索引擎优化必须具备的“4P”品质

如果seo有哪些定律的话,那就是一定会有赢家,也一定会有输家。有些品质是作为成功的seo策略的必不可少的,我们具体可以把这些分为4类:积极主动,毅力,坚持不懈和耐心。
  Proactive——前瞻性
  前瞻性对于一个成功的seo来说是十分重要的,主要有一下几点原因:
  工作和结果之间会有一个潜伏期
  我们今天做的任何的seo的工作不会立刻对流量和收入产生什么影响。在seo这方面,当你的网站或者站内文件(反向链接,社交活动等等)有新的变化了,对搜索引擎的索引和搜索结果返回页面的过滤的影响会有一个潜伏期。
  这个潜伏期会有多长是根据情况而定的。如果你给你的网站创建一个新的目标页面那么你的网站将会迅速的被搜索到。你可以在一天之内迅速的看到来自新关键词的新流量。如果你对你的网站进行站内和站外的大换血,你至少得花一个月才能看到你所想要的结果。
  可行的方法:制作一个日历来好好计划你的SEO活动。使它和你的工作进度想吻合。提前想好计划。确保你每天的计划列入你的长远的计划中。
  Persistence——持久性


本文永久地址:http://drupalsh.cn/node/2977 , 转载请注明出处.

字符串替换的方法

这几天,工作中遇到一个小问题,有一内容类型的字段存储的是语言,因为这写数据是用Excel导入做的,所以为了处理简单,很多的

语言就用逗号分隔,把所有语言做一个字符串,这样存入的时候就简单的多。但是由于当初数据质量的问题,有一部分“Chinese”是

“Mandarin Chinese”,现在需要把所有的“Mandarin Chinese”改为“Chinese”。
这就需要把一个字符串中的部分字符串替换掉。对于这样的问题,一般就是用正则表达式来做替换,或者使用PHP的一些替换的方法,

这样做的话感觉很比较麻烦,时间又比较紧,所以就想了这样一个懒人办法,使用explode函数,把要替换的字符串做为分割符号,然

后把两个数组元素中间接上要换成的字符串,然后UPDATE一下就行了。
代码如下:
<?php
function replace(){
$sql = db_query("SELECT field_languages_value,nid FROM {content_type_company_profile} WHERE

field_languages_value like '%Mandarin Chinese%'");
while($result = db_fetch_object($sql)){


本文永久地址:http://drupalsh.cn/node/2804 , 转载请注明出处.

Linux小技巧

搜集的一些Linux的小技巧,在有时候会带来不小的帮助。
[文本处理]
1、查看某文件的一部分
如果你只想看文件的前 5 行,可以使用 head 命令,
如:head -5 /etc/passwd
如果你想查看文件的后 10 行,可以使用 tail 命令,
如:tail -10 /etc/passwd
查看文件中间一段,可以使用 sed 命令
如:sed –n '5,10p' /etc/passwd 这样你就可以只查看文件的第 5 行到第 10 行
2、将 file.txt 里的123改为 456
方法 1
sed 's/123/456/g' file.txt > file.txt.new   修改的保存到其它文件
sed -i 's/123/456/g' file.txt 直接修改原文件
方法 2
vi file.txt
输入命令:
:%s/123/456/g
注意:如果替换的文件有特殊符号如/就要用\来取消。


本文永久地址:http://drupalsh.cn/node/2681 , 转载请注明出处.

hook_update_N创建的字段无法写入数据

对于已经上线的网站,自定义模块在牵扯到有关更改数据表结构,或者需要另建新表的修改的时候,大多是使用hook_update_N来操作。有了这个钩子函数,有关表结构的修改就变得容易多了很多并且不会影响表里原来的数据。

<?php
function ohio_job_update_1(){
$ret = array();
$ret[] = update_sql("ALTER TABLE {user_info} ADD state varchar(255) NOT NULL default  ''");
return
$ret;
}
?>

这样就在已有的表中添加一个新的字段,在表单的提交函数中,使用drupal_write_record函数在存储数据。
<?php
$table
= 'user_info';
$record = new stdClass();
$record->name= $form_state['values']['name'];
…………
$record
->state= $form_state['values']['state'];

drupal_write_record($table, $record);
?>


本文永久地址:http://drupalsh.cn/node/2603 , 转载请注明出处.

drupal清缓存时出现白屏

     近日,在维护一个drupal网站的时候,由于自定义模块的表结构进行了更改,更新了.install文件,之后上传至空间。在清除缓存的时候,出现了浏览器空白的情况。使用性能---清除缓存,也是白屏,刷新页面出现缓存清除成功消息。
    之后查看报告,发现是install报告有乱码,下载下来编辑没有任何问题,编码也是UTF-8的。上传上去,清除缓存,还是有问题。最后,偶然间发现一款可以在线编辑文件的FTP,Cute FTP,安装上之后,在线编辑install文件,打开之后,在文件开始的地方,问题找到了,一个火星字母赫然在目,原来是上传文件到空间之后,因为和本地运行环境的不同,文件可能会出现乱码,删掉乱码,保存。再试着清除缓存,一切正常了。
     当然这样的问题出现的机会很少,但是如果出现了,也会造成不少麻烦。在此,推荐这款可以在线编辑的FTP:Cute FTP。当然这么好用的软件,不会是免费的,不过有一个月的试用期,另外这样的问题估计一年出不了几次,试用版的也就足够了,当然是有破解版的,不过破解版的软件,终归可能会有这样那样的问题,所以还是请支持正版吧,虽然我们只是试用,呵呵。


本文永久地址:http://drupalsh.cn/node/2551 , 转载请注明出处.

在centos上为drupal安装Apache Solr的详细步骤

Apache solr的效果大家都知道,可以极大提高用户的搜索体验,用户根据条件一步步Filter出自已想要的结果。

适合用在有大数据量的购物网站和分类信息网站上。有了Solr,php也可以做java能做的事~。

下面为详细安装步骤,一步步来就能配出如图所示的搜索效果:

1). 安装Java SDK

yum install java-1.6*

2).下载最新版本的Solr,当前最新版本是1.4.1 , 经过测试,在国内用bjtu.edu.cn地址下载速度比较快,下载下

来后,放到非web目录的文件夹下面,我放在了/home/ruby 目录下面,并重命名为solr

cd /home/ruby

wget http://mirror.bjtu.edu.cn/apache/lucene/solr/1.4.1/apache-solr-1.4.1.tgz

tar xvfz apache-solr-1.4.1.tgz

mv apache-solr-1.4.1 solr


本文永久地址:http://drupalsh.cn/node/2358 , 转载请注明出处.

Drupal中的分类(Taxonomy)用法总结

Drupal提供的API,如果适当的利用,会省用我们很多SQL语句,每次操作分类,都会到api.drupal.org上查半天,现在有了这个全面的总结,方便多了


本文永久地址:http://drupalsh.cn/node/2308 , 转载请注明出处.
同步内容