diff --git a/civicrm_entity.module b/civicrm_entity.module
index aed502e..e736803 100644
--- a/civicrm_entity.module
+++ b/civicrm_entity.module
@@ -60,6 +60,9 @@ function civicrm_entity_access($op, $entity, $account, $entity_type) {
   elseif ($op == 'view' && $entity_type == 'civicrm_participant') {
     return user_access('view event participants');
   }
+  elseif ($op == 'view' && $entity_type == 'civicrm_contribution_page') {
+    return user_access('make online contributions');
+  }
   else {
     return user_access('administer CiviCRM');
   }
@@ -300,6 +303,7 @@ function _civicrm_entity_enabled_entities() {
     'civicrm_address' => 'address',
     'civicrm_contact' => 'contact',
     'civicrm_contribution' => 'contribution',
+    'civicrm_contribution_page' => 'contribution_page',
     'civicrm_email' => 'email',
     'civicrm_entity_tag' => 'entity_tag',
     'civicrm_event' => 'event',
@@ -404,6 +408,7 @@ function _civicrm_entity_labels($entity) {
     'civicrm_address' => 'address_name',
     'civicrm_contact' => 'display_name',
     'civicrm_contribution' => 'contribution_source',
+    'civicrm_contribution_page' => 'title',
     'civicrm_email' => 'email',
     'civicrm_event' => 'title',
     'civicrm_entity_tag' => 'tag_id',
@@ -1649,8 +1654,11 @@ function  civicrm_entity_op_access($op, $entity) {
       case "civicrm_event":
         return user_access('view event info');
       case "civicrm_contribution":
-        return user_access('administer CiviCRM') &&
-        user_access('access CiviContribute');
+      case "civicrm_financial_type":
+        return user_access('access CiviContribute') &&
+        user_access('administer CiviCRM');
+      case "civicrm_contribution_page":
+        return user_access('make online contributions');
       case "civicrm_participant":
         return user_access('view event participants');
       case "civicrm_relationship":
@@ -1673,9 +1681,6 @@ function  civicrm_entity_op_access($op, $entity) {
       case "civicrm_tag":
         return user_access('administer Tagsets') &&
         user_access('administer CiviCRM');
-      case "civicrm_financial_type":
-        return user_access('access CiviContribute') &&
-        user_access('administer CiviCRM');
       case "civicrm_price_set_entity":
       case "civicrm_price_set":
       case "civicrm_price_field":
@@ -1723,6 +1728,7 @@ function  civicrm_entity_op_access($op, $entity) {
         return user_access('administer Tagsets') &&
         user_access('administer CiviCRM');
       case "civicrm_financial_type":
+      case "civicrm_contribution_page":
         return user_access('access CiviContribute') &&
         user_access('administer CiviCRM');
       case "civicrm_price_set_entity":
@@ -1777,6 +1783,7 @@ function  civicrm_entity_op_access($op, $entity) {
         return user_access('administer Tagsets') &&
         user_access('administer CiviCRM');
       case "civicrm_financial_type":
+      case "civicrm_contribution_page":
         return user_access('access CiviContribute') &&
         user_access('administer CiviCRM') &&
         user_access('delete in CiviContribute');
@@ -1922,6 +1929,9 @@ function _civicrm_entity_add_formatters($entity_type,&$fields) {
    case 'civicrm_contribution':
      _civicrm_entity_contribution_formatters($fields);
      break;
+   case 'civicrm_contribution_page':
+     _civicrm_entity_contribution_page_formatters($fields);
+     break;
    case 'civicrm_email':
      _civicrm_entity_email_formatters($fields);
      break;
@@ -2100,6 +2110,38 @@ function _civicrm_entity_contribution_formatters(&$fields){
   _civicrm_entity_yesno_addformatters('civicrm_contribution',$yes_no_fields,$fields);
 }
 
+function _civicrm_entity_contribution_page_formatters(&$fields){
+  $link_fields = array(
+    array(
+      'link_field' => 'created_id_contact',
+      'target' => 'civicrm_contact',
+    ),
+  );
+  _civicrm_entity_link_addformatters('civicrm_contribution_page',$link_fields,$fields);
+  $option_fields = array(
+    'financial_type_id',
+    'currency',
+  );
+  _civicrm_entity_option_addformatters('civicrm_contribution_page',$option_fields,$fields);
+  $yes_no_fields = array(
+    'is_credit_card_only',
+    'is_monetary',
+    'is_recur',
+    'is_confirm_enabled',
+    'is_recur_interval',
+    'is_recur_installments',
+    'is_pay_later',
+    'is_partial_payment',
+    'is_allow_other_amount',
+    'is_for_organization',
+    'is_email_receipt',
+    'is_active',
+    'is_share',
+    'is_billing_required',
+  );
+  _civicrm_entity_yesno_addformatters('civicrm_contribution_page',$yes_no_fields,$fields);
+}
+
 function _civicrm_entity_email_formatters(&$fields){
   $link_fields = array(
     array(
@@ -2644,4 +2686,3 @@ function _civicrm_entity_formatted_output_of_arrays(&$field,$wrapper) {
     return '';
   }
 }
-
diff --git a/templates/civicrm-contribution-page.tpl.php b/templates/civicrm-contribution-page.tpl.php
new file mode 100644
index 0000000..8fba5d7
--- /dev/null
+++ b/templates/civicrm-contribution-page.tpl.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * @file
+ * A basic template for civiimport entities
+ *
+ * Available variables:
+ * - $content: An array of comment items. Use render($content) to print them all, or
+ *   print a subset such as render($content['field_example']). Use
+ *   hide($content['field_example']) to temporarily suppress the printing of a
+ *   given element.
+ * - $title: The name of the civiimport
+ * - $url: The standard URL for viewing a civiimport entity
+ * - $page: TRUE if this is the main view page $url points too.
+ * - $classes: String of classes that can be used to style contextually through
+ *   CSS. It can be manipulated through the variable $classes_array from
+ *   preprocess functions. By default the following classes are available, where
+ *   the parts enclosed by {} are replaced by the appropriate values:
+ *   - entity-profile
+ *   - civiimport-{TYPE}
+ *
+ * Other variables:
+ * - $classes_array: Array of html class attribute values. It is flattened
+ *   into a string within the variable $classes.
+ *
+ * @see template_preprocess()
+ * @see template_preprocess_entity()
+ * @see template_process()
+ */
+?>
+<div class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
+  <?php if (!$page): ?>
+    <h2<?php print $title_attributes; ?>>
+        <a href="<?php print $url; ?>"><?php print $title; ?></a>
+    </h2>
+  <?php endif; ?>
+
+  <div class="content"<?php print $content_attributes; ?>>
+    <?php
+      print render($content);
+    ?>
+  </div>
+</div>
