drupal將Date表單元素月日年的順序改造為年月日的方法

本文實(shí)例講述了drupal將Date表單元素月日年的順序改造為年月日的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
我們?cè)诒韱卧刂?很多時(shí)候都會(huì)使用date這樣的元素,但是,你會(huì)發(fā)現(xiàn),這個(gè)元素由3個(gè)select組成,他們的順序?yàn)樵拢?,年,這是不符合中國(guó)的習(xí)慣的。
我在幫人指導(dǎo)建站的時(shí)候,就遇到了這樣的問題,但是找不到答案。我判斷,可以通過theme層搞定這個(gè)問題,這樣就去找了對(duì)應(yīng)的theme函數(shù)。這個(gè)問題在網(wǎng)上好像是找不到答案的,我google了多次,但是都找不到,也有人遇到了同樣的問題,但是都是繞道而行。
我決定嘗試著解決這樣的問題,因?yàn)槲蚁嘈?,一定存在一個(gè)方法,將月日年的順序調(diào)整為年月日。先看系統(tǒng)生成的默認(rèn)元素里面的markup。然后就去找對(duì)應(yīng)的主題函數(shù),這樣就找到了theme_date。
具體代碼如下:
return theme('form_element', $element, '<div class="container-inline">'. $element['#children'] .'</div>');
}
container-inline就是這里生成。但是3個(gè)子元素的順序不是這里決定的。我的第一個(gè)想法是,覆寫這個(gè)函數(shù),print_r($element['#children']),這樣就可以到定這個(gè)順序問題了。
不過我很想知道,核心代碼中,哪部分決定了3個(gè)子元素的順序,這樣,就找到了expand_date($element)。其具體代碼如下:
// Default to current date
if (empty($element['#value'])) {
$element['#value'] = array('day' => format_date(time(), 'custom', 'j'),
'month' => format_date(time(), 'custom', 'n'),
'year' => format_date(time(), 'custom', 'Y'));
}
$element['#tree'] = TRUE;
// Determine the order of day, month, year in the site's chosen date format.此處決定日期格式:
$format = variable_get('date_format_short', 'm/d/Y - H:i');
$sort = array();
$sort['day'] = max(strpos($format, 'd'), strpos($format, 'j'));
$sort['month'] = max(strpos($format, 'm'), strpos($format, 'M'));
$sort['year'] = strpos($format, 'Y');
asort($sort);
$order = array_keys($sort);
// Output multi-selector for date.
foreach ($order as $type) {
switch ($type) {
case 'day':
$options = drupal_map_assoc(range(1, 31));
break;
case 'month':
$options = drupal_map_assoc(range(1, 12), 'map_month');
break;
case 'year':
$options = drupal_map_assoc(range(1900, 2050));
break;
}
$parents = $element['#parents'];
$parents[] = $type;
$element[$type] = array(
'#type' => 'select',
'#value' => $element['#value'][$type],
'#attributes' => $element['#attributes'],
'#options' => $options,
);
}
return $element;
}
注意代碼注釋說明的部分,3個(gè)子元素的順序,是由日期格式?jīng)Q定的,我猜測(cè),調(diào)整日期格式,就可以改變3個(gè)子元素的順序,我嘗試著將日期格式都改為了年月日:導(dǎo)航到admin/settings/date-time,將3中長(zhǎng),中,短的日期格式都調(diào)整為自定義格式,Y/m/d(D) H:i。
這樣,date元素中的順序,就從“月,日,年”調(diào)整為了“年,月,日”。
希望本文所述對(duì)大家的drupal二次開發(fā)有所幫助。
相關(guān)文章
- 真是不看不知道,Drupal 真奇妙。很多使用CMS內(nèi)容管理系統(tǒng)的人可能都會(huì)知道一款國(guó)外的CMS系統(tǒng):Drupal 。在我們傳統(tǒng)的想象中CMS除了能做內(nèi)容文章站外,其他還有圖片站,分2010-01-24
- 對(duì)頁(yè)面和靜態(tài)資源的啟用緩存和Gzip壓縮傳輸.2010-01-24
- drupal模塊開發(fā)分析,方便想要drupal模塊開發(fā)的朋友2012-12-06
drupal 自定義表單調(diào)用autocomplete主標(biāo)簽實(shí)現(xiàn)代碼
drupal 自定義表單調(diào)用autocomplete主標(biāo)簽實(shí)現(xiàn)代碼,需要的朋友可以參考下2012-12-06drupal導(dǎo)入圖片的實(shí)現(xiàn)方法
這篇文章主要為大家介紹了drupal導(dǎo)入圖片的實(shí)現(xiàn)方法,是非常實(shí)用的技巧,需要的朋友可以參考下2014-11-03drupal導(dǎo)入數(shù)據(jù)的實(shí)現(xiàn)方法
這篇文章主要為大家介紹了drupal導(dǎo)入數(shù)據(jù)的實(shí)現(xiàn)方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-11-03drupal創(chuàng)建拖動(dòng)排序表格的方法
這篇文章主要為大家介紹了drupal創(chuàng)建拖動(dòng)排序表格的方法,包括了具體的步驟與實(shí)現(xiàn)代碼,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-11-03drupal實(shí)現(xiàn)輸出可點(diǎn)擊表頭排序表格的方法
這篇文章主要為大家介紹了drupal實(shí)現(xiàn)輸出可點(diǎn)擊表頭排序表格的方法,包括了表的定義、SQL語(yǔ)句、表內(nèi)容及生成HTML文件等,需要的朋友可以參考下2014-11-03drupal按分類進(jìn)行文章排序的實(shí)現(xiàn)方法
這篇文章主要為大家介紹了drupal按分類進(jìn)行文章排序的實(shí)現(xiàn)方法,較為詳細(xì)的分析了drupal文件組織結(jié)構(gòu)與實(shí)現(xiàn)文章排序的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-11-03- 這篇文章主要為大家介紹了drupal常用到的幾種過濾函數(shù),總結(jié)了常見過濾函數(shù)的具體用法,非常實(shí)用,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-11-03