diff --git a/export/views-bonus-export-gnews.tpl.php b/export/views-bonus-export-gnews.tpl.php
new file mode 100644
index 0000000..4fee843
--- /dev/null
+++ b/export/views-bonus-export-gnews.tpl.php
@@ -0,0 +1,33 @@
+<?php
+// $Id: views-bonus-export-ics.tpl.php,v 1.1 2008/10/08 05:50:10 neclimdul Exp $
+/**
+* @file views-view-table.tpl.php
+* Template to display a view as a table.
+*
+* - $title : The title of this group of rows.  May be empty.
+* - $rows: An array of row items. Each row is an array of content
+*   keyed by field ID.
+* - $header: an array of haeaders(labels) for fields.
+* - $themed_rows: a array of rows with themed fields.
+* @ingroup views_templates
+*/
+?>
+<?php global $language; ?>
+<?php $site_name = variable_get('site_name', 'Drupal'); ?>
+<?xml version="1.0" encoding="UTF-8"?>
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
+<?php foreach ($themed_rows as $count => $row): ?>
+  <url>
+    <loc><?php print array_pop($row); ?></loc>
+    <news:news>
+      <news:publication>
+        <news:name><?php print check_plain($site_name); ?></news:name>
+        <news:language><?php print check_plain($language->language); ?></news:language>
+      </news:publication>
+<?php foreach ($row as $field => $content): ?>
+      <<?php print $header[$field]; ?>><?php print strip_tags($content); // strip html so it's plain txt. ?></<?php print $header[$field]; ?>>
+<?php endforeach; ?>
+    </news:news>
+  </url>
+<?php endforeach; ?>
+</urlset>
diff --git a/export/views_bonus_export.theme.inc b/export/views_bonus_export.theme.inc
index f9f45fd..0602fc5 100644
--- a/export/views_bonus_export.theme.inc
+++ b/export/views_bonus_export.theme.inc
@@ -74,6 +74,13 @@ function template_preprocess_views_bonus_export_xls(&$vars) {
 }
 
 /**
+ * Preprocess gnews output template.
+ */
+function template_preprocess_views_bonus_export_gnews(&$vars) {
+  _views_bonus_export_shared_preprocess($vars);
+}
+
+/**
  * Preprocess xml output template.
  */
 function template_preprocess_views_bonus_export_xml(&$vars) {
diff --git a/export/views_bonus_export.views.inc b/export/views_bonus_export.views.inc
index ca6b359..1bb2972 100644
--- a/export/views_bonus_export.views.inc
+++ b/export/views_bonus_export.views.inc
@@ -95,6 +95,21 @@ function views_bonus_export_views_plugins() {
         'export headers' => array('Content-Type: text/xml'),
         'export feed type' => 'xml',
       ),
+      'views_gnews' => array(
+        'title' => t('Google News Sitemap'),
+        'help' => t('Display the view as a Google News Sitemap.'),
+        'path' => $path,
+        'handler' => 'views_bonus_plugin_style_export_gnews',
+        'parent' => 'views_bonus_export',
+        'theme' => 'views_bonus_export_gnews',
+        'theme file' => 'views_bonus_export.theme.inc',
+        'uses row plugin' => FALSE,
+        'uses fields' => TRUE,
+        'uses options' => TRUE,
+        'type' => 'feed',
+        'export headers' => array('Content-Type: text/xml'),
+        'export feed type' => 'xml',
+     ),
     ),
   );
 }
diff --git a/export/views_bonus_plugin_style_export_gnews.inc b/export/views_bonus_plugin_style_export_gnews.inc
new file mode 100644
index 0000000..fd36fa8
--- /dev/null
+++ b/export/views_bonus_plugin_style_export_gnews.inc
@@ -0,0 +1,33 @@
+<?php
+// $Id$
+/**
+* @file
+* Plugin include file for export style plugin.
+*/
+
+/**
+* Generalized style plugin for export plugins.
+*
+* @ingroup views_style_plugins
+*/
+class views_bonus_plugin_style_export_gnews extends views_bonus_plugin_style_export {
+  /**
+   * Initialize plugin.
+   *
+   * Set feed image for shared rendering later.
+   */
+  function init(&$view, &$display, $options = NULL) {
+    parent::init($view, $display, $options = NULL);
+  }
+
+  /**
+   * Set options fields and default values.
+   *
+   * @return
+   * An array of options information.
+   */
+  function option_definition() {
+    $options = parent::option_definition();
+    return $options;
+  }
+}
