Drupal 7 开发内部培训资料, 分头诗人

drupal7中如何编程调用已有的category

赞成!
0
否决!

我在“结构->分类”里面添加了个词汇表,是个多级分类表,在添加文章的时候已经做为了文章的分类字段了。

现在我要新建一个模块,编程定义一个form页面,里面要引用这个分类的词汇表,通过那个页面来提交一些文章记录,请问

这个新建的form页面怎么通过“'#type' => 'select'”来引用这歌词汇表呢?谢谢

5 个回答

赞成!
0
否决!

  $form['type'] = array(
    '#type' => 'select',
	'#title' => '请选择一项',
    '#required' => TRUE,
    '#default_value' => '关于drupalla.com的一般性反馈',
   //留意这行,你只要用db_select 获取一个taxonomy 的分类,并且转变成下面数组方式就可以了
    '#options' => array(0 =>'一般性反馈', 1 => t('建议一个新功能'), 2 =>t('合作伙伴机会'), 3 => t('案例提交')),
    '#required' => TRUE,
  );
赞成!
0
否决!

孤魂,首先感谢你的回答!其实我想知道的正是“用db_select 获取一个taxonomy 的分类,并且转变成下面数组方式就可以了”,这个是怎么个语句实现的?也就是动态获取部分的语句是怎样?谢谢!!!

赞成!
0
否决!

随便写一个循环例子,你可以参考它转成数组模式

function catelog($parent = 0)
{
	global $language;
	$output = '<ul>';
	$query = db_select('taxonomy_term_data','td');
	$query->leftJoin('taxonomy_term_hierarchy','th','td.tid = th.tid');
	$query->fields('td')->fields('th', array('parent'))
		->condition('td.vid', '2')->condition('td.language', $language->language)->condition('th.parent', $parent)->orderBy('weight', 'ASC')->orderBy('tid', 'DESC');
	$query = $query->execute()->fetchAll();
	foreach ($query as $ob)
	{
		$output .= '<li>';
		$output .= l($ob -> name, 'taxonomy/term/'.$ob -> tid);
		$p = db_select('taxonomy_term_hierarchy', 't')->fields('t')->condition('t.parent', $ob -> tid)->execute();
		$num_of_results = $p->rowCount();
		//$output .= ' ('.$num_of_results.')';
		if($num_of_results > 0){
			$output .= catelog($ob -> tid);
		}
		$output .= '</li>';
	}	
	$output .= '</ul>';
	return $output;
}
赞成!
0
否决!

This snippet will create a checkbox list of Vocabulary names. Could easily be changed for a select list ( '#type' => 'select', ) .

function YOUR_FUNCTION_NAME() {
  $vocabulary = taxonomy_get_vocabularies();
  $checklist_vocab_array = array(); /* Change to array('0' => '--none--'); if you want a none option*/
  foreach ($vocabulary as $item) {
  $key = $item->vid;
  $value = $item->name;
  $checklist_vocab_array[$key] = $value;
  }

  $form['YOUR_MODULE_NAME_YOUR_FORM_NAME'] = array(
    '#type'             => 'checkboxes',
    '#title'            => t('List of current Vocabularies.'),
    '#position'         => 'left' ,
    '#options'          => $checklist_vocab_array ,
    '#default_value'    => variable_get('YOUR_MODULE_NAME_YOUR_FORM_NAME'),
    '#description'      => t('List of vocabularies displayed as checkboxes'),
  );
     return system_settings_form($form);
}

赞成!
0
否决!

谢谢@分头诗人和@loveye007,非常感谢!!你们说的方法我现在就去试试了!有问题再来请教!