2012-07-11 64 views
2

我正在開發一個需要'職業'頁面的Drupal站點。我有一份20個左右的工作清單,以及30個左右可以提供這些工作的地點。根據選項在下拉菜單中創建Drupal內容

我期望做的就是讓工作變得可用時,所有需要做的事情就是用戶選擇工作職位和工作地點,並在工作崗位上創建職位描述和其他信息,以及該位置的信息。

我遇到的另一個衝擊是讓它可以有多個實例...例如。如果在兩個或更多地點有相同的工作。

我一直試圖圍繞我如何使這項工作,我來了空白。如果有人有一個想法讓我指出正確的方向,將不勝感激。

回答

3

聽起來像是一個很常見的用例;如果是我,我會把接近它是這樣的:

  • 創建「工作」內容類型
  • 添加一個新的「位置」詞彙
  • 上的「工作」內容類型添加一個長期參考場到'位置'詞彙表,無限值(或每個工作允許的最大位置數)。
  • 創建一個自定義窗體爲您的管理員,是這樣的:

    function MYMODULE_add_job_form($form, &$form_state) { 
        $form['title'] = array(
        '#type' => 'textfield', 
        '#title' => t('Title'), 
        '#maxlength' => 255, 
        '#required' => TRUE 
    ); 
    
        // Load the vocabulary (the machine name might be different). 
        $vocabulary = taxonomy_vocabulary_machine_name_load('location'); 
    
        // Get the terms 
        $terms = taxonomy_get_tree($vocabulary->vid); 
    
        // Extract the top level terms for the select options 
        $options = array(); 
        foreach ($terms as $term) { 
        $options[$term->tid] = $term->name; 
        } 
    
        $form['locations'] = array(
        '#type' => 'select', 
        '#title' => t('Locations'), 
        '#options' => $options, 
        '#multiple' => TRUE, 
        '#required' => TRUE 
    ); 
    
        $form['submit'] = array(
        '#type' => 'submit', 
        '#value' => t('Add job') 
    ); 
    
        return $form; 
    } 
    
  • 創建一個自定義提交處理程序的形式添加編程新節點:

    function MYMODULE_add_job_form_submit($form, &$form_state) { 
        $location_tids = array_filter($form_state['values']['locations']); 
    
        $node = new stdClass; 
        $node->type = 'job'; 
        $node->language = LANGUAGE_NONE; 
        node_object_prepare($node); 
    
        $node->title = $form_state['values']['title']; 
        $node->field_location_term_ref[LANGUAGE_NONE] = array(); 
    
        foreach ($location_tids as $tid) { 
        $node->field_location_term_ref[LANGUAGE_NONE][] = array(
         'tid' => $tid 
        ); 
        } 
    
        node_save($node); 
    
        $form_state['redirect'] = "node/$node->nid"; 
    } 
    

你」我們需要爲該表單添加一個頁面回調,並且可能需要做一些小的修改(字段名稱等),但它應該給你一個很好的起點。您還需要加載位置分類術語以提取您提到的描述信息...您可以使用taxonomy_term_load()來完成此操作。

+0

太棒了。非常感謝!這應該讓我需要去的地方。對不起,這樣一個簡單的問題。出於某種原因,我的大腦不會連接點。 – Cpage 2012-07-11 17:44:47

+0

沒有probs :)有很多不同的方法來皮膚的Drupal貓很難知道從哪裏開始有時 – Clive 2012-07-11 18:11:25

相關問題