【问题标题】:sorting d/m/Y date in datatables drupal 7在数据表drupal 7中排序d / m / Y日期
【发布时间】: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,仅视图就完美了。我在合并视图和数据表时遇到问题。

标签: sorting datatables drupal-7 drupal-views


【解决方案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]';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 2018-05-25
    • 2014-04-06
    • 2015-01-07
    相关资源
    最近更新 更多