壹、問題:
最近壹個項目是用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><ahref="javascript:importConfirm()">導入書</a>
希望本文所述對大家的drupal程序設計有所幫助。