How to Create a Custom Theme For BV Commerce 6 | Design Guide

10. June 2011 14:03 by mmcconnell1618

BV Commerce 6 Theme Kit Download
BV Commerce 6 Theme Kit Source Code

This theme kit will help you create custom themes for your store. It includes standard HTML versions of the common store pages which you can use to preview your CSS and images using any standard web design tool like Dreamweaver, Expression Web or Text Mate.

Getting Started

Download the theme kit to your computer where you will be doing design work. Unzip all of the files. You will see “PhotoShopFiles” and “www” folders. The “PhotoShopFiles” folder contains PSD files which you can use to create new buttons and graphics from the existing templates. This will save you time if you use PhotoShop. Many other design/paint programs can also read PSD formatted files. The “www” folder contains a mock-up of a store using a common theme. There are several sub folder that you should become familiar with to create a custom theme.

  1. “assets” – This folder contains any custom images referenced by your design. When your CSS file uses the {{assets}} prefix on any URL the theme kit will look in this folder for the image.
  2. “buttons” – This folder contains any custom button images for your theme. You should create custom buttons to replace every standard one.
  3. “css” – This folder contains the Theme.css file which is the main place you’ll be working to create a custom theme. Other .css files in this folder are standard to the software and are for reference only. Do not edit them as any changes you make will NOT be included in custom themes you upload to the store. Instead, override their CSS settings if you need to in Theme.css

The other folders and files are simple there to create a local copy of your store for design testing. There is no need to edit any of them.

How to work with the Theme Kit

Standard practice would be to double click on the Home.html file which will open in your web browser. You can click through most of the links in the theme kit to move between sample pages.

You should then open your design tool and load up the entire “www” folder as a web site. This will let you easily view all of the files and change the Theme.css to create a new design.

Preview your changes in your web browser locally as needed.

Special CSS Tricks for Theme Kit

The theme kit duplicates some special CSS tricks of your store. The {{assets}} tag should be used as the first part of any URL in your style sheet. For example, if you include a custom image called “HomeAd2.png” in your design you should reference it in the style sheet as:

url(‘{{assets}}HomeAd2.png’);

And you should then place it in the /www/assets folder of your theme kit locally to see the results. The ThemeHelper.js file automatically replaces {{assets}} with the correct link and this will let you upload your CSS file to the live store without any changes.

Uploading to a Store When You’re Done

When you’re ready to upload to your store go to the admin side and click on the “Options->Themes” menu item. Hover your mouse over any installed theme and select “Duplicate Theme” which will create a new copy of that theme. Click the “Edit” button on your “Copy of xxxx” theme where “xxxx” is the name of the theme you duplicated.

Next, change the name, description and other basic theme information for your new design and save.

Then, click on “Style Sheet (CSS)” and copy and paste your entire local Theme.css file into the text box and save.

Third, under Images: Buttons upload all of the files in your local /www/buttons folder to the store.

Fourth, under Images: Assets upload all of the files in your local /www/assets folder to the store.

Lastly, choose “Back to Themes” and then click on “Select This Theme” when you’re ready to activate it on your live store.

Currently rated 2.7 by 6 people

  • Currently 2.666667/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , ,

bv commerce

BV Commerce 6 Developer Notes #5 - Promotions

23. February 2011 16:06 by mmcconnell1618

BV Commerce 6 includes a completely revamped promotions engine. The previous version used a selection of pre-built sales and offers that limited what merchants could do in many ways. Because any price adjustments can be complicated it was also difficult to figure out exactly how a price was derived using the old system.

Promotions are now rule-based allowing merchants to mix and match qualifications and actions into powerful sales and offers. Like older versions promotions are grouped into two main types; sales and offers. A sale is a promotion that can apply to individual products as they are viewed on the store. An offer is a promotion that only applies to a cart/order.

Promotions in the Admin

From the Marketing»Promotions screen in the admin you can create custom sales and offers by combing your set of rules and actions or you can select from pre-defined promotions for common scenarios like a Storewide Sale or Free Shipping on specific items.

