2012-07-11 96 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