drupal将Date表单元素月日年的顺序改造为年月日的方法

drupal将Date表单元素月日年的顺序改造为年月日的方法,第1张

drupal将Date表单元素月日年的顺序改造为年月日的方法

本文的重点是详细介绍drupal将日期表单元素的序列更新转换为年、月、日、年的方式,这是很多drupal客户在进行二次开发时都会遇到的难题。朋友们有必要参考一下。

在本文中,案例描述了drupal将日期表单元素序列更新和转换为年、月和日的方式。分享给大家参考。实际的完成方式如下:

在我们的表单元素中,在很多情况下,会使用像date这样的元素。但是你可以发现这个元素是由三个select组成的,它们的顺序是月、日、年,不符合国家的习惯。

当我还在帮人建网站的时候,就遇到了这么一个难题,却找不到答案。我可以根据主题层来区分这个问题,这样就可以找到匹配的主题功能。这个问题网上好像没有答案。我谷歌了好几次,都找不到。有些人遇到了同样的问题,但他们都失去了机会。

我打算试着处理这样一个难题,因为我相信一定有办法把月、日、年的顺序调整到月、日、年。首先,看看系统生成的默认设置元素中的标记。然后寻找匹配的主题风格号,再找到theme_date。

实际代码如下:

复制代码编码如下:functiontheme_date($element){
returntheme('form_element',$element,'}
container-inline在这里形成。但是这里不决定三个子元素的顺序。我的第一个想法是覆盖这个涵洞号print_r($element['#children']),这样就可以解决修复序列的问题。

但我很想知道关键代码的哪一部分决定了三个子元素的顺序,从而找到expand_date($element)。实际代码如下:

复制代码如下:函数expand_date($element){
/默认为当前日期
if(empty($element['#value']){
$elementformat_date(time(),'custom','j'),
'month'=>;format_date(time(),'custom','n'),
'year'=>;format_date(time(),'custom','Y');
}

$element['#tree']=TRUE;

//以站点选择的日期格式确定日、月、年的顺序。这里,决策日期文件格式:
$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);

//输出日期的多选符。
foreach($orderas$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;
}
注意一部分代码注释,三个子元素的顺序是由日期文件格式决定的。我猜通过调整日期文件格式,可以改变三个子元素的顺序。我试着把日期文件格式改成了年、月、日:导航栏进入管理/设置/日期-时间,长、中、短三种日期文件格式都调整好了。

这样,日期元素中的顺序从“月、日和年”调整为更好的“年、月和日”。

期待以上对大家的drupal二次开发有所帮助。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/772017.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存