The main screen also displays the current status of promotions. Disabled promotions are hidden by default and when you create a new promotion it is marked is disabled for safety. This prevents it from accidently applying to items on the store while you’re working on it. You can use the Show Disabled Items checkbox when viewing the list to see any items you’ve created but haven’t completed yet. You can also search for the name of your promotion.

Promotions List

If a promotion is enabled, its status is evaluated based on the current date and time. All times are stored in Universal Time in the database to ensure that offers apply based on the store time zone only. Promotions are shown in the admin as Active, Expired or Upcoming. When the store evaluates promotions it only pulls the Active promotions from the database to reduce the processing require to price items.

Editing Promotions

When you initially create a sale or offer its Mode is set once and cannot change. If you edit a sale you will see a different set of qualifications and actions than you would if you edit an offer.

In the editor you add qualifications first. These are inclusive. Every rule must be valid or the promotion won’t apply. Some rules allow multiple selections. In this case the selections may be any or all based depending on the qualification settings. For example, the Product Category qualifier allows you to select many categories. It will apply to any product that is assigned to at least one of the categories in the list.

Editing Promotions

Qualifiers also have a Relative Processing Cost which is a measure of how much work is involved in checking the rule. Checking a ProductId on a product is a very low cost operation. We already have the product and it’s easy to check the ID. Checking a Product Category selection is a very costly operation because we need to make a database call to load up all categories for each product checked for the promotion. For this reason promotion qualifiers are sorted from lowest to highest cost before checks. This means that low cost checks might rule out the product before expensive steps are taken.

If you are creating your own qualifiers be aware that qualifiers may be called very frequently, especially for sales. Too many high cost operations and too many promotions running at one time can bring a store grinding to a halt if you’re not careful.

Actions are applied in sequence to the product or order. Their effect is cumulative. Adding many actions to a promotion can have strange effects and is not recommended unless you are careful.

Unified Discounting System

The new promotion engine relies on the unified discounting system, which provides much better feedback and reporting on exactly how prices are derived. In the past, prices were adjusted in multiple places and there was no way to track down exactly what happened along the way. One common reporting problem was the prices for sales were adjusted before items arrived in the cart. This meant that reports could not show retail prices and discounts for sales.

The new system uses a list of DiscountDetails on products and line items. Each detail shows the amount applied and a description of what created the discount. User group pricing, volume discounts and promotions all use this list to describe price changes. Any custom code that adjusts prices should use this system too.

Cart with Discount Details

Products are priced when viewed by the BVApplication.PriceProduct() method. This takes into account the current environment like current time and current user when evaluating priced. Calling this one method on any product before display ensures that the correct sales and discounts will be shown to the shopper.

The shopping cart now displays the discounts as part of the line item detail. This makes tracking down pricing origins much easier and allows merchants to add attention getting descriptions of discounts to the cart.

Extending the Discounting System

Although the new discount system is rule based and appears to be very extensible BV recommends that you do not create your own custom qualifiers or actions at this time. We prefer that you contact us with your requirements and see if we can create a built-in generic qualifier or action as needed. There are two reasons for this: a) Promotions can have a big performance impact and we’d rather build them in and test before releasing them on a live store and b) we do not have a plugin model yet for promotions. We’d like the promotions system to live in the wild for a little while before we lock it down to a specific plugin API.

Currently rated 2.8 by 8 people

  • Currently 2.75/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

bv commerce | BV6

BV Commerce 6 Developer Notes #4 - Themes

15. February 2011 09:44 by mmcconnell1618
BV Commerce 6 Developer Notes #4 - Themes

BV Commerce 6 includes a new theme system that offers lots of new options to designers. Developers should be aware of the new theme structure and how things work.

System Themes and User Themes

One of the issues that arose with previous versions of BV Commerce was that designers had a tendency to edit the built-in themes directly rather than make copies of them. This meant that when a service pack was released it had the potential to overwrite a modified built-in theme without the designer knowing.

