
As a fair warning to developers and users, I'd like to go over some of the changes ahead of time so there are fewer surprises in store.
Major Changes to existing features that will affect upgrades
1. URL Class.
The url class has returned! This is great news for everyone and a huge pain in the ass to make all those changes. Daniel spent about 2 days find/replacing. The new url class offers the following changes and features...
public function link($route, $args = '', $connection = 'NONSSL') {
This is the new link method that ALL urls will pass through for formatting and custom encoding mods.
Old links as of 1.4.4 - 1.4.9.x:
Code: Select all
HTTP_SERVER . 'index.php?route=product/category&path=' . $path;
HTTP_SERVER . 'index.php?route=product/product&product_id=' . $product_id;
HTTPS_SERVER . 'index.php?route=checkout/cart';
Code: Select all
$this->url->link('product/category', 'path=' . $path);
$this->url->link('product/product', 'product_id=' $product_id);
$this->url->link('checkout/cart', '', 'SSL');
There are also some hook functions to allow applying custom encoding options to urls that run through the link function. More on that after release.
2. Modules
Modules have changed in many ways...
The new template has new module box wrapper code in the tpl files. This is still done "per-module" tho I'd like to get the modules to have just their code, and leave the wrapper code inside the individual positions. This would make them compatible with all themes out of the box instead of having to change the default theme wrapper code in each module for each theme. Modules should be universal and shouldn't have their own wrapper code, only the functionality. Have to convince daniel of that first...
Modules are now instance-based. This means you can have multiple instances of the same module in different positions at the same time. It also allows you to set the module instances on a per-page basis. The home page could have bestsellers on the right column, the login page could have the bestsellers in the footer, etc. You could even make 5 information boxes in the same column if you wanted. Not sure yet how the multi-instance will work for something like category where you may want different categories per instance.
3. Product Options
Product options have had a major overhaul...
Product Options are now Global. This means you create a "pool" of options and their option values.. then you associate the products with them like you do with categories. This makes things much easier to apply the same set of options to similar products. For example, you create
Option: Color
Option Values: Red, Blue, Green
Each option value has its own qty, weight, required, subtract, price, and weight by default per-product
You can associate
Tshirt A with Colors Red(5/$2.00) and Blue(7/$3.00)
Tshirt B with Colors Blue(2/$0.00) and Green(40/$5.00)
Tshirt C with Colors Red(0/$4.00), Blue(5/$1.25), and Green(10/$2.00)
etc
Product Options also support multiple types. You choose the type when creating the option.
Color could be a select box with values Red/Blue/Green
Size could be a radio with Small/Med/Large
My Image could be upload box
Custom Greeting could be a text box
There is no good way at this time to upgrade from the current product options system to this new way. Someone may have some magical sql/php that does it, but nothing is planned from us. Upgraders from 1.4.x to 1.5.x will likely lose all product options.
4. Layout vs Children - Rolled back to children method for now
New features that shouldn't break upgrades
1. Product Attributes
There is a new system for products called "Attributes". This is used in a similar way to options, but instead of them being something selectable, they are common properties or characteristics of multiple products. This is a key element in getting compare and filtering navigation tools to work. For example, you may sell multiple computer monitors. All of them have common attribute types that would need to be compared. e.g.: Dimensions, weight, Type, refresh rate, color, connections, frequency, resolution, etc. This is a great major feature to have in any cart
2. Product Compare
Using the product attributes, the compare will put items side by side and list all their attributes for a comparison
3. Rewards System
There is a rewards point system in the core now that is set on a per-product and per-category basis. The design is simple: "Buy this product, get xxx reward points". Not sure how it works at the category level yet, but I assume: "buy any product from this category, get xxx reward points for each item" or something like that. Reward points will be accumulated for each customer and you can set how many reward points are needed to buy a product or disable the ability to buy certain products with reward points.
4. Wish list
There is a link for wishlist, which I assume works the same way that cart does. It is not functional at this time, but I think it's fairly obvious how it should work
5. Affiliate
I see an affiliate commission field in the system settings. I'd guess if a customer is referred to your site and buys a product, the affiliate gets this amount (%) in commission.
6. One Page Checkout Option
Haven't seen this working yet. Saw some early designs but daniel said it was a pain so he left the option for one page and normal multi-step checkout options. However, it still uses the old separate guest and registered system for the multi-step checkout.. I think that needs to be redone to combine the 2 before worrying about one step. That may have to wait until 1.5.1.
7. New Admin Order Entry/Update
Daniel took a stab at order entry/edit from the admin area. It's changed completely and isn't finished yet so hopefully it has better luck than mine did.
8. RMA system
Looks like Daniel spent a lot of time on this.. more than I think it needs tbh.. but RMA seems to be an overhyped and overrequested feature IMO.. maybe I just don't get it. Either way, There is a very robust looking RMA system in place.
That covers most of the major changes. There are a lot of little things that I just couldn't mention but a hell of a lot of work has gone into this. There may be small bits and pieces that may change before final release, but for the most part these are all planned changes and features based on what I see in the code and on the dev demo.
Before you ask, no, the dev demo is not available for viewing yet.
Daniel is going to need a nice long vacation after this is done and hopefully you all find some loose change in your pockets (paypal accounts) for donations to send him to Hawaii when it is done.