From this thread two addons became a reality, both of these addons change no core code, but they change the way that core works. Here are the two addons that the ideas in this thread produced;
app.php/addons/paid_addon/show_special_percent/
app.php/addons/paid_addon/update_special_price/
In addition, while working on these addons I was reminded of a very (very) early addon in the osc/bootstrap ecosystem from back in 2015, so I updated that addon as well;
app.php/addons/paid_addon/bargain_basement_specials/
--
Chit chat, just because it's an interesting subject;
As I mentioned earlier in the thread, core has the ability to "listen" to other files and to be amended by other files. So, although it is 100% correct to say "Core is core, and if the core developers don't want to change something..core wont change", it is just as correct to say "Core is core, but it's relatively easy to bend that core to suit my needs, without actually changing any core code.." - hope this makes sense to all?
In effect, we have the following (non exhaustive list of) things that can bend the core without changing core code;
Modules
- content, shipping, payment, order_total, etc and so on. There are some admin modules as well, but these are not really explored to any great degree. Phoenix has also introduced extra modules that no other cart has such as PI, customer_data, etc.
- I think almost everyone knows about modules as they've been part of osc (and therefore any fork such as Phoenix) for a very long time.
Hooks
- Introduced in oscommerce 2.3.1 by Harald, but never really used for much of anything.
- Phoenix really turbocharged the hooking system, introducing database hooks as well and pre-placing MANY hook calls throughout the shop and admin area.
Templating
- Phoenix only - Matt has made it so that almost every component can be overridden in your chosen template.
Overriding classes
- Matt introduced the concept of classes, see /includes/system/versioned/x.x.x.x/
- If you want to change/extend one (or more) of these, the system will recognise that and core changes to reflect your coding.
I suppose what I'm trying to say is that no Phoenix user should ever feel that they are tied down to what is in core code and that's that - the whole ecosystem of Phoenix is designed to allow you (the user) to do whatever you want to do. If you (or your coder) come across some area that is a bottleneck of code all you have to do is let us know and we can advise further.