或者通过合作网站直接登录猪跑啦
用新浪微博登陆
用QQ账号登陆
我在“结构->分类”里面添加了个词汇表,是个多级分类表,在添加文章的时候已经做为了文章的分类字段了。
现在我要新建一个模块,编程定义一个form页面,里面要引用这个分类的词汇表,通过那个页面来提交一些文章记录,请问
这个新建的form页面怎么通过“'#type' => 'select'”来引用这歌词汇表呢?谢谢
$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, );
孤魂,首先感谢你的回答!其实我想知道的正是“用db_select 获取一个taxonomy 的分类,并且转变成下面数组方式就可以了”,这个是怎么个语句实现的?也就是动态获取部分的语句是怎样?谢谢!!!
随便写一个循环例子,你可以参考它转成数组模式
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; }
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); }
谢谢@分头诗人和@loveye007,非常感谢!!你们说的方法我现在就去试试了!有问题再来请教!
5 个回答
孤魂Lv 10
孤魂,首先感谢你的回答!其实我想知道的正是“用db_select 获取一个taxonomy 的分类,并且转变成下面数组方式就可以了”,这个是怎么个语句实现的?也就是动态获取部分的语句是怎样?谢谢!!!
jsleijhLv 5
随便写一个循环例子,你可以参考它转成数组模式
分头诗人Lv 17
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);
}
loveye007Lv 6
谢谢@分头诗人和@loveye007,非常感谢!!你们说的方法我现在就去试试了!有问题再来请教!
jsleijhLv 5