View from inside the viper

C is for Contribute, Cart Viper Gives Back

  May 20, 2013 18:24
by Mark
GitHub Octocat

We are big fans of DotNetNuke! We are big fans of giving back something to the community! There we said it.

What you may not know about the Cart Viper team is that we have been making DotNetNuke modules since 2005 under the pseudonym of Bite The Bullet, Many of the modules we have created over the years have been released for free and with the source code.
So what has all that got to do with Cart Viper? Nothing other than it shows our depth of knowledge and our commitment to the platform.

Recently there has been some buzz in the DotNetNuke community about Participating and Contributing to DNN open source projects, so since we have a lot of existing modules over on the BiteTheBullet site that have been some what neglected what better idea that to bring some of them up to date and to do it in a public and open manner.

So without further ado we are pleased to announce we have copied over the original source for the BTBYahooWeather module to GitHub

The current version of BTBYahooWeather module

The BTBYahooWeather module is a DNN module we wrote several years ago which allows you to show the weather using the Yahoo Weather RSS feed. The plan is to update the module to use DAL2, add a new template engine based on Razor and generally improving the module. Once completed the module will be available to download for free.

Want to help? Stop by GitHub and get started in giving back to the community too. We look forward to giving back an updated module.

Better Store Buttons - Coming Soon!

  May 15, 2013 09:23
by Mark

A potentially breaking change coming in the next release of Cart Viper for any upgrading customers is that we have changed the image buttons used in the store to be link buttons. So the add to cart button, the buttons on the checkout and my cart page have all been replaced with hyperlink buttons.

Changing the buttons has 3 main benefits

  1. When browsing the store on a tablet the image buttons had a blurred effect. Tablets have a high resolution screen compared to a desktop or laptop computer.
  2. Having the buttons as links makes it much easier to style to match your existing site using just CSS.
  3. Since the buttons are now just links you can use the resource file to localise each option.

So lets take a look at what the cart details page looked like before on a tablet, note we’ve zoomed in to make the blurry image buttons more noticeable.

The old style buttons on a tablet

Coming in next release of Cart Viper the cart page would look like this.

New style buttons on the cart page

All the buttons are styled using CSS, the icons used on the buttons are from the excellent open source project Font Awesome. The icon is in fact a font vector so it looks crisp and sharp on any resolution screen, even when zooming into the page.

The new add to cart button

CSS Style

As already mentioned we are now completely styling the buttons using CSS, no images are used in rendering the buttons. The gradient, rounded corners and shadow are all rendered using CSS so its very easy for you to change the style without needing to create a new image in Photoshop.

The styles for the buttons are defined in Common.css and the main class is called .CvStandardButton. We have a number of other styles and pseudo classes that are used for the hover state for example all of which are also in Common.css file just after the definition of the .CvStandardButton class.

What This Means for Existing Cart Viper Stores

If you are just installing Cart Viper for the first time when the new version is released you don’t have anything to worry about. If however you are upgrading from an earlier version then any custom image buttons you have created will be replaced by the new style links.

So what can upgraders do, well after you have upgraded and follow the steps in the user manual to merge your custom CSS files with the new one from Cart Viper you can go ahead and change the new styles to match your site. You could even just change the CSS to load the original custom image button as a background image but we don’t recommend doing that.
Its time to embrace the change in computing and use CSS to ensure that your site works as best as it possibly can with all the different devices out there.

More Designer Friendly Changes To Come!

We are working on further changes down the road to the templates and template engine to add even greater flexibility to the system. Just on a side note, when we do add the new templates and engine we will be keeping the existing version for customers that don’t wish to switch.

We hope you are as excited as us to see the new version of Cart Viper which is coming soon, we have added some great new features and improved a lot of the existing features.

Agreeing To Terms and Conditions At The Checkout

  May 13, 2013 11:41
by Mark

As we work towards the next major release of Cart Viper we also add the odd small feature into the current version, today we have added a small feature to the single page checkout into the current release 1.6.1 based on customer feedback. The new release is 1.6.1n which can be downloaded from the free trial page.

The new feature allows you to show a terms and conditions checkbox on the Single Page Checkout, customers then need to tick this checkbox before they can place their order.

Agree to the site's terms and conditions before placing your order

Be default this checkbox is not shown, the store admin would need to turn this on by selecting the Show T & C Checkbox on Single Page Checkout setting from the My Account module settings.

Showing T & C setting in the Cart Viper Checkout

Bonus Feature

