As much as I adore xslt .. there is a steep learning curve and little if any wysiwyg editor support.
That said the only other viable solution that I see is to use smarty - smarty.php.net - to output xhtml 1.0 transitional (or strict or 1.1) markup in a SEMANTIC fashion. Then use css to handle the formatting.
Having used smarty and oscommerce both extensively I have to say that smarty is very quick, very extensible, easy to learn and has so many features that would make catalog generation very easy. OSC on the other hand is a pile of crap from a coding perspective. You have multiple styles of syntax in use and have succumbed to the terrible habit of using php procedurally by mixing it inline with html markup.
Personally I think OSC should go back to the design table..
Implement a set of classes that do the following..
An abstraction layer for db access. Do this using PEAR:DB so that you can switch db systems as you wish.
An abstraction layer for authorizing logins. Do this in such a way that the username and pw fields and the auth table are set in a config file. This would make integrating osc into sites with their own auth schemes SO MUCH EASIER.
Implement a REALISTIC language tool and some automagic localization features. GETTEXT and ip2locale should make this a piece of cake. Of course you can also easily allow users to switch locales in the case (common) of ip2locale errors.
USE SMARTY and make LIBERAL use of it's built in pre/post filters and modifiers. Write consistent concise plugins for the few features that smarty doesn't have that you may need. What those would be I can't even imagine. By doing this you ensure that the DATA coming from the MODEL LAYER won't be munged by any sort of business logic until viewing occurs at the clients end of things. By keeping all of your data in it's purest form (integer / floats for numerics - raw unescaped text for text - etc) you can ensure that any manipulations of said data are possible.. so you want a wap store.. easy. So you decide you need an RSS feed for new items .. piece of cake. The data could even come out of the MODEL as XML and allow the CONTROLLER layer to handle what sort of output format to spit to the client.
My suggestion (as a lowly php developer of 4 years) is to use PEAR as much as possible to handle your application logic. Write a clear and efficient class to handle the MODEL - thus giving you a clean API for handing data off to the view. Extend the smarty class as needed for the view layer and leave the html OUT OF THE CODE.
As an added benefit : If you do all of this correctly you have a clean MVC application that should run fine (aside from some possible PEAR issues) on php 5 .. which you should be seriously concerned with. It is the new version and eventually your old procedural shitpile will become not only obsolete but a running joke.
Having played with your competition
I would have to say that you guys are behind the curve for speed (compared to interchange and xcart.) as well as customization (interchange uses generic php templating and xcart uses smarty. agora is crap) features. The only one you have an edge on features wise seems to be Agora. There was once a time where you guys had the best cart system around. It's about time you caught up with the competition and took back the throne, yes?
** edit **
One last comment. The other option and the one I would most like to see.. is a php 5 version of osc using xml/xslt/custom doctypes along with css2 or lower styling rules and simply begin marketing yourselves as an out of the box PRO e-commerce solution aimed at webmasters and developers who know a little bit about the technologies.
In the end this is just my $0.02 and opinions are cheap.
Edited by gremlinx, 09 June 2005 - 01:23 AM.