我正在开发一个需要“职业”页面的 Drupal 站点。我有一个包含 20 多个工作的列表,以及 30 个左右的可以提供这些工作的位置。
我要做的就是做到这一点,当有工作可用时,需要做的就是用户选择职位名称和可用位置,它将使用职位描述和其他信息创建发布我有那个位置的信息。
我遇到的另一个问题是制作它,所以我可以有多个实例......例如。如果相同的工作在两个或多个位置可用。
我一直在努力思考我将如何完成这项工作,但我却一无所获。如果有人有想法指出我正确的方向,将不胜感激。
我正在开发一个需要“职业”页面的 Drupal 站点。我有一个包含 20 多个工作的列表,以及 30 个左右的可以提供这些工作的位置。
我要做的就是做到这一点,当有工作可用时,需要做的就是用户选择职位名称和可用位置,它将使用职位描述和其他信息创建发布我有那个位置的信息。
我遇到的另一个问题是制作它,所以我可以有多个实例......例如。如果相同的工作在两个或多个位置可用。
我一直在努力思考我将如何完成这项工作,但我却一无所获。如果有人有想法指出我正确的方向,将不胜感激。
听起来像是一个很常见的用例;如果是我,我会这样处理:
为您的管理员创建一个自定义表单,例如:
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()
来执行此操作。