The wording of the checkbox shown on the Single Page Checkout is controlled by the resource file /DesktopModules/CartViper/App_LocalResources/SinglePageCheckout.ascx.resx so if you wish to customise this caption or add a hyperlink to link to the T & C page for example, then you just need to edit the entry chkAgreeTermsAndConditions.Text in the resource file.

For more information about how to customise the captions see this blog post

Cart Viper and QuickBooks

  April 17, 2013 10:46
by Mark

Do you use QuickBooks and Cart Viper? Ever wished you could import your orders from Cart Viper straight into QuickBooks?
Well now you can have your orders go straight into QuickBooks automatically using QuickBook Connex for Dnn from JMA Web Technologies.

The demonstration video below show how easy it is to get your online orders from Cart Viper into QuickBooks eliminating the need for data entry and additionally administrative tasks.


QuickBooks Connex for DNN works with Cart Viper to provide a simple way to transfer your online orders from the store into QuickBooks. Why duplicate data entry when you can have an automatic way to pull orders from your dotnetnuke store into your accounting package every 15 minutes.

Works with both the US and UK version of QuickBooks.

Abandoned Shopping Carts – #1 Reason

  April 8, 2013 17:42
by Mark

Abandoned carts are costing you money in your online store. The average store has 72% of abandoned carts, that can add up to a serious amount of lost revenue.

So what is an abandon cart, its when a customer adds items to their cart but never completed the checkout process. Somewhere along the lines of add the items to the cart and finally paying for them the customer has changed their mind.

Think about it, your store is only converting 28% of carts into orders, being able to improve this figure would make a difference in your online store’s bottom line.

The number one reason for a customer to not complete the checkout process is expensive shipping costs, no one likes getting to the checkout page only to find its another $10 to get their items. Expensive shipping charges account for 44% of all abandoned cart. In fact stores which offer free shipping have less abandoned shopping carts all together then those charging even inexpensive shipping.

Take a look to see how your own store is performing with abandoned cart, you can see the number of abandoned carts for the last 30 days in Cart Viper by going to the Store Admin > Sale Stats page.

Abandoned Carts Graph

Stop the Rot

In Cart Viper we have a number of ways of giving free shipping to your customers. So lets look at what we can do to give the customer free shipping and in turn reduce the number of abandoned carts.

Keep It Simple

You can define in the shipping settings which countries will get free shipping, a customer that enters a shipping address with a country that has been defined as free shipping will get free shipping on any order they place.

A variation on this simple option is to define a minimum spend for the country before the customer qualifies for free shipping. So for example we can say all orders to the USA over $25 will have free shipping.
Then you can make the customer aware of this special offer and convert more abandoned carts into paying orders.

Free shipping with subtotal

For our USA customers we have 4 zones defined which allows you to break down the USA into different shipping zones,

  • USA
  • Lower 48
  • Hawaii
  • Alaska

So this allows you to offer your free shipping to say the lower 48 while still charging shipping to the more costly states of AK and HI.

Coupon Clipper

You could also use the coupon functionality to create a coupon that the customer could use at the time of checkout to get free shipping on their order. A simple banner or HTML module on the store could then promote this offer to the customer.

Free Shipping Coupon

Additionally its also possible to configure the coupon to have some restrictions before the customer can get free shipping. So for example we can define a minimum spend that the customer must meet before the coupon will be valid. Its also possible to make the free shipping coupon only valid when the customer purchases an item from a given category or categories.

Mix and Match

Using the mix and match promotion its also possible to define free shipping. So if the customer purchase 3 items for a given category then it would qualify their cart for free shipping. This would be applied automatically during the checkout process.


I hope this blog post has shown there are various options within Cart Viper that can be used to reduce the abandon carts in your store due to high shipping charges.

Depending on your demographic and the types of products you are selling you may find that some of the options mentioned work better than others, so our final piece of advice would be to try out the different free shipping options and measure which works best for your store.

Cart Viper is an advanced ecommerce module created for DotNetNuke created by two UK developers. Feature rich and backed up by great support. Take the free 14 day trial to see how you can leverage a great CMS and Ecommerce solution for your clients.

Logging in DotNetNuke

  April 2, 2013 19:27
by Mark

Starting in DotNetNuke 6.0 support was added for log4net, a first rate logging framework developed by the Apache Foundation.

So why log? Well any non trivial module can benefit from logging, it means you can easily debug an issue on a live site and see what is happening under the hood.
A liberal sprinkling of logging statements in your DotNetNuke module can save you a lot of time when you have some unexpected behaviour in your module.

