在数据表drupal 7中排序d / m / Y日期

Posted

技术标签:

【中文标题】在数据表drupal 7中排序d / m / Y日期【英文标题】:sorting d/m/Y date in datatables drupal 7 【发布时间】:2017-10-07 18:53:38 【问题描述】:

我在 drupal 7 中创建一个带有数据表的视图。它有一个格式为“d/m/Y”的列日期。为了使其正确排序,我计划将属性“数据顺序”添加到这些表格单元格中,如here 所引用的那样。

我在尝试使用模板或预处理函数重写包含日期的<td> 时遇到问题。我想在每一行的日期单元格中添加 data-order 属性,以便以后可以将其用于前端排序。

有人可以帮我吗?

【问题讨论】:

请描述您面临的“问题”,例如您尝试重写<td>s 的代码。 data-order 仅适用于您在视图和您希望如何排序列之间存在差异的列。在我看来,使用排序插件会更好。 @davidkonrad 我正在寻找将数据顺序属性添加到现有列的方法...我尝试使用模板预处理,但它允许我使用 td 的 innerhtml 而不是属性。 “正确排序”是什么意思? drupal 视图可以很好地对日期进行排序... 如果你想为每一行添加一些属性,以便以后可以将其用于前端排序(JS/jQuery),你应该提到这一点。如果是这种情况,您应该使用像“Ymd”这样的格式,所以首先是年份,然后是月份和日期,然后您可以将其排序为任何字符串或数字 - 它应该可以工作。 @BartHofma,仅视图就完美了。我在合并视图和数据表时遇到问题。 【参考方案1】:

不是添加“数据顺序”属性,而是通过在日期列中添加隐藏跨度来解决问题。我以前尝试过同样的事情,但使用模板预处理,但没有奏效。

/* This did not work */
function template_preprocess_views_view_field__viewname__date_field(&$vars) 
  $vars['output'] = "<span class='hidden'>".$vars['row']->date."</span>".$vars['row']->date;



/* THIS WORKED */
/* Field: Content: date */
$handler->display->display_options['fields']['date_h']['id'] = 'date_h';
$handler->display->display_options['fields']['date_h']['table'] = 'node';
$handler->display->display_options['fields']['date_h']['field'] = 'created';
$handler->display->display_options['fields']['date_h']['exclude'] = TRUE;
$handler->display->display_options['fields']['date_h']['date_format'] = 'custom';
$handler->display->display_options['fields']['date_h']['custom_date_format'] = 'U';
$handler->display->display_options['fields']['date_h']['second_date_format'] = 'long';
/* Field: Content: Post date */
$handler->display->display_options['fields']['date']['id'] = 'date';
$handler->display->display_options['fields']['date']['table'] = 'node';
$handler->display->display_options['fields']['date']['field'] = 'created';
$handler->display->display_options['fields']['date']['label'] = 'Date';
$handler->display->display_options['fields']['date']['date_format'] = 'short_date_only';
$handler->display->display_options['fields']['date']['alter']['alter_text'] = TRUE;
$handler->display->display_options['fields']['date']['alter']['text'] = '<span class="hidden">[date_h]</span>[date]';

【讨论】:

以上是关于在数据表drupal 7中排序d / m / Y日期的主要内容,如果未能解决你的问题,请参考以下文章

将Y-m-d转换为Y年m月d日

无法在 Drupal 7 的视图中对自定义字段进行排序或过滤

Drupal 7:如何在引用实体的最近日期对节点进行排序?

使用 Views 模块(Drupal 7)显示 php 数组

sql语句获取今天昨天近7天本周上周本月上月半年数据

MySQL 到 Drupal 7 db_select