Fix the ordering for future talks
Rather than the custom event sorting plugin being based on the `created` value, this change adds a new `field_event_date` field to the talk node type and uses this for the sorting instead. This commit also adds a new `TalkDateUpdater` service that extracts either the next event date if there is a future date, or the last past event date if there is no future date, from `field_events` for each talk and saves it into the event date field. For consistency, and to ensure that the results are ordered correctly, the talk date updater converts the date from a date string (e.g. `2020-08-24`) into a UNIX timestamp, and the timestamp is saved in the event date field. This can be changed at a later date if needed. The talks view has been updated to use the updated sort plugin, and the existing tests have been updated to use the new field. References #204
This commit is contained in:
parent
bdf225b05d
commit
6d9ecd8df0
17 changed files with 340 additions and 21 deletions
|
@ -4,6 +4,7 @@ status: true
|
|||
dependencies:
|
||||
config:
|
||||
- field.field.node.talk.body
|
||||
- field.field.node.talk.field_event_date
|
||||
- field.field.node.talk.field_events
|
||||
- field.field.node.talk.field_excerpt
|
||||
- field.field.node.talk.field_slides
|
||||
|
@ -143,4 +144,5 @@ content:
|
|||
region: content
|
||||
settings: { }
|
||||
third_party_settings: { }
|
||||
hidden: { }
|
||||
hidden:
|
||||
field_event_date: true
|
||||
|
|
|
@ -4,6 +4,7 @@ status: true
|
|||
dependencies:
|
||||
config:
|
||||
- field.field.node.talk.body
|
||||
- field.field.node.talk.field_event_date
|
||||
- field.field.node.talk.field_events
|
||||
- field.field.node.talk.field_excerpt
|
||||
- field.field.node.talk.field_slides
|
||||
|
@ -66,4 +67,5 @@ content:
|
|||
settings: { }
|
||||
third_party_settings: { }
|
||||
hidden:
|
||||
field_event_date: true
|
||||
field_excerpt: true
|
||||
|
|
|
@ -5,6 +5,7 @@ dependencies:
|
|||
config:
|
||||
- core.entity_view_mode.node.teaser
|
||||
- field.field.node.talk.body
|
||||
- field.field.node.talk.field_event_date
|
||||
- field.field.node.talk.field_events
|
||||
- field.field.node.talk.field_excerpt
|
||||
- field.field.node.talk.field_slides
|
||||
|
@ -32,6 +33,7 @@ content:
|
|||
third_party_settings: { }
|
||||
hidden:
|
||||
body: true
|
||||
field_event_date: true
|
||||
field_events: true
|
||||
field_slides: true
|
||||
field_type: true
|
||||
|
|
23
config/default/field.field.node.talk.field_event_date.yml
Normal file
23
config/default/field.field.node.talk.field_event_date.yml
Normal file
|
@ -0,0 +1,23 @@
|
|||
uuid: 5c54e34a-4e53-4e70-b621-1d40953385cd
|
||||
langcode: en
|
||||
status: true
|
||||
dependencies:
|
||||
config:
|
||||
- field.storage.node.field_event_date
|
||||
- node.type.talk
|
||||
id: node.talk.field_event_date
|
||||
field_name: field_event_date
|
||||
entity_type: node
|
||||
bundle: talk
|
||||
label: 'Next event date'
|
||||
description: ''
|
||||
required: false
|
||||
translatable: false
|
||||
default_value: { }
|
||||
default_value_callback: ''
|
||||
settings:
|
||||
min: 0
|
||||
max: null
|
||||
prefix: ''
|
||||
suffix: ''
|
||||
field_type: integer
|
20
config/default/field.storage.node.field_event_date.yml
Normal file
20
config/default/field.storage.node.field_event_date.yml
Normal file
|
@ -0,0 +1,20 @@
|
|||
uuid: 86aec221-e3cb-4da3-90b5-522b661c6313
|
||||
langcode: en
|
||||
status: true
|
||||
dependencies:
|
||||
module:
|
||||
- node
|
||||
id: node.field_event_date
|
||||
field_name: field_event_date
|
||||
entity_type: node
|
||||
type: integer
|
||||
settings:
|
||||
unsigned: false
|
||||
size: normal
|
||||
module: core
|
||||
locked: false
|
||||
cardinality: 1
|
||||
translatable: true
|
||||
indexes: { }
|
||||
persist_with_no_fields: false
|
||||
custom_storage: false
|
|
@ -144,7 +144,7 @@ display:
|
|||
sorts:
|
||||
event_sort:
|
||||
id: event_sort
|
||||
table: node_field_data
|
||||
table: node__field_event_date
|
||||
field: event_sort
|
||||
relationship: none
|
||||
group_type: group
|
||||
|
@ -154,7 +154,6 @@ display:
|
|||
expose:
|
||||
label: ''
|
||||
granularity: second
|
||||
entity_type: node
|
||||
plugin_id: event_sort
|
||||
title: Talks
|
||||
header: { }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue