diff --git a/submenutree.module b/submenutree.module
index d13a048..f0b4577 100644
--- a/submenutree.module
+++ b/submenutree.module
@@ -573,11 +573,19 @@ function _submenutree_menutree_view($node, $type, $tree) {
   else {
     $items = array();
     foreach ($tree as $k => $v) {
-      // Check that this is a node view
-      if (empty($v['link']['hidden']) && strpos($v['link']['href'], 'node/') === 0) {
-        $nid = drupal_substr($v['link']['href'], 5);
-        $child = node_load($nid);
-        $items[] = array('node' => $child, 'weight' => $v['link']['weight'], 'title' => check_plain($v['link']['title']));
+      if (empty($v['link']['hidden'])) {
+        // Check that this is a node view
+        if (strpos($v['link']['href'], 'node/') === 0) {
+          $nid = drupal_substr($v['link']['href'], 5);
+          $child = node_load($nid);
+          $items[] = array('module' => 'node', 'node' => $child, 'weight' => $v['link']['weight'], 'title' => check_plain($v['link']['title']));
+        }
+        // If not, invoke a hook to see if any other module provides the teaser.
+        else {
+          if ($item = module_invoke_all('submenutree_item', $v['link'])) {
+            $items[] = $item;
+          }
+        }
       }
     }
     _submenutree_sort_items($items);
@@ -727,15 +735,25 @@ function theme_submenu_tree_teasers($variables) {
     $output .= '<h3>' . $variables['title'] . '</h3>';
   if (!empty($variables['links'])) {
     foreach ($variables['items'] as $item) {
-      $output .= drupal_render(node_view($item['node'], 'teaser'));
+      if ($item['module'] == 'node') {
+        $output .= drupal_render(node_view($item['node'], 'teaser'));
+      }
+      else {
+        $output .= $item['content'];
+      }
     }
   }
   else {
     // Kill the content['links'] array if not displaying links
     foreach ($variables['items'] as $item) {
-      $build = node_view($item['node'], 'teaser');
-      unset($build['links']);
-      $output .= drupal_render($build);
+      if ($item['module'] == 'node') {
+        $build = node_view($item['node'], 'teaser');
+        unset($build['links']);
+        $output .= drupal_render($build);
+      }
+      else {
+        $output .= $item['content'];
+      }
     }
   }
   return $output;
