最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

  發(fā)布時(shí)間:2014-11-04 17:29:56   作者:佚名   我要評(píng)論
這篇文章主要為大家介紹了drupal將Date表單元素月日年的順序改造為年月日的方法,是很多drupal用戶在進(jìn)行二次開(kāi)發(fā)的時(shí)候都會(huì)遇到的問(wèn)題,需要的朋友可以參考下

本文實(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í)候,就遇到了這樣的問(wèn)題,但是找不到答案。我判斷,可以通過(guò)theme層搞定這個(gè)問(wèn)題,這樣就去找了對(duì)應(yīng)的theme函數(shù)。這個(gè)問(wèn)題在網(wǎng)上好像是找不到答案的,我google了多次,但是都找不到,也有人遇到了同樣的問(wèn)題,但是都是繞道而行。

我決定嘗試著解決這樣的問(wèn)題,因?yàn)槲蚁嘈?,一定存在一個(gè)方法,將月日年的順序調(diào)整為年月日。先看系統(tǒng)生成的默認(rèn)元素里面的markup。然后就去找對(duì)應(yīng)的主題函數(shù),這樣就找到了theme_date。

具體代碼如下:

復(fù)制代碼
代碼如下:
function theme_date($element) {
return theme('form_element', $element, '<div class="container-inline">'. $element['#children'] .'</div>');
}

container-inline就是這里生成。但是3個(gè)子元素的順序不是這里決定的。我的第一個(gè)想法是,覆寫(xiě)這個(gè)函數(shù),print_r($element['#children']),這樣就可以到定這個(gè)順序問(wèn)題了。

不過(guò)我很想知道,核心代碼中,哪部分決定了3個(gè)子元素的順序,這樣,就找到了expand_date($element)。其具體代碼如下:

復(fù)制代碼
代碼如下:
function 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;
}

注意代碼注釋說(shuō)明的部分,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二次開(kāi)發(fā)有所幫助。

相關(guān)文章

最新評(píng)論

广河县| 循化| 临武县| 聂拉木县| 健康| 仁寿县| 龙井市| 台东市| 登封市| 临高县| 洪雅县| 西城区| 桃园市| 宁乡县| 鹰潭市| 酉阳| 望谟县| 汶川县| 增城市| 文成县| 义乌市| 布尔津县| 那坡县| 政和县| 云南省| 龙江县| 合水县| 丹阳市| 遵义市| 刚察县| 昭平县| 孟州市| 项城市| 云安县| 天全县| 合阳县| 霍州市| 承德县| 乌拉特前旗| 阿拉善左旗| 惠州市|