To resolve this BV Commerce 6 has a selection of “System Themes” which are built-into the software and then are installed to a store as needed. This allows designers to create their own modified themes with a single click from Options->Themes in the admin side. It also has the benefit of allowing designers to create copies of their own themes for backup and versioning purposes.

The system themes are located in the /Content/Themes folder where each folder represents an individual theme available for install. As a developer any new theme you place in this folder becomes available for install in stores.

When themes are installed they are copied to the /images/sites/{0}/themes folder where {0} represents the ID number of the store. For toolkit installs of BV Commerce there will only be a single store ID. Themes are copied with their exact name so that the system knows which themes have been installed already and which ones are available for new install. If you made a copy of the “Simple Blue” theme you’re actually creating a new one. Deleting your copy of the original Simple Blue theme would make it once again available for install. So, if a new version of a system theme is made available in a service pack you can duplicate your current version for backup and then install the new one.

Theme Parts

BV Commerce 6 Themes are made up of a collection of files in a folder. Every theme in BV 6 uses the same Site.Master file from the root of the web site.

Bvtheme.xml – This is the theme definition file that contains information like the theme ID, name and designer’s web site. You can edit this by hand or duplicate an existing theme and use the built-in theme editor pages in the admin to modify the file.

ColumnData.xml – Another new feature of BV Commerce 6 themes is the ability to save and install content columns to/from a store. This gives designers the flexibility to customize the site when a theme is installed. This file is the XML serialized version of the content columns and blocks. Don’t worry, you can also use the theme editor pages in the admin side to copy blocks into this file. No need to hand edit.

Preview.png and Preview_big.png – These are preview images that show store users what your theme normally looks like when installed.

Header.htm and Footer.htm – These files contain any custom HTML header and footer for the theme. These files contain standard HTML but also have optional tokens that are replaced at runtime. For instances the text {{copyright}} would be replaced by a copyright symbol and the current year.

Styles.css – This is the CSS file for the store. It is processed and minified before being returned to the browser. This allows you to use site-relative URLs in the style sheet like “~/images/sample.png” for a background image. The “~” character is replaced with the site relative root just like ASP.NET pages do.

/Assets – This folder inside the theme contains any images the theme may need to install in the store’s assets. For example, if you need to install a background image you would place it in this folder and when the theme is installed the file would automatically be copied to the stores Assets.

/Buttons – This folder contains button images to replace the standard button images. It is highly recommended that you create a complete set of button images. Image names must match exactly although PNG, JPG and GIF formats are accepted (in that order).

Theme Options on the Admin Web Site

The admin web site contains a new set of theme options under Options->Themes. The first page is the control panel showing a list of available themes on the right and installed themes on the left. Hovering over a theme on the right shows an “Install” button which you can use to copy a system theme to the current store. Hovering over an installed theme shows options to “Select”, “Duplicate”, “Edit” or “Delete” a theme. The currently selected theme displays in a different color background and will not have a “Select” button available.

The “Duplicate” button creates a copy of any theme. “Delete” removes a theme from the store but does not destroy system themes, which are always available. “Edit” takes you to the edit theme area.

http://help.bvcommerce.com contains several tutorials showing how to create and edit themes from the admin control panel. As a developer, just be aware that under the hood these pages are editing the files described above in the appropriate theme folder.

Currently rated 3.0 by 4 people

  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

bv commerce | BV6

BV Commerce 6 Developer Notes #3

14. February 2011 10:08 by mmcconnell1618
BV Commerce 6 Developer Notes #3

BV Commerce 6 includes a completely new search engine. Previous versions used simple SQL “LIKE” statements to match up parts of words. This made it difficult to determine relevancy and had trouble handling plural words. The new search engine functions more like Google. The BVSoftware.Search project has the main implementation of a generic search engine and the BVSoftware.Commerce project has management classes that are specific to commerce web sites.

Lexicon