DNN Logging 101

DNN have wrapped the standard log4net logging statements in a class called DnnLog which is part of the assembly DotNetNuke.Instrumentation.dll. So to get started with logging you need to add a reference to this dll in your code.

Within the logging framework we have different levels of log, this allows us to filter out some of the debug statements in a production DNN install and just log errors or fatal events to the log output for example. Starting at the lowest logging level going to the highest level we have

  • debug
  • info
  • warn
  • error
  • fatal

So if we have the logger set to record all debug level messages it will also log the higher log levels as well, if we however set the log to error level then only error and fatal would be record with the other lower levels ignored.

Within the DNN class DnnLog we have a method for each type of these logging events with various overloaded options.

DnnLog.Debug("Category ID:{0} is at depth:{1} of the category tree", c.CategoryID, depth);

So using this logging statement we can use string formatting to record the debug log message. We can also log exception using a different overloaded method. Using intellisense it is pretty easy to discovery the correct method to use.

Taking Control

So that is all there is to it, oh wait, where do the log messages appear and how do we control the level?

Within the root of the DNN site you will find the file DotNetNuke.log4net.config this is used to control the logging within the site. The default setting is to log to a file only error levels or above.
In a development environment it might be more productive to set the log level to debug so that we get all log statements. To do this we would simple edit the root level

  <level value="Error" />
  <appender-ref ref="RollingFile" />

To the new value of

  <level value="Debug" />
  <appender-ref ref="RollingFile" />

The RollingFile appender will log the output into a text file which can be found in this directory, \Portals\_default\Logs
A new log will be created each day, its important to remember that DNN won’t delete old log files so this could grow to be a large directory if left unchecked.

Bonus Tip

Something which can be useful when debugging and developing is to have the DNN log statements output in the standard Trace Output for the page.
Its a pretty simple thing to do, you would just need to add a new appender that uses the AspNetTraceAppender and then define the appender in the root element.

<?xml version="1.0" encoding="utf-8" ?> 
  <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> 
    <file value="Portals/_default/Logs/" /> 
    <datePattern value="yyyy.MM.dd'.log.resources'" /> 
    <rollingStyle value="Date" /> 
    <staticLogFileName value="false" /> 
    <appendToFile value="true" /> 
    <maximumFileSize value="10MB" /> 
    <maxSizeRollBackups value="5" /> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> 
    <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%property{log4net:HostName}][Thread:%thread][%level] %logger - %message%newline" /> 
      <locationInfo value="true" /> 
  <appender name="AspNetTraceAppender" type="log4net.Appender.AspNetTraceAppender" > 
    <layout type="log4net.Layout.PatternLayout"> 
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> 
    <level value="DEBUG" /> 
    <appender-ref ref="RollingFile" /> 
    <appender-ref ref="AspNetTraceAppender" /> 

Then whenever you have Trace turned on the log statement

I hope you found this article useful and you give the DNN logging framework a try in your next module.

DotNetNuke Ecommerce Made Easy with the Latest Cart Viper Release 1.6

  April 23, 2012 16:24
by Mark

1063650_37233894Today marks a great day in the development of Cart Viper our ecommerce solution for DotNetNuke, we have just release version 1.6 of the product.

