Issue #3383219 by Lendude, greatmatter, HeikkiY, PapaGrande, hansfn: Views RSS Feed Fields adds <time> tag

(cherry picked from commit 2e94575d27)
merge-requests/5943/head
catch 2023-12-20 23:29:42 +00:00
parent dca79fb044
commit f7e93f2a9d
3 changed files with 24 additions and 4 deletions

View File

@ -136,7 +136,9 @@ class RssFields extends RowPluginBase {
$item->description = is_array($field) ? $field : ['#markup' => $field];
$item->elements = [
['key' => 'pubDate', 'value' => $this->getField($row_index, $this->options['date_field'])],
// Default rendering of date fields adds a <time> tag and whitespace, we
// want to remove these because this breaks RSS feeds.
['key' => 'pubDate', 'value' => trim(strip_tags($this->getField($row_index, $this->options['date_field'])))],
[
'key' => 'dc:creator',
'value' => $this->getField($row_index, $this->options['creator_field']),

View File

@ -47,6 +47,20 @@ display:
plugin_id: field
entity_type: node
entity_field: title
created:
id: created
table: node_field_data
field: created
relationship: none
group_type: group
admin_label: ''
entity_type: node
entity_field: created
plugin_id: field
type: timestamp
settings:
date_format: custom
custom_date_format: 'Y-m-d'
body:
id: body
table: node__body
@ -315,7 +329,7 @@ display:
link_field: view_node
description_field: body
creator_field: title
date_field: title
date_field: created
guid_field_options:
guid_field: view_node
guid_field_is_permalink: true

View File

@ -42,20 +42,23 @@ class RssFieldsTest extends ViewsKernelTestBase {
}
/**
* Tests correct processing of link fields.
* Tests correct processing of RSS fields.
*
* This overlaps with \Drupal\Tests\views\Functional\Plugin\DisplayFeedTest to
* ensure that root-relative links also work in a scenario without
* subdirectory.
*/
public function testLink() {
public function testRssFields() {
// Set up the current user as uid 1 so the test doesn't need to deal with
// permission.
$this->setUpCurrentUser(['uid' => 1]);
$date = '1975-05-18';
$node = $this->createNode([
'type' => 'article',
'title' => 'Article title',
'created' => strtotime($date),
'body' => [
0 => [
'value' => 'A paragraph',
@ -72,6 +75,7 @@ class RssFieldsTest extends ViewsKernelTestBase {
$output = $view->preview('feed_2');
$output = (string) $renderer->renderRoot($output);
$this->assertStringContainsString('<link>' . $node_url . '</link>', $output);
$this->assertStringContainsString('<pubDate>' . $date . '</pubDate>', $output);
}
}