The first part of the new search system is the Lexicon. This is a simple storage container that holds words and assigns them a numerical value. Every word that has ever been indexed in the search engine will exist exactly once in the lexicon. Part of the magic of the Lexicon is that although it can accept any word, BV only inserts stemmed words.

Stemmer

The stemmer is a tool used to convert plain English text into specialized roots of the word. For example, “Flower” and “Flowers” would stem to the same root. So would “Child” and “Children” which is more difficult to classify with simple rules. The BV Commerce stemmer uses the Porter Stemmer Algorithm. The first version was written by Martin Porter in the 1980’s and has become the de-facto standard for English language stemming. Keep in mind that if you are using BV Commerce in a non-English language you may need to replace the stemmer algorithm with one appropriate to your store’s language.

Search Objects and Search Object Words

The Lexicon stores information about words and SearchObjects are the items that contain words. SearchObjectWords are the core of the search system. SearchObjectWords relate SearchObjects to specific words with relevancy information. They link a “SearchObjectId” to a “WordId” from the Lexicon and have a “Score” which tells a searcher how important that word is for the SearchObject. A SearchObject is simply anything that can be indexed. It has an Id, a short summary of the item and links to the actual item. Item Type is also useful on SearchObjects allowing the search engine to return results for Products, Pages, or both.

Indexers

An indexer takes information about words and scores for an object and inserts it into the catalog of searchable items. A simple text indexer scores words based on the frequency with which they appear and a complex indexer accepts a list of pre-scored words for indexing. The complex indexer is used to index items in BV. The BVSoftware.Commerce.Catalog.SearchManager class pre-scores words for Products and other BV items then sends that data to the Complex Indexer to be included in future searches. The SearchManager scores words based on their importantance as BV Product information. For example, a word in the Title of a product will have a higher score than the same word in the description of the product. This helps return relevant search results even if other items had a higher count of the same word in their description.

Text Parser

The Text Parser is responsible for taking strings of text and converting them into a list of usable search terms. This includes splitting the text into individual words, removing non-alphanumeric characters, stemming words and removing stop words. Stop words are real words that have little to no effect on searches. Common examples include “I”,”a”,”and”,”but”,”of”,”from”,etc. By removing these words searches are more efficient and relevant. The Text Parser is used to clean up incoming queries and by the indexer so that the same rules apply to text from objects as text from search requests.

Searcher

The searcher class is the glue that ties everything together to deliver search results. It takes a Lexicon of words, a store of SearchObjects and SearchObjectWords and uses a Text Parser to convert from a text query into Word and Object Ids.

Summary

When a customer types in a search request on a BV Commerce 6 store the following steps take place:

  • The search query is sent to a text parser where it is split into words and stop words are removed
  • The query words are stemmed to their roots
  • A searcher looks up those words in the Lexicon to see if they exist yet and to get their Ids
  • The search looks through all of the search words to find the search objects that contain the highest score for those words and returns the a list of those objects.
  • The BV search results page looks at the results and generates links to the items based on their Id and object type.

Currently rated 3.0 by 4 people

  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

bv commerce | BV6

BV Commerce 6 Developer Notes #2

11. February 2011 11:19 by mmcconnell1618
BV Commerce Developer Notes #2

As I mentioned in Developer Notes #1, BV Commerce 6 is a hybrid application. It uses both Web Forms and MVC pages along with WCF services and AJAX to create a compelling user experience. From a developer’s perspective this might seem confusing so here is a short explanation of the request/response process in BV6.

Web Server

Internet Information Server (IIS) is the web server software running on the computer that hosts your BV Commerce web site. A customer requests a web page and that request is handled by IIS which then decides what program or module should be responsible for returning a response.

In the default configuration, IIS passes all requests to the ASP.NET runtime unless there is an error. This lets BV Commerce process requests for pages and resources that don’t physically exist but are referenced in a URL. If there is an error, the default BV Configuration is to have IIS pass error information to the Error.aspx page where it can be logged.

BV Commerce 6 Routing

