summaryrefslogtreecommitdiff
path: root/modules/node/node.tokens.inc
diff options
context:
space:
mode:
authorDavid Rothstein <drothstein@gmail.com>2014-05-05 23:54:18 -0400
committerDavid Rothstein <drothstein@gmail.com>2014-05-05 23:54:18 -0400
commite928b8537bc2987ab4c1a0b5f944eed1957b253c (patch)
treeecbfcdc03b2febc8155a7a2b0ad4b02ef904d34c /modules/node/node.tokens.inc
parent20c04c587beb78094cdc1302f9c226af8931747c (diff)
downloadbrdo-e928b8537bc2987ab4c1a0b5f944eed1957b253c.tar.gz
brdo-e928b8537bc2987ab4c1a0b5f944eed1957b253c.tar.bz2
Issue #1300920 by salvis, DamienMcKenna, mkadin, idflood, pjcdawkins, lyricnz, greggles, Niklas Fiekas, gumanist | Dave Reid: The [node:summary] token does not output anything for body fields without a manual summary.
Diffstat (limited to 'modules/node/node.tokens.inc')
-rw-r--r--modules/node/node.tokens.inc23
1 files changed, 21 insertions, 2 deletions
diff --git a/modules/node/node.tokens.inc b/modules/node/node.tokens.inc
index e43db5e7d..e63c751d6 100644
--- a/modules/node/node.tokens.inc
+++ b/modules/node/node.tokens.inc
@@ -136,10 +136,29 @@ function node_tokens($type, $tokens, array $data = array(), array $options = arr
case 'body':
case 'summary':
if ($items = field_get_items('node', $node, 'body', $language_code)) {
- $column = ($name == 'body') ? 'value' : 'summary';
$instance = field_info_instance('node', 'body', $node->type);
$field_langcode = field_language('node', $node, 'body', $language_code);
- $replacements[$original] = $sanitize ? _text_sanitize($instance, $field_langcode, $items[0], $column) : $items[0][$column];
+ // If the summary was requested and is not empty, use it.
+ if ($name == 'summary' && !empty($items[0]['summary'])) {
+ $output = $sanitize ? _text_sanitize($instance, $field_langcode, $items[0], 'summary') : $items[0]['summary'];
+ }
+ // Attempt to provide a suitable version of the 'body' field.
+ else {
+ $output = $sanitize ? _text_sanitize($instance, $field_langcode, $items[0], 'value') : $items[0]['value'];
+ // A summary was requested.
+ if ($name == 'summary') {
+ if (isset($instance['display']['teaser']['settings']['trim_length'])) {
+ $trim_length = $instance['display']['teaser']['settings']['trim_length'];
+ }
+ else {
+ // Use default value.
+ $trim_length = NULL;
+ }
+ // Generate an optionally trimmed summary of the body field.
+ $output = text_summary($output, $instance['settings']['text_processing'] ? $items[0]['format'] : NULL, $trim_length);
+ }
+ }
+ $replacements[$original] = $output;
}
break;