本文实例讲述了drupal导入数据的实现方法。分享给大家供大家参考。具体实现方法如下:
一、问题:
最近一个项目是用drupal实现的。最后,面临一些书的数据的导入。找了些drupal的模块,不太好用。 最后的方法是创建一个基本页面,PHP Code导入数据。
二、解决方法:
首先在源数据那头,把数据通过JSON方式发布出来,在这个代码里,通过HTTP获取数据,并用JSON解码。得到数据以后, 生成drupal的node,用 node_save 保存到drupal里。 这种方法有安全性的问题,所以在不使用的时候,记得加止阻止代码执行的语句。
页面代码如下:
复制代码代码如下:<scriptlanguage="javascript">
functionimportConfirm(){
if(confirm("确认信息")){
document.location="/<?phpechocurrent_path()?>/import";
}
}
</script></p> <p><?php
if(arg(2)=="import") {
//获取数据源的内容
$result=drupal_http_request("url");
if($result->code==200){
//JSON数据源解码
$books=json_decode(trim($result->data));
foreach($books as $book) {
foreach($bookas$k=>$v){ //原数据是base64编码的,这里解码,并转换成utf8编码
$book->$k=mb_convert_encoding(base64_decode($v),"UTF8","GB2312");
}
$node=newstdClass();
$node->type='ct_tushu'; //内容类型
$node->uid=1;
$node->status=1;
$node->language="zh-hans";
$node->created=date("Y-m-dH:i:s");
$node->field_tushuauthor_multi=array('und'=>array( array("value"=>($book->author)) ));
$node->title=($book->title);
$node->field_tushuisbn=array("und"=>array( array("value"=>($book->isbn)) ));
node_save($node);
}
}
}
?> </p> <p><a href="javascript:importConfirm()">导入书</a>
希望本文所述对大家的drupal程序设计有所帮助。