diff --git a/contentdm.css b/contentdm.css
index 5549783..442cb0b 100644
--- a/contentdm.css
+++ b/contentdm.css
@@ -23,19 +23,22 @@ div.results_record h3 {
   margin-bottom: .5em;
 }
 
-div.results_record_thumbnail {
+div.results_record_thumbnail,
+.contentdm_thumbnail {
   float: left; 
   width: 200px;
   margin-right: -200px;
 }
 
-div.results_record_description {
+div.results_record_description,
+.contentdm_description {
   margin-top: 0;
   padding-top: 0;
   margin-left: 200px;
 }
 
-div.results_record_field {
+div.results_record_field,
+.contentdm_field {
   text-indent: -1em; margin-left: 1em; 
 }
 
diff --git a/contentdm.module b/contentdm.module
index 7ff5d9d..b5684c9 100644
--- a/contentdm.module
+++ b/contentdm.module
@@ -141,6 +141,11 @@ function contentdm_theme() {
       'path' => drupal_get_path('module', 'contentdm') . '/templates',
       'arguments' => array('fields_to_show' => NULL, 'item_number' => NULL, 'record' => NULL, 'collection' => NULL),
     ),
+    'contentdm_node_teaser' => array(
+      'template' => 'contentdm-node-teaser',
+      'path' => drupal_get_path('module', 'contentdm') . '/templates',
+      'arguments' => array('fields_to_show' => NULL, 'item_number' => NULL, 'record' => NULL, 'collection' => NULL),
+    ),
     'contentdm_search_history' => array(
       'arguments' => array('history' => NULL),
     ),
@@ -314,7 +319,7 @@ function contentdm_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
     $collection_names =  cache_get('contentdm:collection_names');
     $collection_names = $collection_names->data;
     $collection_name = $collection_names[$node->alias];
-    $node->teaser = theme('contentdm_search_results_list_item', $fields_to_show, '', $metadata_for_teaser, $collection_name);
+    $node->teaser = theme('contentdm_node_teaser', $fields_to_show, '', $metadata_for_teaser, $collection_name);
   }
 }
 
@@ -1195,13 +1200,26 @@ function theme_contentdm_image($alias, $pointer, $scale = 100, $width = 800, $he
   return '<img src="' . $image_url . '"' . drupal_attributes($attributes) . ' />';
 }
 
+function template_preprocess_contentdm_search_results_list_item(&$variables) {
+  $function = 'template_preprocess_contentdm_item';
+  if (function_exists($function)) {
+    $function($variables);
+  }
+}
+
+function template_preprocess_contentdm_node_teaser(&$variables) {
+  $function = 'template_preprocess_contentdm_item';
+  if (function_exists($function)) {
+    $function($variables);
+  }
+}
 
 /**
  * Process variables for contentdm-search-results-list-item.tpl.php. Variables expected in template are
  * $item_number, $item_url, $collection (i.e., alias with leading '/'), $fields ($label => $value).
  * arguments' => array('fields_to_show' => NULL, 'item_number' => NULL, 'record' => NULL, 'collection' => NULL)
  */
-function template_preprocess_contentdm_search_results_list_item(&$variables) {
+function template_preprocess_contentdm_item(&$variables) {
   $variables['contentdm_cgi_bin_url'] = variable_get('contentdm_cgi_bin_url', 'http://contentdm.example.com/cgi-bin/');
   $record = $variables['record'];
   // We make a copy since we don't want attribute values (e.g., link title) to have keyword highlighting added.
diff --git a/templates/contentdm-node-teaser.tpl.php b/templates/contentdm-node-teaser.tpl.php
new file mode 100644
index 0000000..92531cf
--- /dev/null
+++ b/templates/contentdm-node-teaser.tpl.php
@@ -0,0 +1,14 @@
+<?php
+// Template for node teaser of individual CONTENTdm item.
+?>
+<div class="node node-teaser node-type-contentdm-wrapper">
+  <div class="contentdm_thumbnail">
+    <?php print $item_url; ?>
+  </div>
+  <div class="contentdm_description">
+    <div class="contentdm_field"><span class="field_label">Collection: </span><span class="field_value"><?php print $collection; ?></span></div>
+    <?php foreach ($fields as $label => $value): ?>
+      <div class="contentdm_field"><span class="field_label"><?php print $label; ?>: </span><span class="field_value"><?php print $value; ?></span></div>
+    <?php endforeach; ?>
+  </div>
+</div>
