Для работы с друпалом из перла по XMLRPC (в частности, создания нод) сначала надо сделать следующее:
- -- поставить Services 6.x-2.x-dev. Именно -dev, так как в стабильной не работает node.get (или я не знаю, как заставить её работать)
- -- активизировать в админке следующие модули:
- Services.
- Node Service,
- Key Authentication,
- System Service,
- Taxonomy Service,
- User Service,
- XMLRPC Server
- -- в настройках модуля Services выбрать Authorization module (key authentication). В появившихся настройках модуля авторизации снять галку use keys, оставив только use sessid.
Минимальный код на перле для добавления ноды под именем admin, с присвоением пятого термина из первого словаря таксономии:
use warnings;
use XMLRPC::Lite;
use Data::Dumper;
my $node = {
'created' => '1198198800',
'taxonomy' => {
'1' => [
5
]
},
'status' => '1',
'nid' => 0,
'body' => "This is the test",
'teaser' => "",
'uid' => '3',
'name' => 'admin',
'type' => 'story',
'title' => "test story"
};
my $server=XMLRPC::Lite->proxy('http://cms.serann.local/services/xmlrpc');
my $result= $server->call('system.connect');
$result= $server->call('user.login',$result->result->{'sessid'},'admin','qqq');
my $sessid=$result->result->{'sessid'};
$result= $server->call('node.save',$sessid,$node);
$result= $server->call('node.get',$sessid,$result->result);
die $result->faultstring if $result->fault;
print Dumper $result -> result;
Комментарии
ну так это не только из перла а вообще..
спасибо. полезно.
угу, спасибо, надо будет.