This is a major release with over 35 great new features or improvements to Cart Viper. Over the coming days and weeks we’ll be talking some more about some of the key new features in this release and why it can help you create a great ecommerce store for your customers.

  1. Numerous performance improvements
  2. Ability to sell events - AJAX events calendar module (please note this is an extra add-on).
  3. Google Sitemap support for getting the best possible SEO.
  4. Youtube videos on product details
  5. Categories support Youtube videos.
  6. Pre-checkout notification callback method to validate the order before allowing it be placed within the store.
  7. Export new orders to the Amazon Message Queue SQS, allows integration into external systems to process placed orders.
  8. New payment gateway Cyber Source
  9. Support for three new currencies JOD, HKD, THB and MXN
  10. Mix and match discounts, buy 6 items from this category and get 10% off the items for example.
  11. Let customers request a quote for a large order, moderate and adjust the prices then allow the customer to pay for the order online using a credit card.
  12. Optionally define customer managers that need to approve orders from sub accounts before the order can be placed within the store. Great for B2B sites that need basic order moderation for their corporate clients.
  13. Define a global quantity limit and quantity purchase pattern for a product to mean that only specified quantities of the product can be purchased.
  14. Ability to use custom smtp settings per portal when sending the emails generated by Cart Viper.
  15. Support for an unlimited number of options for a variant, user interface just expands as you enter product options.
  16. The product tabs and related products output is now controlled using a token, so you are free to place this controls anyway you like within the template.
  17. Improved product tab feature including, token support, embed modules, tab header, tab security roles and better sorting.
  18. The template system used to style the store now allows you to import an existing DNN module into the template.
  19. Define product facets which allows customers to filter products based on the product facets, size, colour, type, manufacturer etc.
  20. When search by keywords the products can be filter to a given manufacturer or category using the keyword facet search.
  21. An unlimited number of variants can be imported via csv.
  22. Ability to send order confirmation emails to multiple email addresses with your organisation.
  23. More tokens added to the custom email templates.
  24. Mark a product as in-store pickup only, means the customer must collect direction from the store.
  25. Optional ability to apply a percentage or fixed amount surcharge to an order placed with Paypal Standard.
  26. The store admin can now search for all orders placed during a start and end date.
  27. New order status - partial shipped.
  28. Batch printing of orders, select the date range and the order status then generate a PDF containing all the orders, print out and include with your package.
  29. Ability to restrict which states in the USA you will ship goods to.
  30. Cyber Source external tax gateway support, exact tax calculations based on the customer’s address.
  31. Newsletter subscribers management page to display a list of existing subscribers. Export the list to CSV.
  32. Allow products to be visible only to users with the required role.
  33. Include a shipping tracking number when you dispatch a customer’s order.
  34. Support for defining tax rates by each Canadian Province for stores located in Canada.
  35. New mega menu style category menu this can be rendered either vertically or horizontally. Optionally we can output the standard DNN menu into the mega menu to create a complete menu solution for your store.
  36. Recurring billing support when using payment gateway.

We are excited to have created this release and we hope you’ll take the free 14 day trial and see for yourself.

Existing customers from earlier versions can download the new version and upgrade for free, simply download and install the free trial, your existing license will unlock this to a full version.
We strongly recommend that you follow the upgrade steps in the manual and take a full backup of your database and existing site.

Performance Improvements to Cart Viper

  March 21, 2012 21:16
by Mark

graph_arrowA major improvement in Cart Viper 1.6 is that we’ve tuned the performance of the application start at the database level and running all the way to the business logic to make your store operate faster.

All aspects of the application, browsing the store, searching, viewing the product detail and checkout are now significantly faster. Recent research has suggested that Google takes into account the speed of site when ranking a page, “faster sites create happy users”. The improves we have made can only help improve your ROI on your store.

The net effect is the store runs up to 3x fast than the previous version of Cart Viper.

Unlike other DNN vendors we currently offer existing customer the ability to upgrade to the latest version free of charge. So if you are already a customer why don’t consider upgrading to the new version today.

If you are new to Cart Viper then take our free no sign up, no hassle 30 days trial.
We want to create the best ecommerce module in the DNN arena.

A Great Product Deserves Great Support

  February 14, 2012 19:55
by Mark

jigsawOur aim is to create the best ecommerce solution for the DotNetNuke platform. A simple statement to make but a pretty bold claim, so we constantly listen to your feedback and suggestions which drives our development cycle. Never ready to rest on our laurels we are always working on improving Cart Viper.

However no matter what we do to our product without providing great support we won’t be able to achieve our bold claim.
Don’t take our word for the high quality of support we offer with Cart Viper take a look at Bill Losey’s review.

“Great, great, great, great, and oh yea, did I say great? I have found it to be rare to purchase any DNN module that does what the developer says the module will do.
Cart Viper is a rare exception and a pleasant surprise and the support is equally great and surprising. I have either evaluated or purchased no less that four eCommerce modules and every one ended in total disappointment.
Try Cart Viper and unless you have some truly off the wall requirements, the folks at Cart Viper will have you covered. All I can say to them is thank you for a wonderful product and terrific support.”

So if you are ready to see what all the fuss is about, try us out on your next ecommerce product. You might be pleasantly surprised.

Hatching More Viper Features

  February 9, 2012 20:22
by Mark

stairwaysThis blog has been a bit quiet of late but behind the scenes we have been very busy. We are currently working on some new advanced features which we hope to release in the next few months. Stay tuned for more information as we get closer to a release.

Everyday we are working on new features and improving existing ones, we are determined to create the best ecommerce solution on the DotNetNuke platform.
Take the free 14 day trial now and see what you think.