Routing

When BV Commerce 6 first starts the Application_Start function in the Global.ASAX file is called. This in turn calls the RegisterAllRoutes() function which creates the routing table.

Routing is a new feature in Web Forms 4 that comes from the MVC framework. It allows an ASP.NET application to examine the requested URL and direct a specific page or controller to handle the request instead of just blinding looking for an exact physical file match on disk.

Because BV Commerce 6 is a hybrid application there are a series of rules that direct request to either ASPX pages or MVC controller classes. At the beginning of the routing table is a list of items to ignore like favicon.ico or the entire /images folder. This speeds up requests by skipping URLs that won’t have any processing.

The first section of routes map URLs to ASPX pages. For example, the URL /checkout is mapped to the Checkout.aspx page using this rule:

routes.MapPageRoute("checkout-route", "checkout", "~/checkout.aspx");

The next section of routes maps to MVC controllers like the CSS controller or FileUpload Controller using similar rules such as:

routes.MapRoute(“css”, “css/{themename}/styles.css”, new { controller = "StyleSheets", action = "Index" });

The last line in the routing table maps to the FlexPage controller. This MVC controller checks for URLs matching anything else in the system including 301 redirects and other custom URLs. If the FlexPage controller can’t find a match a 404 error is thrown.

BaseStorePage

Once the routing table matches a page or controller the request is passed on. Almost every page inherits from the BaseStorePage class. This class is used to ensure that every request has the information it needs about the current environment so that requests can be processed. MVC controllers don’t inherit from BaseStorePage but have very similar code in the OnActionExecuting function.

The BaseStorePage class implements the IMultiStorePage interface. This interface exposes a ServiceFactory class from the BVSoftware.Commerce module. During pre-init, the base class instantiates a new ServiceFactory and sets the current request context and locates the current store based on the URL.

If you did any programming work in BVC 2004 the ServiceFactory class will seem familiar as it exposes a service based API for interacting with objects like Categories and Products. The difference is that the ServiceFactory in BV Commerce 6 is not a static, global class but rather one that has been injected with information about the current environment. It also uses lazy loading for individual services so that if a page doesn’t request the CatalogService it never gets loaded/created for that request.

Next the BaseStorePage does some initial setup like settings the URLs for styles sheets, loading headers and footers for the current theme, setting cart counts, loading additional meta tags, logging affiliate requests and checking to see if the store is closed or not before turning control over to the page or controller itself.

Pages and Controllers

At this point the ASPX page or MVC controller for the request takes over. ASPX pages go through the normal page cycle of Init, Load, etc. MVC controllers will have a specific function called based on the routing table and will return a result of some kind.

Because of the IMultiStore interface each page or controller has access to a wealth of information such as the CurrentStore including settings, CurrentRequest which includes the URL requested and pre-configured services like CatalogService or OrderService.

For example, a category page could call:

Services.CatalogService.Categories.Find(categoryId);

To get a category by it’s Id. The function call appears as though it’s a global function but it really is a class that’s created just in time with the correct configuration information. The ServiceFactory takes the burden out of instantiating classes.

What’s with IMultiStorePage and finding the Current Store?

BV Commerce 6 shares a common code base with the BV Commerce hosted service. It may seem strange that each request needs to find out what the current store is until you realize that on the hosted platform thousands of stores are all running on one “application.”

In the Toolkit version of BV Commerce 6 there is a quick shortcut that defaults the store name to www. So, the first ever request for a page on the Toolkit version will create a “www” store if it doesn’t exist. The URL parser defaults to the single store quickly without actually checking the URL.

The IMultiStorePage interface name really represents the fact that calls into the BVSoftware.Commerce library are designed to be store independent. Passing in environment settings also makes the core modules much easier to test.

In the future there may be a multi-store version of the ToolKit and you should not hardcode store name or Id in any custom code. Always use the CurrentStore propery on the ServiceFactory class to determine which store you’re working on.

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

bv commerce

BV Commerce 6 Developer Notes #1

