Anyway, I was all happy with OpenCart and all of its native features, and then I realized that there's no real hook system to override core functionality. The one thing I will give Ubercart is that, since it piggy-backs on Drupal, you can usually use hooks to override core functionality.
One example I have, is a client who sells products that come in different dimensions... which would be fine as a drop-down box of options, but the problem is that there's another option for material type (e.g. marble, glass, etc.) that ultimately dictates the cost per square inch and the final price. For a better user experience (and easier administration), it would be better to have two separate drop-downs rather than a giant list showing all ~40 different combinations in one giant drop-down list. Now, to make matters even more complicated, the client also wants a preview image of the selected option to show up as well (e.g. the preview of the fully-dimensioned product with appropriate material).
I've been able to irk Ubercart (begrudgingly) into doing this by creating a custom module that hooks into the product view page and throughout the checkout system to do all of this, all without touching the core... meaning I can usually upgrade without any issues.
So, the problem is I have yet to find a way to do this in OpenCart, which is the one single thing holding me back from using it. This isn't a complaint, I am mainly just curious at this point and looking for more information. The closest thing I've been able to making modifications without touching core code is vQmod. I've looked into it and appears like an on-the-fly sort of diff tool, but why not just take advantage of the core MVC platform and employ a hooks system? Does it benchmark better through caching?
The biggest downfall with osCommerce (other than its lack of security) was the fact that all extensions required doing find/replace operations to the core, and eventually hacked systems would no longer be upgraded. And while vQmod appears to do it virtually (much cleaner!), I'm just wondering why the find/replace idea is being used.
It would seem to me that hooks are far more upgrade-friendly because you're not depending on the same static find/replace methodology for patching (whether virtual or non-virtual) core code. Plus the entire software is based on a programming pattern that would pull it off so well.
I know this is really starting to sound like a whining post, but I have to assure you it's more curiosity that just might be coming off as blunt. I'm hoping I'm just wrong and that there is some sort of override system out there that I just haven't been made aware of... or that there's more to the find/replace mods that makes it worth it for doing extensions this way.
Thanks!
p.s. if anyone took offense, I probably deserve the backlashing coming to me. I'm 100% aware that I could get responses like "Well if you want _____ code it yourself."
