2009-09-27 137 views
1

我正在使用自动节点标题,它将生成一个节点的标题。但是,当我使用node_save创建节点时,这不会发生。见下文:Drupal的自动节点标题和node_save?

function save_contact($firstName, $lastName, $email, $showErrors = false) { 

    global $user; 

    $edit = array(); 
    $edit['type'] = 'contact'; 
    $edit['uid'] = $user->uid; 
    $edit['name'] = $user->name; 
    $edit['promote'] = 0; 
    $edit['comment'] = 0; 
    $edit['status'] = 1; 

    $edit['field_contact_name'][0]['value'] = $firstName; // NOTE 
    $edit['field_contact_surname'][0]['value'] = $lastName; // NOTE 
    $edit['field_contact_email'][0]['email'] = $email; // NOTE 
    $edit['title'] = $firstName.' '.$lastName; // NOTE 

    node_invoke_nodeapi($edit, 'contact'); 
    node_validate($edit); 
    $node = node_submit($edit); 
    node_save($node); 


} 

save_contact("NAME", "SURNAME", "[email protected]"); 

当产生节点,标题变为: “[field_contact_name格式化] [field_contact_surname格式化]” 代替, “NAME姓”。

任何想法,为什么?我猜测自动节点标题没有提到我输入的值,或者可能标题生成发生在我指定值的时间点之前。

任何想法?

线74 auto_nodetitle.module

return empty($node->auto_nodetitle_applied) && ($setting = auto_nodetitle_get_setting($node->type)) && !($setting == AUTO_NODETITLE_OPTIONAL && !empty($node->title));

到那个逻辑

回答

1

我固定它,像这样:

$edit['field_contact_name'] = array(); 
$edit['field_contact_name'][0]['value'] = 
    $edit['field_contact_name'][0]['safe'] = 
     $edit['field_contact_name'][0]['view'] = $firstName; 

$edit['field_contact_surname'] = array(); 
$edit['field_contact_surname'][0]['value'] = 
    $edit['field_contact_surname'][0]['safe'] = 
     $edit['field_contact_surname'][0]['view'] = $lastName; 

$edit['field_contact_email'] = array(); 
$edit['field_contact_email'][0]['email'] = 
    $edit['field_contact_email'][0]['safe'] = 
     $edit['field_contact_email'][0]['view'] = $email; 

换句话说,我只好也specifiy安全和视野。

1

,你有没有包含在auto_nodetitle您接触内容类型?如果联系人仅包含“可选”,那么在此处设置您的标题将阻止模块执行操作。

+0

我已经设置了联系,有一个自动node_title [field_contact_name格式] [field_contact_surname格式] 我的问题是,为什么它居然提出,标题,而不是“NAME姓”。我必须在什么时候设置标题以绕过自动节点标题? – coderama 2009-10-02 07:19:49

+0

或者我必须设置哪些字段,以便自动正确设置标题? – coderama 2009-10-02 07:20:19

+0

从峰值开始,它看起来像节点标题被设置为node_submit()过程的一部分。 – Grayside 2009-10-02 23:59:54