Artio JoomSEF with MageBridge
Sunday, 07 March 2010When we started with MageBridge, we had SEO in mind. But our encouter with Joomla! 1.5 SEF was so good, that we only created MageBridge with the core SEF functionality in mind. What we didn't realize was that still a lot of people opt for third party SEF solutions, and that some of these SEF solutions are completely incompatible with the Joomla! core SEF.
External logic for creating SEF URLs
For regular Joomla! components these third party SEF solutions are not that bad. The weird thing about MageBridge is that actually all the Magento URLs are already optimized, so MageBridge only needs to convert the Magento URL into a Joomla! URL. It's exactly how a bridge should work - not reinvent the wheel but bridge the existing functionality.
There for Magento is responsible for the SEF optimization. It constructs URLs how it sees fit and forwards the URL to Joomla!. Now, Joomla! 1.5 introduced the concept of router-files, with which a component like MageBridge could control its own logic for translating SEF URLs back and forth. We have used this powerful feature to build URLs that integrate smoothly in Joomla! but still can be handled properly by Magento.
The nightmare of sh404SEF and SEF Advance
With the third party SEF tools sh404SEF and SEF Advance, the story changed. Instead of allowing MageBridge to control SEF URLs, they require third party components to only handle non-SEF URLs (system URLs) so the SEF application can do all the work.
Unfortunately this breaks compatibility with the default Joomla! SEF. In other words: Every component-builder needs to include a special router-file for sh404SEF and/or SEF Advance, because most likely sh404SEF and/or SEF Advance is not going to support most of the 4000+ extensions available to users.
Outdated architecture
To make our customers happy we started with compatibility with sh404SEF. Because we already said yes, we worked for months on a flexible solution that allowed Magento to output SEF URLs and sh404SEF to import non-SEF URLs. This weird solution was a bad situation - causing unwanted redirects, strange JavaScript links and continuous 404-errors as soon as the sh404SEF cache was emptied.
sh404SEF needs to translate the system-URL and if it unable to do is, it causes a 404 page. It's kind of weird that this outdated architecture is not extended with a simple referral back to the Joomla! SEF functionality (if-else-joomla-sef) which works fantastic anyway. In the end, we got things working the sh404SEF-way, but still frequently Magento modules that are written in an ugly manner stop working within MageBridge just because of the URL-translation system used by sh404SEF.
With SEF Advance we did not start to make MageBridge compatible in the first place. The source code is not available, and the component is in conflict with the GNU/GPL.
The best solution: Artio JoomSEF
The best solution available for using a more advanced SEF component together with MageBridge so far is Artio JoomSEF. The reason for this is very simple: The component retains backward-compatibility with the default Joomla! SEF. So all the hard work we put into the core SEF-functionality, is simply reused by Artio JoomSEF. That's smart thinking.
It's kind of strange that Joomla! 1.5 has been on the market for about 2 years, and components like sh404SEF and SEF Advance still have not updated their architecture to include compabitility with router-files. It sounds a bit like all those Joomla! 1.0 components that are still being sold, but that do not have any intend to go Joomla! 1.5 Native.
Kudos for Artio JoomSEF.