10. February 2011 11:44 by mmcconnell1618
BV Commerce 6 Developer Notes

Are you a developer getting ready for BV Commerce 6? Do you need to know what’s changed and what’s new? I’m starting a series of developer notes to share some of that information along with the goals and philosophy of BV Commerce 6.

Language Changes

BV Commerce 6 is 100% C#. BV Commerce started out as a VB.NET application because in 2001 most Microsoft web developers used VB Script in classic ASP applications. The move to VB.NET was a smoother transition. Over the years VB.NET has worked well but I found that some of the features that made VB.NET nice, like pre-compile syntax errors in Visual Studio, didn’t scale well as the size of the BV code base increased. There is also a perception that C# is more professional. Although VB.NET and C# are virtually identical in capabilities the perception that “real” programmers choose C# is important to keep in mind. It also appears that based on a number of open source applications in the .NET community that C# is becoming the preferred language for Microsoft developers. It’s also closer to C++ which is what many, if not most, of Microsoft’s own developers are more familiar with leading to their own preference for the language.

ASP.NET Changes – Project Type

BV Commerce 6 is built on the .NET 4.0 runtime. This means that it runs on a newer version of ASP.NET too. ASP.NET projects come in a variety of flavors including two different compile choices and two different page types. The compile choices are Web Site or Web Application Project.

Web Sites are similar to the old classic ASP applications that are compiled at runtime when the page is requested. Actually, ASP.NET compiles everything in a directory together into a temporary assembly when a page is requested and then watches the folder for changes, recompiling as needed. This is the way BV Commerce 5 works. That means you can open up the code behind file on a .ASPX page and see your changes immediately in the browser when you save.

Web Application Projects are compiled ahead of time instead of at runtime. By compiling ahead of time startup time can be improved and Visual Studio can do more compiler checking to help catch simple errors. However, it also means that any code changes will require a recompile. Pre-compiling can seem like a pain at first but you do have a lot more control over the output and can even deploy a site without the source code on the server. Web Site projects occasionally had issue where the temporary ASP.NET files got out of synch with the code causing errors that were difficult to track down. Web Application Projects solve that problem.

ASP.NET Changes – Page Type

ASP.NET pages now come in two main types: Web Forms and MVC. Under the hood they both share the same ASP.NET stack but there are big differences in how you create pages.

Web Forms are a direct outgrowth of Visual Basic and where designed to mimic a form based application on the desktop. This is the way ASP.NET applications were built from the beginning and it is a very powerful way to build web applications quickly. However, to accomplish this the ASP.NET team had to create some HTML tricks like wrapping every page in one big tag and adding a hidden ViewState field to almost every page. As the web has grown these tricks are starting to cause problems. For example, adding a Mail Chimp signup form to an ASP.NET is much more difficult than it should be because you can’t have a tag inside another tag.

MVC is a new way to build web applications and stands for “Model, View, Controller.” Several other popular web frameworks like Ruby on Rails use the MVC architecture and it provides developers with much more control over the HTML output of their pages. With that extra power comes more responsibility and if you’re coming from the Web Forms world you may feel frustrated at first.

BV Commerce 6 actually uses both page types. It is a hybrid application with most of the admin side using web forms and select parts of the front end using MVC pages. As more AJAX functionality is introduced in BV Commerce 6 and future releases I expect that BV will transition away from Web Forms in favor of MVC pages.

Data Access Changes

BV Commerce 6 uses ADO.NET Entity Framework 4 for data access combined with a custom data abstraction layer. It continues to use Microsoft SQL Server as the database. BV Commerce 5 used a large number of stored procedures for simple operations like Add, Update, Delete and Find. In BV Commerce 6 I’ve eliminated a large number of these procedures in favor of the generated code from Entity Framework. This frees up a lot of developer time and makes it much easier to make database changes without rewriting a lot of plumbing code. There are places, like order number generation, where stored procedures make more sense and scale better than Entity Framework generated SQL.

