Everyone is still buzzing and awaiting the Beta release of Zen Cart 2.0. The thread to subscribe to is here if you want updates and release information.That aside, we are going to get in to some details regarding the brave new Zen cart release of 2.0 in 2009 with the information we currently have and will update as we can.
Current Zen Cart 2.0 Hosting Requirements
NOTE: Zen Cart v2.0.0 has the following MINIMUM requirements:
- REQUIRES PHP 5.2 or newer
- REQUIRES MySQL 4.1 or newer
- CURL support not “required”, but VERY highly recommended
Target Zen Cart 2.0 Improvement Goals
As mentioned in previous Zen Cart Roadmap posts, an emphasis has been placed on improving Zen Cart performance by various methods, especially reducing the number of database queries required for processing pages.
For the programmers among us, you’ll be happy to know that the code has been largely converted to a much more efficient OOP structure, which will ultimately end up making future growth much simpler.
Templating will be much simpler, in that the complicated PHP blocks that used to make them so hard to read or follow or customize have been removed.
Stylesheets are leaner. And there are some very easy-to-use admin-side layout controls to make setting your desired layouts *much* simpler.
The same override system exists for Zen Cart templates and language files, meaning that those already familiar with that part of the directory structure will find it easy to continue using.
UTF-8 support is now native, and the more complicated language files have been simplified and split off into their own for easier management.
Written for PHP 5
Zen Cart 2.0 takes advantage of features specific to PHP 5.2 and MySQL 4.1, thus, those are the new minimum requirements for your web hosting service to provide in order to run it. CURL is also highly recommended.
Enhanced and Improved Zen Cart 2.0 Features
Zen Cart 2.0 Summary of enhancements, new features, and other improvements for Beta v2.0:
- Zen Cart template system improvements
- product listings consolidated to share display logic, making it easier to display different views of information in a consistent format
- more control via the admin
- simpler and more advanced and versatile stylesheets, with dynamic CSS used where needed … can be overridden easily if needed
- procedural code and other function calls removed from templates
- jQuery support added
- sideboxes have been renamed as “content boxes”
- centerboxes are now “listing boxes” and can be rearranged much more intuitively via the admin, and the layout is now controlled by CSS, as is most of the template
- language-defines are now accessible in templates as $paLanguageXXXXX variables
- New class-based structure
- significantly reduced query counts
- easy access to product properties
- support for product types
- most procedural functions converted to shared classes to reduce redundancy
- Stock/sku support (This is a big Zenner Feature request coming to fruition)
- stock can be set for attribute combinations
- ajax suppport for stock display
- sku can be set for attribute combinations
- ajax support for sku display
- individual reorder levels can be set per attribute/sku combination, and a global setting can optionally override
- New DB abstraction layer
- uses lightweight drivers based on abstract class
- easier to add new drivers
- Added innodb db driver
- transaction support for MySQL databases using innodb
- Data Access Objects
- centralize all queries
- easier to override for different db drivers
- use of variable binding for increased security
- allows for future changes to db abstraction layer/use of ORMs
- New email engine – the more reliable and contemporary and RFC-compliant swiftmail v3 project has been integrated with Zen Cart
- New installs based on UTF-8 by default.
- (As such, all language-file edits and sql-file edits should be done with an editor that can save the files in UTF-8-without-BOM encoding format.)
- Language files have had some alterations. They no longer directly “include” other files. Each contains only define() statements. Some content has been split off into separate files.
- Language files now contain a “locale.php” file, in which locale-specific settings can be made, apart from the rest of the language files. This makes some translation simpler for certain locales, as well as changing of DOB format, etc.
- System now attempts to assist in setting config files to read-only status if they are found to be writable, to help minimize some confusion on permissions settings
- Group-pricing facility expanded to allow future growth to additonal group handling
- customers_info table merged into customers table for simpler data-mgmt and less problems with incomplete imports when people guess at table-names when doing ad-hoc extracts of their database
- Session handling improvements (Wohooo)
- Spider-detection improvements, and more known spiders detected (also now allows for mixed-case specifications in spiders.txt) (This is a big SEO punch for Zen Cart WTG)
- Hit-counter improvements (no longer tracks spiders as page hits)
- Automatic re-optimize of table data when deleting products etc using admin UI
- HTMLarea replaced by FCKeditor – Yeah! Better Code!
- Improvements to included product-type filters
- Improvements for more accurate language-detection when set in browser-detect mode
- Improvements to prevent errors in whos-online data display when file-based sessions are in use
- Lengthening of several table fields to accommodate longer (esp multibyte) data
- Has been subjected to a Security audit (prior to official release)
- Search improvements – This is probably the #1 Zenner feature complaint and request
- Improvements to prevent certain error messages that could occur if an added language was defined but its files weren’t present on the server.
- Payment and Shipping module code standardized. Now allows prefixes to be set for submitting order numbers to gateways. Also allows module updates to happen more easily, without having to uninstall and reinstall in order to obtain new settings
- Core gateway payment modules allow use of a store-identifier-prefix so multiple stores can be more easily identified when sharing a single merchant account.
- Improvements to data made available to affiliate tracking systems on checkout_success
- Order Data now separates first-name and last-name, as well as storing telephone numbers for each address
- Now even more detailed information is stored with each order, making it easier to reconstruct an order as at the original point in time when it was created. It’s now less dependent on original product details being present in the database.
- Attribute data is now stored with orders in such a way as to retrieve the data so that it always shows up in the same order in which it was added to the order initially. This prevents some confusion which used to occur when multiple rows of text attributes were added but showed in mixed order.
- Configuration simplification: configure.php file contents abbreviated. Commonly-untouched components moved to common_paths.php file, which loads after configure.php and is thus overridable by defines in configure.php
- Session name (“zenid”) now definable in configure.php file. Same with zenAdminId in admin.
- Credit Class system bugfixes and improvements
- Application program logging and improved error handling
- New “/logs/” folder added for storing debug logs from the store in general, or from modules that communicate with external servers etc.
- New email templating system — makes it easy to visually configure how both text and HTML emails will appear (We like this)
- Country status – can now set countries to active/inactive instead of deleting unused countries
- Admin can change customer password from admin side (Yes!)
- Visitor cart can be set to be discarded, or restored upon next login
- Prevents credit card slamming & login slamming (Zen Cart is tough on credit card fraud)
- New fields added for product data (can now specify short-descriptions for product listings, an “is-new” date, expiry-date, allow-backorder flag, product dimensions, display-weight, etc)
- Product Statistics now separated from products table, to minimize record-locking conflicts and minimize problems when using external tools for import/export of product data
- New fields added to customer record, including some user-definable fields, mobile-phone number, etc (This is another huge Zenner request)
- Salutation support added, with choices editable via admin interface
- Newsletter handling split off from customer record into dedicated tables, and added ability to handle multiple newsletter choices (Nice, newsletter only subscriptions)
- About-Us page added
- Contact-Us page now optionally allows entry of subject and telephone number. (This is nice for shop owners!)
- Site-wide Order number prefix/suffix can now be set (for display purposes only – does not change the existing method of storing order numbers sequentially)
- Database backup re-integrated back into the Admin->Tools menu (YES!)
- Shopping Cart class is no longer session-bound. It’s a separate object in the zcRegistry.
- Download system now allows notifier hook to allow intercept if alternate handling is required. This can allow for other protocols and even alterations to download content before delivery.
- Metatag generator improvements. Custom metatag data no longer stored in separate tables, thus minimizing queries and simplifying some synchronization problems.
- “Home” link improvements. Now includes session ID if needed, and its format can be more easily changed by setting the desired parameter in the zen_href_home_page_link() function call if really needed
- New options allow additional email addresses to be set for “bounce” and “system alerts” purposes. (Help for accidental blacklisting!)
- Store Manager now has additional database cleanup options including the ability to purge certain sets of temporary data to improve performance and managing high-traffic tables (Nice and needed!)
NOTE: The following components have been removed from the core, in favor of being treated as addons instead:
- Offline Credit Card payment module removed from core, in favor of addon
- NoChex payment module removed from core, in favor of addon
- phpBB class removed from core, in favor of addon
When Can I Upgrade to Zen Cart 2.0?
The following Beta release schedule has been posted by Zen Cart for V2.0. Note that many shop owners will genuinely be a year or more from considering the Zen Cart 2.0 upgrade following release.In part the reasoning is development cost and needs. Note that for example, old 1.3X templates and modules will no longer function under the new system and wil need to changed significantly to be applicable to the new Zen Cart 2.0 platform. Additionally, any new software release is going to have bugs and issues… A total software rebuild and next generation of this sort is likely to have MANY. This is expected and the core reasoning for the Public Beta release. The release schedule is below.
Releasing Zen Cart 2.0 Public Beta Schedule
In the interest of keeping with the original plan as closely as possible, and in light of the fact that there are a few components of the 2.0 code that are not yet fully production-ready, we have decided that when we release the 2.0 code, it will start as a public beta. This affords numerous benefits: (i) language-pack translators can get a jump start, making the final touches after the beta much faster, (ii) addon-developers will have access to the code so they can prepare their own beta updates to work with the new version, (iii) the community gets a chance to look at it, play with it, and give feedback, (iv) you get to help us identify any bugs, before they hit live stores.
The following is a *tentative* schedule for the beta program (subject to change):
In approximately 30 days – first installment of public beta
30 to 60 days after first beta – second installment of public beta
30 to 60 days after 2nd beta – third installment of beta … hopefully coined as a Release Candidate
Sometime near the end of the first quarter – official release, no longer in beta status
Zen Cart v2.0 Upgrade Information
All your customer, product, and order data is stored in the database, and there are MANY changes to the database in this new version.
The good news: Your orders and customers (and indeed all existing database content) will be preserved when you use the provided zc_install scripts to upgrade your database content to the new structure for you, making this part of the upgrade quite simple.
You will need to rebuild your template fresh.
YOUR OLD TEMPLATES WILL NOT WORK.
The good news here is that identifiying places to change things, and making changes to templates and stylesheets is a whole lot easier.
Even some new layout formats are automatically handled via some admin switches.
Old language packs will need to be updated. The biggest change is the need to re-encode language files as UTF-8-without-BOM format. And, of course, add translations for new texts.
Also, the english.php file has been separated into a few additional files, including the locale.php and systemWarnings.php files, and a few others. Just a couple things for translators to note.
Every addon will need to be rewritten using the new infrastructure.
The good thing to note here is that many addons can now be done using the notifier/observer system far more efficiently than they could in the past. This makes it possible for many addons to be truly plug-and-play: Just drop in the new files and it works!
It will take time to get used to using the new classes and approaches to accessing data more efficiently. Some observer/notifier examples will be provided as a starting base.
I think this is a big and necessary move for the Zen cart team. Some have said that finally, the OS Commerce legacy code will be removed and no longer haunt or programming tasks. The new software platform is expected to be more easily managed by your average shop owner and certainly more robust as well. So whether the teams takes 6 months or 12 matters little as the task at hand is very large and the time they spend testing and coding instead of rushing will be a great benefit to be reaped by developers and shop owners alike.