diff --git a/src/Plugin/Field/FieldFormatter/SmartTrimFormatter.php b/src/Plugin/Field/FieldFormatter/SmartTrimFormatter.php index 1e5b11c..f1fe17e 100644 --- a/src/Plugin/Field/FieldFormatter/SmartTrimFormatter.php +++ b/src/Plugin/Field/FieldFormatter/SmartTrimFormatter.php @@ -164,6 +164,7 @@ class SmartTrimFormatter extends FormatterBase implements ContainerFactoryPlugin '#options' => [ 'full' => $this->t("Use summary if present, and do not trim"), 'trim' => $this->t("Use summary if present, honor trim settings"), + 'break' => $this->t('Use pagebreak if present, and do not trim'), 'ignore' => $this->t("Do not use summary"), ], '#default_value' => $this->getSetting('summary_handler'), @@ -366,7 +367,26 @@ class SmartTrimFormatter extends FormatterBase implements ContainerFactoryPlugin $tokenData = [$entity->getEntityTypeId() => $entity]; foreach ($items as $delta => $item) { - if ($settings_summary_handler != 'ignore' && !empty($item->summary)) { + if ($settings_summary_handler == 'break' && (strpos($item->value, '') || strpos($item->value, ''))) { + $break_pos = 0; + if (strpos($item->value, '') && strpos($item->value, '')) { + $break_pos = min(strpos($item->value, ''), strpos($item->value, '')); + } + else { + $break_pos = (strpos($item->value, '')) ? strpos($item->value, '') : strpos($item->value, ''); + } + $element[$delta] = [ + '#theme' => 'smart_trim', + '#output' => [ + '#type' => 'processed_text', + '#text' => ($setting_trim_options['text']) ? strip_tags(substr($item->value, 0, $break_pos)) : substr($item->value, 0, $break_pos), + '#format' => $item->format, + ], + '#field' => $item->getParent()->getName() + ]; + return $element; + } + else if ($settings_summary_handler != 'ignore' && !empty($item->summary)) { $output = trim($item->summary); } else {