The data abstraction layer is located in the BVSoftware.Web.Data assembly and uses the Repository pattern. In a repository, you instantiate a class providing any connection information required and then ask the repository to Create, Update, Find and Delete objects. Specifically, BV Commerce 6 makes use of a special generic class called a ConvertingRepositoryBase which provides a lot of plumbing for converting standard .NET classes to and from their EntityFramework generated counterparts.

The data abstraction layer also has the capability to synchronize sub repositories. For example, Category classes have Page Version data that is handled by another repository. From a developer’s perspective you can call the Update() method on the category repository and any Page Versions contained in the category will be Updated, Deleted or Created as needed.

Web Service Changes

BV Commerce 5 used ASP.NET Web Services (.ASMX) for remote access. While easy to use and create, ASMX files create a giant proxy class that takes a long time to load/generate on the first connection. They also make it difficult to share classes amongst services forcing one giant service for every function call into BV instead of separating them along reasonable boundaries.

BV Commerce 6 uses Windows Communication Foundation (WCF) for remote access. The services are located in the /api/v1/ folder where “v1” is the latest version of the service. This allows for future service updates without breaking older versions. The services also use data transfer objects (DTO), which are standard .NET classes, located in the BVSoftware.CommerceDTO assembly. These lightweight classes define the data contract for the service and allow changes to the core BV classes without breaking web services. A sample desktop application is include in the source code to demonstrate how to connect to the API.

Unit Tests

One main goal for some of the refactoring in BV Commerce 6 was to enable more unit tests. Previous versions of BV Commerce used a lot of “Static” classes and functions. This followed Microsoft’s best practices for enterprise web development but advice and development practices have changed. Using lots of static classes does reduce memory overhead and makes development easier because you’re not passing as many object around but it also has the effect of creating a bunch of global objects. This leads to more coupling between classes and that makes it much harder to create test code. For example, testing taxes in BV Commerce 5 is very difficult because of the tight coupling with order objects, which are then coupled with shipping objects, which are then coupled with workflows, etc. In BV 6 we started with unit tests and interfaces making it easy to verify complex tax calculations in an automated, repeatable way.

Other Changes

There are a lot of other changes but the ones above represent the major develop related changes. BV 6 now includes a Visual Studio 2010 solution file with the source code which should help developer setup. A new command line installer utility is available to help with automated deployment and testing. Web.config transforms and Web Deploy are recommended for deploying from development to staging to live. There is a Silverlight project included that has a large file upload control with progress bar and cancel capabilities. JQuery 1.4 is included and is the primary JavaScript library. TinyMCE is the new WYSIWYG editor that is cross browser capable.

Other's in this Series

BV Commerce 6 Developer Notes #2

Currently rated 4.2 by 5 people

  • Currently 4.2/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

bv commerce

New Version of BV Commerce 6 Now Available

11. November 2010 09:57 by mmcconnell1618

A new version of BV Commerce 6, our award winning shopping cart software, is now available for download. Log into your account at http://www.bvsoftware.com to get the latest e-commerce software.

The update brings new features like Related Items, Price Groups, Currency/Culture Settings and more to both the licensed software and hosted shopping cart platforms of BV Commerce. Version 6.0.7 also includes lots of “under the hood” enhancements including support for running in sub-folders of existing web sites. 

 

Choosing Between a Hosted Shopping Cart Service & E-Commerce Software

13. October 2010 17:47 by mmcconnell1618

Choosing between a hostedshopping cart service and a downloadable e-commerce application can be adifficult choice. Both have advantages and disadvantages and either could be agood fit for your online store.

Hosted Shopping Cart Service

  • The service handles the technical details of running your online store so you don't need to worry about web servers and upgrades.
  • You have control over the content of your e-commerce site but there may be limitations. For example, you may not have 100% control over the HTML or layout but a good service should easily let you create great looking sites.
  • You don't have to worry about installing patches and upgrades but you probably won't have a choices of which features are available. In most cases you can use the web store features that the service provides but can not customize the programming.
  • Most hosted shopping carts have a monthly fee and may have a one-time setup cost. However, you are paying for the your store over time so you don't have a big bill up front.

