From fea53f2516be9795b163fb6e5543ab3df2fad943 Mon Sep 17 00:00:00 2001 From: thewilkybarkid <chriswilkinson84@gmail.com> Date: Fri, 2 May 2014 16:05:05 +0100 Subject: [PATCH] Use Smart Trim in teasers --- src/cambridge/cambridge.info | 1 + src/cambridge/cambridge.install | 88 +++++++++++++++++++++++++++++++++ src/cambridge/cambridge.make | 3 ++ 3 files changed, 92 insertions(+) diff --git a/src/cambridge/cambridge.info b/src/cambridge/cambridge.info index 1d3eb5e..dbaba55 100644 --- a/src/cambridge/cambridge.info +++ b/src/cambridge/cambridge.info @@ -47,6 +47,7 @@ dependencies[] = pathauto dependencies[] = raven dependencies[] = realname dependencies[] = redirect +dependencies[] = smart_trim dependencies[] = token dependencies[] = transliteration dependencies[] = views diff --git a/src/cambridge/cambridge.install b/src/cambridge/cambridge.install index 0f5a62f..58f440e 100644 --- a/src/cambridge/cambridge.install +++ b/src/cambridge/cambridge.install @@ -57,6 +57,36 @@ function cambridge_install() { field_create_instance($instance); } + // Use the Smart Trim module for teasers. + + $smart_trimmed = array( + 'label' => 'hidden', + 'module' => 'smart_trim', + 'settings' => array( + 'more_link' => 0, + 'more_text' => 'Read more', + 'summary_handler' => 'full', + 'trim_length' => 325, + 'trim_options' => array( + 'text' => 'text', + ), + 'trim_suffix' => '...', + 'trim_type' => 'chars', + ), + 'type' => 'smart_trim_format', + 'weight' => 0, + ); + + foreach (array('page', 'link') as $type) { + $instance = field_info_instance('node', 'body', $type); + + foreach (array('teaser', 'news_listing_item', 'vertical_teaser', 'sidebar_teaser') as $mode) { + $instance['display'][$mode] = $smart_trimmed; + } + + field_update_instance($instance); + } + // Force a main-menu link on Basic Pages. variable_set('menu_force_page', TRUE); @@ -291,3 +321,61 @@ function cambridge_update_7102() { throw new DrupalUpdateException('Failed to enabled Metatag modules'); } } + +/** + * Use the Smart Trim module for teasers rather than Drupal's native trimming. + */ +function cambridge_update_7103() { + if (module_exists('smart_trim')) { + return; + } + + if (FALSE === module_enable(array('smart_trim'))) { + throw new DrupalUpdateException('Failed to install Smart Trim module'); + } + + $smart_trimmed = array( + 'label' => 'hidden', + 'module' => 'smart_trim', + 'settings' => array( + 'more_link' => 0, + 'more_text' => 'Read more', + 'summary_handler' => 'full', + 'trim_length' => 325, + 'trim_options' => array( + 'text' => 'text', + ), + 'trim_suffix' => '...', + 'trim_type' => 'chars', + ), + 'type' => 'smart_trim_format', + ); + + foreach (array('page', 'link') as $type) { + // Make sure the body appears trimmed in teasers. + + if (FALSE === node_type_get_name($type)) { + // Content type no longer exists. + continue; + } + + $instance = field_info_instance('node', 'body', $type); + + foreach (array('teaser', 'news_listing_item', 'vertical_teaser', 'sidebar_teaser') as $mode) { + if ( + $instance['display'][$mode]['label'] !== 'hidden' + || + $instance['display'][$mode]['type'] !== 'text_summary_or_trimmed' + || + $instance['display'][$mode]['settings']['trim_length'] !== 600 + ) { + // Display has been changed, so don't touch it. + continue; + } + + $instance['display'][$mode] = array_merge($instance['display'][$mode], $smart_trimmed); + } + + field_update_instance($instance); + } +} diff --git a/src/cambridge/cambridge.make b/src/cambridge/cambridge.make index 9f59794..606bcf8 100644 --- a/src/cambridge/cambridge.make +++ b/src/cambridge/cambridge.make @@ -55,6 +55,9 @@ projects[redirect][subdir] = "patched" projects[redirect][patch][] = "http://drupal.org/files/redirect-prevent_circular_redirects-1817976-42.patch" projects[rules] = "2.6" projects[scheduler] = "1.2" +projects[smart_trim][version] = "1.4" +projects[smart_trim][subdir] = "patched" +projects[smart_trim][patch][] = "http://drupal.org/files/issues/smart_trim_remove_punctuation_from_end_of_truncated_output-2169583-3.patch" projects[tac_lite] = "1.2" projects[transliteration] = "3.2" projects[varnish][version] = "1.0-beta2" -- GitLab