改變Event模組日期表單的順序?

真的很不懂為何日期表單要這樣排列,應該是年月日呀!卻是日月年。

要改順序的話,除了把一個一個挖出來之外,有沒有比較快的方式呢?
是要改event.module嗎?我有找到這個,但我不希望改到模組內容,因為怕之後升級困難。
不知有沒有其他方式?

<?php

function event_form_date($timestamp, $prefix = 'start', $offset) {
 
// populate drop down values...
  // ...months
 
$months = array(1 => t('January'), t('February'), t('March'), t('April'), t('May'), t('June'), t('July'), t('August'), t('September'), t('October'), t('November'), t('December'));
 
// ...hours
 
if (variable_get('event_ampm', '0')) {
   
$hour_format = t('g');
    for (
$i = 1; $i <= 12; $i++) $hours[$i] = $i < 10 ? "0$i" : $i;
   
$am_pms = array('am' => t('am'), 'pm' => t('pm'));
  }
  else {
   
$hour_format = t('H');
   
// ...hours (with leading 0s)
   
for ($i = 0; $i <= 23; $i++) $hours[$i] = $i < 10 ? "0$i" : $i;
  }
 
// ...minutes (with leading 0s)
 
for ($i = 0; $i <= 59; $i++) $minutes[$i] = $i < 10 ? "0$i" : $i;

 
// This is a GMT timestamp, so the _event_date() wrapper to display local times.
 
$form[$prefix .'_day'] = array(
   
'#prefix' => '<div class="container-inline"><div class="day">',
   
'#type' => 'textfield',
   
'#default_value' => _event_date('d', $timestamp, $offset),
   
'#maxlength' => 2,
   
'#size' => 2,
   
'#required' => TRUE);
 
$form[$prefix .'_month'] = array(
   
'#type' => 'select',
   
'#default_value' => (int) _event_date('n', $timestamp, $offset),
   
'#options' => $months,
   
'#required' => TRUE);
 
$form[$prefix .'_year'] = array(
   
'#type' => 'textfield',
   
'#default_value' => (int) _event_date('Y', $timestamp, $offset),
   
'#maxlength' => 4,
   
'#size' => 4,
   
'#required' => TRUE);
 
$form[$prefix .'_hour'] = array(
   
'#prefix' => '</div><div class="time">—',
   
'#type' => 'select',
   
'#default_value' => _event_date($hour_format, $timestamp, $offset),
   
'#options' => $hours,
   
'#required' => TRUE);
 
$form[$prefix .'_minute'] = array(
   
'#prefix' => ':',
   
'#type' => 'select',
   
'#default_value' => _event_date('i', $timestamp, $offset),
   
'#options' => $minutes,
   
'#required' => TRUE);
  if (isset(
$am_pms)) {
   
$form[$prefix .'_ampm'] = array(
     
'#type' => 'radios',
     
'#default_value' => _event_date('a', $timestamp, $offset),
     
'#options' => $am_pms,
     
'#required' => TRUE);
  }
 
$form[$prefix .'_close'] = array(
   
'#type' => 'markup',
   
'#value' => '</div></div>');

  return
$form;
}

?>

hom 的照片

Re:

覆寫表單的 theme
或是 hook_form_alter
修改表單元素的 #weight

不過表單元素的 key 會加上 prefix 所以都不會一樣
應該很難統一修改

hanamizuki 的照片

Re: 改變Event模組日期表單的順序?

我現在想在文章內文的表單,加上預設文字。
CCK的欄位可以在後台設定預設文字,可是node的標題和內文不行。
我這樣寫

$form['title']['#default_value'] = 'test';

表單預設不會有東西耶!

這樣寫
$form['title']['#value'] = 'test';

這樣會有test,但如果發表之後又編輯,這個欄位的value又會變成test。
照理說應該是default_value,可是卻沒用?

hom 的照片

Re:

表單是用 theme 修改嗎

tokimeki 的照片

Re: 改變Event模組日期表單的順序?

換個想法,用 popup calendar 來作日期時間的選擇如何?

hanamizuki 的照片

Re: 改變Event模組日期表單的順序?

to hom:
對,就是在template.php呼叫tpl檔的那種方式。
然後在print rendoer form之前

$form['title']['#default_value'] = 'test';

CCK的欄位可以這樣做,不過原本的標題和內文沒用。
後來我這樣寫

<?php
if(!$form['title']['#value']){
$form['title']['#value'] = '[範例]衝了!鹿肝每包180元(要100包)';
}
?>

就OK了,可是感覺也不是太drupal。

To Tokimeki,

謝謝!真是好東西,我來用用看。

hom 的照片

Re:

看起來是 #default_value 會在套用 theme 之前進行處理
在 theme 內設定 #default_value 會沒有效果
試試看用 hook_form_alter 來做修改

RSS feed