Index: views_bonus_style.info
===================================================================
RCS file: views_bonus_style.info
diff -N views_bonus_style.info
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views_bonus_style.info	14 Apr 2008 20:10:42 -0000
@@ -0,0 +1,6 @@
+; $Id:$
+
+name = Bonus: views style plugins
+description = "Provides some simple views style plugins"
+dependencies = views
+package = Views
Index: views_bonus_style.module
===================================================================
RCS file: views_bonus_style.module
diff -N views_bonus_style.module
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ views_bonus_style.module	14 Apr 2008 20:10:42 -0000
@@ -0,0 +1,51 @@
+<?php
+// $Id:$
+
+/**
+ * Implementation of views hook_style_plugins
+ * This defines additional views "view types"
+ *
+ * @returns
+ *   the views plugins array which defines additional "view types"
+ */
+function views_bonus_style_views_style_plugins() {
+  $plugins = array(
+    'teaser-list' => array(
+      'name' => t('Teaser (first) + List View (rest)'),
+      'theme' => 'views_view_top_teaser_and_more_list',
+      'summary_theme' => 'views_view_top_teaser_and_more_list',
+      'needs_fields' => TRUE,
+    ),
+    'node-teaser' => array(
+      'name' => t('Full Node (first) + Teasers (rest)'),
+      'theme' => 'views_view_top_node_and_teasers',
+      'summary_theme' => 'views_view_top_node_and_teasers',
+      'needs_fields' => FALSE,
+    ),
+  );
+  return $plugins;
+}
+
+/**
+ * Theme the top node as a teaser, and the remaining nodes as a list
+ */
+function theme_views_view_top_teaser_and_more_list($view, $nodes, $type) {
+  // Theme the top node as a teaser
+  $top = array_shift($nodes);
+  $output .= theme('views_view_teasers', $view, array($top), $type);
+  // Theme the rest as a list
+  $output .= theme('views_view_list', $view, $nodes, $type);
+  return $output;
+}
+
+/**
+ * Theme the top node as a full node, and the remaining nodes as teasers
+ */
+function theme_views_view_top_node_and_teasers($view, $nodes, $type) {
+  // Theme the top node as a full node
+  $top = array_shift($nodes);
+  $output .= theme('views_view_nodes', $view, array($top), $type);
+  // Theme the rest as teasers
+  $output .= theme('views_view_teasers', $view, $nodes, $type);
+  return $output;
+}