E-Commerce Software

  • You have a license to the software and can host it with any company you wish. Some web hosts will fully manager your online store software and others just provide a place to park your web site with little help.
  • You have full control over the content of your store including the HTML code in most cases. You may have to do more design work and friendly design tools may not be as available as they are on hosted shopping cart services.
  • You are responsible for installing patches and upgrades. This gives you the option to delay patches or skip them altogether. You'll have greater flexibility but greater responsibility too.
  • You can add custom features to your store through programming but it comes at the cost of tougher upgrades and patches. If you choose to add customizations you are taking on a big responsibility to ensure the code of your site remains functional. That's a big step if you're not a programmer or don't have a full time programmer to help.
  • Licensed shopping cart software usually has a fairly sizable one time price and may have annual maintenance costs to obtain regular updates from the vendor. However, you have the flexibility to move from web host to web host which may give you lower monthly hosting costs than a hosted shopping cart service.

StripesAndPolkaDots.com on BV Commerce

12. April 2010 15:55 by mmcconnell1618

StripesAndPolkaDots.com just launched a site redesign on BV Commerce 5 with Global Web Solutions (GlobalWeb.net) and WebWorxInc.com in Richmond, VA. Stripes & Polka Dots specializes in unique gifts, necessities and “just gotta haves.”

StripesAndPolkaDots.com 

If you’re looking for Personalized Bmbroidered Gift Items, Blankets, Burp Cloths & Bibs, Sippy Cups, Snack Cups, Bow Holders, Wall Letters, Koozies, Travel Tumblers,
Personalized Stationery, Badge Reels, Laptop Sleeves, Checkbook Covers, Key Fobs, Luggage Tags, Headbands, and much, much more visit StripesAndPolkaDots.com today.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

bv commerce | BV Stores

BV Commerce End of Year Update

26. December 2009 22:45 by mmcconnell1618

It's been a while since my last blog post. Things have been very busy at BV Software and I'm excited about what we have planned for 2010.

 

  •  BV Commerce 5.7 is currently finishing PCI compliance testing. I had hoped it would be ready before the end of the year but it will most likely be January before everything is officially certified. This is a free service update for anyone with the maintenance plan.
  •  BV Commerce 6 is nearing its first beta version and I'm excited to be able to start to release some details. The entire core source code has been ported to C# and all future development will be in C#. That probably doesn't mean much to merchants but developers will want to be prepared. One of the main reasons for this is that c# is rapidly becoming the preferred .net language (other than dynamic languages like f#). The second reason is that Express versions of Visual Studio are single language only and when we standardize on C#, developers will be able to compile all projects using the free software.
  • Originally, BV Commerce 6 was using ASP.NET MVC for the store pages but we kept webforms pages around. As development has progressed, webforms 4.0 is proving to be just as effective for most pages and much faster to work with since BV Commerce 5 is based on webforms and we have less to rewrite/test. There may be some MVC pages in BV Commerce 6 but if you're used to working with BV Commerce 5 you won't have to learn a whole new development system.
  • BV Commerce 6 is on track for a spring 2010 release. It will be a free upgrade for all maintenance plan customers. 
  • I'm not quite ready to release feature changes for BV Commerce 6 but the admin pages are getting streamlined and there are some nice new search features for the store side.
  • The BV Commerce user conference planned for early 2010 has been postponed. The economic environment has made it difficult for many people to get travel budgets and I'm looking into the possibility of a webinar/virtual conference or scheduling an in-person conference for later in 2010 as the financial world improves.
Thank you to everyone who has supported BV Software this year and in the past. I hope everyone has had a wonderful holiday season both personally and for your businesses. Let me know if there is anything special you'd like to see from BV Software in 2010.
 
 

 

Currently rated 5.0 by 2 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , ,

bv commerce | Company History