May 24, 2013

LaSalleMart State of the Union

LaSalleMart 2.0 is my Joomla ecommerce extension for Joomla 2.5.

LM2 is my fork of a free open source Joomla ecomm extension that I grew more and more frustrated with. I decided to take this huge monolithic extension as my own to “do something” about my frustration. Best thing I ever did!

Last month, LaSalleMart 2.0 for California went live on WonderFoods.

 

Two New LaSalleMart 2.0 sites

This month, sweet-heart deals were made for two new LM2 sites. These sites should be live by month-end. By “sweet-heart”, I mean I am putting in free labour. This is it, no more freebies.

The second site is a client of one of the Toronto Joomla Group consultants. There’s some good user testing going on, which is very gratifying. One of the things being tested is the new layout feature developed for the first LM2 site! Without this new feature, Site#2 would be screwed. My own Knowledge Base page on my new feature helped me remember what the particulars were — plus, I realized I left something important out. Designers have a lot more control over the layouts now — including the add-to-cart form.

The third site is a very unique site. Long ago we installed Tienda 0.5, one of the first working versions of Tienda. Well, it’s not working on this site. So, we (meaning, mostly me) is doing up an entirely new Joomla 2.5 site.

Originally, I set up this third LM2 site as a dual Joomla 3.1 & Joomla 2.5 site. The 3.1 site would act as the front-end, for the purpose of utilizing the juicy mobile features. The 2.5 site would house just LaSalleMart.

The template we are using has both a 2.5 and 3.1 version, so getting a uniform look is easy (Famous Last Words).

However, in doing this set-up, the integrations between the sites to accomplish a seamless customer experience require too much work for the benefit received. Technically, no integration is necessary beyond just a link from the 3.1 product pages to the 2.5 LM product pages. So, we can always set-up a dual site in the future. However, mod_cart and the add-to-cart form are just two integrations that “trick” the buyer into thinking they are on one site.

LaSalleMart does not work in Joomla 3.1. However, perhaps instead of bringing LM2 to Joomla 3.1, we should bring Joomla 3.1 to LM2. Bring JUI or Akeeba’s “Strapper” or just plain ol’ Bootstrap into Joomla 2.5 to get juicy mobile goodness into LM today. We won’t do this with Site #3, but we are certainly mindful of it now. Setting up the dual sites was very educational — absolutely no regrets. Have to push to learn, eh!

Site #3 will sell, among other things, downloadable files.

 

New Mandrill Library

Wanting upcoming LaSalleMart work to take advantage of MailChimp’s Mandrill API, I created a Mandrill Library for Joomla.

 

Mobile

Most of the ecomm action is happening on the tablets. It’s imperative that LaSalleMart provide a kick-ass customer experience on the tablets.

As well, people behave differently on different devices. On smartphones they may respond to a link in an email. People do not go through checkout on smartphones. So, your customers will order with a coupon on their phones, but they won’t consummate the sale on their phones.

People will watch videos on their tablets. A video with a link to a pre-coupon’d “buy now” button will work on the tablet. Your customers will go through checkout if the experience is easy and pleasant.

“Responsive” is not enough, because your customers behave differently on different devices. LaSalleMart has to meld with this behaviour, above and beyond the site adjusting to the “viewport” size.

Joomla has something called “CLI” (command line interface). CLI is Joomla without the site! Akeeba Backup has a CLI “app” that uses the power of Joomla, and specific Akeeba Backup functions, without launching the site — and without invoking it via the browser. This is how the automatic backups (via CRON jobs) are done.

Joomla’s CLI allows for the creation of Joomla based “Web Apps”.  A “client-side” app is installed on the mobile device. A web application is accessed via a URL on a browser — nothing is installed on the mobile device. See https://developer.android.com/guide/webapps/overview.html for more info.

At the urging of wonderful client, I started building an app to cope with a two staged mobile-driven checkout: the first step is order placement; and, the second step is going through checkout later to pay for the order. I want to create a new LaSalleMart library that can access different aspects of the checkout to cope with this new mobile-based checkout flow. This new library is part of getting LaSalleMart onto Joomla 3. What was many months in the future is now a necessity to respond to the demands of mobile. The future is now, eh!

Mandrill for use with CLI became must-have, as we need to track out-bound emails with our Joomla apps.

The fact that we control the code puts us at a huge advantage to respond to mobile.

 

On Deck for June

On deck for development next month:

  • wrapping up coupons;
  • PayPal Pro;
  • streamlined checkout;
  • guest checkout;

On top of the new LM library (on top of the one we already have), I want to wrap up coupons, as it’s coming up in conversation now.

I am working on PayPal Pro, which prompted a new component (com_lasallemart_creditcard).

Streamlining and guest checkout are related. There are too many steps, especially at the address management.

 

 Generic components and the Framework on Framework

I have a separate blog post about these, as long term investments are starting to pay off in terms of ability to crank out features faster. Building LM for Joomla 3.x will be ongoing as new development will be as Joomla 3.x friendly as possible. I note this again so you know Joomla 3 (and mobile) is top-of-mind.

 

New Home Page

I’ve not had a front page article for about a month now. Time to gather my notes together and get my new home page article together. I mention it here so you know that my site is not broken!

 

Bringing Club Commerce up to its 300 Members

In June, I want to do something I’ve not done yet: broadening out the tight little group that has brought LaSalleMart to life.  LaSalleMart is humming on its first site, with two more upcoming. Development is primed for expansion. It’s time — finally! — to broaden our tight little group, that I call “Club Commerce”.

 

JUGT Presentation

On May 30th, I’m putting on a Joomla ecommerce presentation at the Joomla User Group Toronto’s seminar. My presentation will be available on my LaSalleMart.com site.

 


What is Apache and htaccess?

I thought I’d reply to an email with this blog post.

Apache is the world’s most used webserver software.

It is free open source software licenced under the “Apache License“.

It is a project of the Apache Software Foundation.

Joomla sits on Apache (and Apache sits on Linux — I’ll leave that for another blog post!).

Yes, Joomla can sit on IIS, but that’s a rarity for me.

Apache is Joomla’s “Maitre D“. When someone clicks to your site, Apache says, “Hello, Joomla site, table for one!”. Joomla says, “this way, dear visitor”.

Apache controls the web server aspects of Joomla. The way the URL’s look, communication between your visitor and Joomla — it’s all Apache.

Joomla comes with a file called “htaccess.txt”. This file contains Joomla specific stuff Apache needs to know about. We are supposed to rename it “.htaccess”. It’s easier to edit as a “TXT” file.

The commands in this .htaccess file are called “directives”. Here’s what’s in the htaccess.txt that comes with Joomla 2.5:

##
# @package Joomla
# @copyright Copyright (C) 2005 – 2013 Open Source Matters. All rights reserved.
# @license GNU General Public License version 2 or later; see LICENSE.txt
##

##
# READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE!
#
# The line just below this section: ‘Options +FollowSymLinks’ may cause problems
# with some server configurations. It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file. If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your sef url’s. If they work,
# it has been set by your server administrator and you do not need it set here.
##

## Can be commented out if causes errors, see notes above.
Options +FollowSymLinks

## Mod_rewrite in use.

RewriteEngine On

## Begin – Rewrite rules to block out some common exploits.
# If you experience problems on your site block out the operations listed below
# This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
## End – Rewrite rules to block out some common exploits.

## Begin – Custom redirects
#
# If you need to redirect some pages, or set a canonical non-www to
# www redirect (or vice versa), place that code here. Ensure those
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.
#
## End – Custom redirects

##
# Uncomment following line if your webserver’s URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root).
##

# RewriteBase /

## Begin – Joomla! core SEF Section.
#
RewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the request is for something within the component folder,
# or for the site root, or for an extensionless URL, or the
# requested URL ends with one of the listed extensions
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
# and the requested path and file doesn’t directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn’t directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
#
## End – Joomla! core SEF Section.

 

It’s a good idea to add things for extra security. AkeebaBackup.com’s Admin Tools component has an htaccess “maker” that makes even my eyes glaze over. Warning: one wrong move and  your site turns into a “500″ error machine.

I have my own standard — but not too crazy — set of htaccess “directives” that I like to add to my sites.

I recommend using an .htaccess password for your Administrator. This means that anyone who  wants to access your http://myjoomlawebsite/administrator has to have the id and password that is set up in Apache — *not* in Joomla — to see the Administrator login page. Yes, this means that you end up with two login screens for your Administrator. The extra security is worth it.

 

 

 

 


The Long Term Has Arrived

The long term has arrived. It is now.

Concepts underlying LaSalleMart’s development are coming into play this month, manifesting directly into the code and into daily development.

Yes, there is a vision with LaSalleMart. What makes this month of May 2013 different from other months is the extent to which this vision is tangible-i-fying into real development.

An underlying concept is: Get Small.

“Get Small” means no more huge monolithic components. LaSalleMart inherited a monolithic monstrosity of an admin. An impenetrable mass of code.  The file that was forked had about 60 plugins/modules/library/component.

There is no one-size-fits-all LaSalleMart. That’s not what it’s about. LaSalleMart is not conceived to be a hyper-consumer-friendly Joomla extension to install and configure. It’s not fire-and-forget software. LaSalleMart is conceived to be hyper-code-creation friendly, unlocking the vast potential of using Joomla.

“Get Small” means fast turnaround, quick fixes, and near instant transmission of updates to live sites.

“Get Small” means lots of separate components that stick to narrow purposes. As opposed to a huge component that does everything.

I’ve explained it, somewhat in jest, as having the power of Magento, the flexibility of Joomla, the programmable power of Drupal, and the ease-of-use of WordPress, all together.

What pissed me off enormously was waiting forever for updates for the Joomla ecomm extensions I’ve used in the past. No way I would recreate that which angered me to viscerally. So I did things differently.

And, in so doing, I learned a valuable lesson: the process is the code. Akin, methinks, to Marshall McLuhan’s “The Medium is the Message“.

It’s not about the code. It’s about code creation. My long term goal with LaSalleMart was to have the ability to create code. Create lots of code. Create lots of code fast. Deliver that code to live sites.

What is the sound of a feature that never makes it to a real site? It’s the sound of money that can’t be made.

A massive component only gets more massive. Get small, get “nichy”, release fast.

In the short run, it hardly made sense to get so caught up in the process of creating code. But, get caught up in the process I did. And this month, it is starting to pay off. What an investment in time and energy — and learning!

This month I tried something I’ve never done before: could I create four components from scratch in one single day? How’s that for putting “code creation” to the test.

Each component has a strictly niche purpose. Each component uses just one database, an unusual luxury. Each component will use the Akeeba Live Update to update on real sites.

There are two tricks: basing each component on a generic set-up; and, using the Akeeba Framework-on-Framework.

The generic set-up includes build scripts, update processes, file and folder structure, pre-fabricated manifest files — all the overhead is baked right in.

The awesome Framework-on-Framework relieves us of the necessity of creating standard Joomla stuff that all components require. Parsing URLs, creating forms, etc etc.  The FoF takes a huge burden off our hands, speeding development in so doing.

FoF did not come into the LaSalleMart picture for the longest time. To many antecedents. Standard build scripts needed to happen first. Standard Git workflows — however rudimentary given how many people are working on the code right now! — had to be figured out. So many things had to happen first, so many concepts, great and small, had to be brought into technical reality, before FoF would realize its explosive potential.

This month it was finally time to bring on FoF, in the context of “Get Small” — with fast turnaround and delivery.

I created com_generic. Then, based on this generic component, I created com_lasallemart_address, com_lasallemart_creditcard, com_lasallemart_manufacturer, and com_foobar_address (a custom component for a custom client project).

Oh, this was the first time I used FoF in a while. And, did I mention, each component is supposed to work in Joomla 3.1?

We program for FoF, and FoF intermediates Joomla. So, using FoF’s built-in “let me figure out how to do things in the different Joomla version” magic, it’s possible to build one component that works on both Joomlas.

So, did I produce four new components in a day? Well, no. It turns out that, well, this is the first time I’ve done such a thing, and so  there are details to figure out. Such as Bootstrap, and the usual doing-for-the-first-time-means-learning-stuff-you’d-not-know-if-you-had-not-used-it with FoF. Meaning, my generic component was not finished. But, I am getting there.

Boy, it’s a while ago in 2010. I did a podcast called “The Emergence of Nooku Framework Based Joomla eCommerce”. Substitute “FoF” for “Nooku”. In this podcast I describe the scenario that is now coming to fruition. It’s incredible to finally see it come to fruition with LaSalleMart!

Y’know, not that we need “com_lasallemart_manufacturer” right now. However, for LaSalleMart 3 for Joomla 3, we will need it. A nice compact little component that manages the “#__lasallemart_manufacturers”  table (oops, the “#__lasallemart_manufacturer_items” table — refactor alert!). If we decide we need a new feature for this component, we can Get It Done without touching any other component. How’s that for streamlined workflow!

LaSalleMart 3 will be a suite of small individual components. As well, it will have a broadened-out library. “Getting Small” means we can create LM3 over time, instead of as one big bang release.

Which leads me to into “Distros”. Joomla has a fantastic potential to create customized distributions that cater to specific needs. “Getting Small” has the added benefit of being a part of future future distros. We already have a taste of this by the existence of five LM packages. If you live in Canada, you’ll want LM Canada. What about a Joomla-LaSalleMart distro for sellers of software? A distro with no shipping, no manufacturer/vendor info — essentially a slimmed down package. Yes we can! “Getting Small” makes this very do-able.

 

 

 

 

 

 


Joomla 3, LaSalleMart 2, and the Wrong Side of Midnighta

LaSalleMart 2 is not made for Joomla 3.1. The solution is to put the ecommerce front-end in a separate Joomla 3 site in the webroot; and, install a Joomla 2.5 site in a sub-folder off the webroot for the cart and LM admin.

The reason to push for Joomla 3.1 is primarily for the mobile capabilities.

The separation of LaSalleMart into “front”, “cart”, and “admin” is natural. The “front” comprises what is usually the category and product pages. A reason to use Joomla for ecommerce is for its powerful “front” — the menus, the templating, the modules, the third party extensions.

There is no way that LaSalleMart can, or should, be so chock full of front-end capabilities anyways. A lot of what we see in LM’s config is related to its front-end presentation. Hey, just remember that for product presentation, you have the full power of Joomla at your disposal — which is a prime reason for using Joomla.

Seeing how this solution works out practically, I set up the third LaSalleMart site in just this way. Technically, it is do-able. Practically, I think the effort to achieve the technical pieces are not worth it at this point. The concerns are the integrations needed. There are actually minimal technical integrations required to achieve this dual site set-up — this is actually do-able right now. However, building a kick-ass customer experience requires achieving beyond the minimum.

Technically, no integration is required, except to link from the J!3.1 product pages to the corresponding J!2.5 LaSalleMart product pages. Users have no reason to register on the J!3.1 site — big PITA side-stepped. What we end up with are two separate and distinct sites.

A big plus is that templates are built for both J!3.1 and J!2.5. So creating a uniform look is do-able.

Your customers want a seamless experience, regardless of the number of sites they need to traverse. So, there must be just one single add-to-cart button — which is in the J!3.1 site. There must be a cart module on the J!3.1 site as well as the J!2.5 site.

Using a common database, and having the J!2.5 site in a subfolder off the root, we have a good basis for the integration. The fun is in the details, and diving headlong into the technical issues would take more time than its worth. The issues seem similar to the web app I started, where one site calls the web app where LaSalleMart is installed. I foresee having to create a CLI app that grabs the data and layout for mod_app. The add-to-cart would be fun, having to add to a cart that resides on a separate (yet accessible) site.

If we ever need to create this set-up, we know it’s do-able. By, essentially, keeping the sites separate and distinct, yet related.

I do wonder, though, if we can yank J!3.1′s /media/jui/ and plunk it into J!2.5. We already have Akeeba’s “Strapper” if we need it as a way to get Bootstrap onto our J!2.5 site. Maybe transplanting JUI is another way — it looks like a library like any other library. If the essential issue is using Bootstrap for uber-responsive sites, then we probably don’t have to jump to Joomla 3.1 yet. Just bolster J!2.5.  Something to keep in mind.

Joomla 3.1 is a short-term release. I confess a touch of apprehension building a J!3.1 site knowing that it can change, with the risk that this change is unknown so who knows how these changes would impact my front-end site.

But, do not get the wrong idea. I want to transition to Joomla 3.x, en route to J!3.5 — the Long Term Release. To this end, my new programming uses the Akeeba Framework-on-Framework (version 2), which intermediates between my component and Joomla. So I can program once, and my component will work on both J!3.1 and J!2.5.

I am in the midst of creating four — count ‘em! — new components. I’ll talk more about this on my blog, or in my next podcast. So far, it is working that FoF is letting me create one component for both Joomlas.

I want all my new LM work to be ready for Joomla 3, so using FoF is critical. When I modify the source code I frequently end up in Joomla’s doc, to see if this code will likely work in J!3.1, or what tweaks are needed. It’s a fine line between tweaking for J!3.1; and, screwing up existing code. The same decision when I originally forked into LaSalleMart: do I amputate code to ahieve a lean-and-mean codebase; or, do I defer in case I break something.

All this forward work on Joomla 3 has been putting me on the wrong side of midnight. The learning is good, pushing the technology is good. But, some core work’s been put on hold as a result. Now that we’ve peered into the future, it’s time to spend my midnight hour back on more core issues — and on my webapp(s).

 

 

 

 


New Mandrill Library for LaSalleMart

Ever had a customer ask you where their email went? You ask them if they checked their spam folder, and that’s about it.

Would be nice to look up some stats. Well, that’s where Mandrill comes in. MailChimp makes Mandrill. Mandrill is how we can send our emails through MailChimp.

In the midst of developing LaSalleMart’s first app, getting Mandrill up-and-running for LM became priority. The app sends an email notification, and it absolutely positively has to get there. So, time to dig into Mandrill.

Originally, I installed the excellent Compojoom CMandrill extension (a component and a plugin).

My app is based on the “command line interface” of the Joomla Platform. Well, I could not figure out how to get my app to use CMandrill. So, I created a library, which is what I really wanted to do in the first place! It is based on CMandrill, of course.

My lib_mandrill is a library, but there are two parameters that it takes from LaSalleMart’s config. Libraries do not have a door in Joomla’s Administrator, so if there are any parameters, one has to create a plugin or a component. Since I want lib_mandrill to work with LaSalleMart, it seems natural to add the new library settings to LaSalleMart.

Mandrill Library Settings in LM's Config

Mandrill Library Settings in LM’s Config

 

There is also a special status in LM’s Dashboard. It is imperative that your Mandrill API Key exists. Just installing lib_mandrill is no help — we need the API Key! So, I added a sub-status for the API Key as well:

Mandrill Status in LM's Dashboard

Mandrill Status in LM’s Dashboard

 

No, I am not an MailChimp affiliate. I see the merits of Mandrill for us, I am a happy MC user, so ta-da: meet our new lib_mandrill!

Download at LaSalleMart.com

Knowledge Base Page

 

P.S.  lib_mandrill installs successfully in Joomla 3.1. Haven’t tested it in 3.1, but certainly had my eye on 3.1 whilst programming.

P.S.S.  Looks like I’m being forked! See if we can get it on GitHub… https://compojoom.com/forum/116-mandrill-for-joomla/17796-using-cmandrill-in-cli#20680

 


Important Notes About LaSalleMart 2.0

My new Knowledge Base page turned into a blog post:

  • reminder that LM2 is a fork;
  • why untested features are sprinkled — and duly noted — in the LM;
  • Joomla 3 and refactoring.

See my new wiki page at https://southlasalle.atlassian.net/wiki/display/lasallemartkb/Important+Notes+About+LaSalleMart+2.0


WonderFoodCo: Live LaSalleMart Site

WonderFoodCo.com is a Joomla 2.5 Gavick based LaSalleMart 2.0 site.

Many LaSalleMart improvements are inspired by this site. Such as friendlier category and product details admin forms, and user defined fields in the PayPal Standard plugin.

April was busy for LaSalleMart’s changelog. Culminating in yesterday’s build of version 2.0.008.

This LM2 build is the best ever. LaSalleMart 1.0 never got this far. Things that I wanted to see are there.

LaSalleMart 2.0 is a fork of Tienda’s first (and only) Joomla 2.5 build. What was unusable is now used on a real site. Not every corner of what was inherited used/tested, but the key stuff is.

The cart is smooth. The site registration and address management are smooth. The checkout progression is step-by-step, logical, with cues along the way. From where we came with what we had, this is a big win. From here, we can improve things further.

Checkout looks good on an ipad — just keep the number of modules down to a minimum in the cart.

LaSalleMart inherits the template styles — it’s really Joomla!

Standard Shipping got a lot of love. I’m talking, a whole lotta love! There are seven standard shipping types, and it’s not a de-humanizing experience setting it up.

PayPal Standard works. You have the power now to specify the PP Stnd images and messages that your buyers see in checkout (don’t ask me how long that “quick” improvement took).

A buyer complained that the address she just entered into LM2 did not display at PayPal.com — “why do I have to enter it again?”. Done!

The updating is phenomenal. The component uses Akeeba Live Update, which I now use all the time, and it is fabulous. Click, baby, click, and you have the latest LM. Go to Joomla’s extension updater, and all the LM2 plugins, modules, and its library update in two clicks (click the “all” box, then the “Update” button). Getting things set up for this smooth updating was a major PITA effort — oooh, but what a payoff.

Using Atlassian.com is starting to shape up. Seeing code commits in the repositories and the JIRA issues and in my Confluence Knowledge Base — it’s a beautiful thing. You can initiate real software issues in your LM2 administrator — there’s a “kvetch” form that links to my JIRA. The dev side is looking good.

Multiple LM2 editions is a success. There are five editions, but I’m usually using the California or Canadian editions. Wonderfoods is a California site. There are 1,700-ish municipal tax rates in my California LM2. On April 1st, about two dozen rates changed. I changed the rates, and Wonderfoods received the updated tax rate changes automatically (after doing a Live Update). Great to see it work!

Checkout Step 1: Select Your Billing Address

I improved the add-to-cart form’s handling quite a bit. Product attributes received some lovin’.

I am excited to see my labours bear fruit. I am excited to see concepts bear out.

You have a new alternative today for your sites that need standard shipping and PayPal Standard.

We got this far, and we’re going further. Tell me about your site.

 

Checkout Step 2: Select Your Shipping Address

 

 

 

 

 

Checkout Step 3: Select Shipping Method

 

 

 

 

 

Checkout Step 4: Select Payment Method


Keep Your Eye on… LaSalleMart!

polished_geek_ecomm_overview4LaSalleMart has graduated to the “Keep your eye on these” list.

See Checkout Your Joomla eCommerce Options (pdf).

Scroll down. Way down! Scroll down past the “Whatever happened to…” page that lists Tienda. Of course, LaSalleMart 2 is a fork of Tienda’s first, and only, Joomla 2.5 build.

Scroll down past the LM2 mention, and you see a picture of 2 Swiss army knives. One has two attachments, the other has a zillion attachments. Very good visual when thinking of LM2.

For those who prefer extensions that are listed on the JED, I applied at the beginning of March 2013, so it’s 2 months now “Pending Approval”.

How ’bout the one you develop yourself

 

 

 

 

 

 

 

 

 

 

So slow I forked. Best thing I ever did.

So slow I forked Tienda! Best thing I ever did.

 

 


Take It From The Man: Make Joomla Your Joomla

From a business perspective, those who use Joomla need to manage it. Directly.

Why? Because Joomla left on its own represents risk. This risk needs to be mitigate through active management.

Case study: Joomla 1.5 is not officially supported by the Joomla Project, but there are a lot of J!1.5 sites out there. These sites are sitting ducks for hackers, who are probing these sites for their soft spots.

Why? Because managing Joomla represents business opportunity. Eg: Bundling extensions together lowers cost of technology acquisition.

Case study: Template clubs’ “QuickLaunch” bundles.

The Joomla Framework Development’s Google Group, and the Joomla CMS Development Google Group, are where discussions about the Joomla FW and CMS take place.

The fact that there are two separate discussion groups is something you should ponder right off the bat.

Busting up Joomla is a great way to increase security. The less code on your site, the less code that can be hacked. Joomla comes with a lot of extra code.

Don’t take my word for it. Listen to what The Man says:

To me the point is that the one-size-Joomla-download-fits-all doesn’t hold
water. It’s a line of best fit, and when the points are a scattergram
(Pearson correlation approaching zero) it’s more like a shot in the dark.
So instead of trying to please-all and pleasing-none (slight exageration
for effect) you bust things up so people can, potentially, roll their own
distro that better suits their needs.

The Man is Andrew Eddie. From what I can discern, he is The Man of the Platform effort. Perhaps one of a handful of “The Man”.

The Man’s phrase, not mine: “bust up”.

The Man’s  phrase, not mine: “roll your own distro”.

The Man’s phrase, not mine: “suit your needs”. Actually, it’s part of the software licence that comes with Joomla — that you can change the program.

There’s been a number of efforts that have come and gone over the years to bust up Joomla. It’s a lot of work, and a commitment is needed to sustain the effort so updates are done. This is something I want to grow as LaSalleMart grows, that we do here in-house, but make available to all.

My LaSalleCMS is for this purpose, but the demands of LaSalleMart have been too intense to kickstart work on it. This is indicative of what’s been happening to ambitious “bust-up, distro-out” efforts!

 

Here’s another one from the same link from The Man:

I don’t see how this changes anything. The auto-update should be able to work with a monolithic collection of extensions (that’s really what our Joomla distro is) or individually installed extensions. In other works [sic], auto-updating should work today (theoretically) regardless of whether, for example, “Banners” came with distro or was installed later from someones “playlist” off the JED.

Joomla is a monolithic collection of extensions, libraries, templates. The word “collection” is used to describe a specific way the Joomla Updater works. However, in a turn of phrase, a “collection of extensions” describes Joomla as it exists today.

UPDATE: see my comments further to this post in my May 2013 “LaSalleMart News” podcast (transcript available).

 

 


To Joomla 3, or Not To Joomla 3?

Joomla 3.1 is out and to my surprise it is labelled “stable“.

 

Should We Use Joomla 3.1+?

My understanding of Joomla 3 is:

  • version 3 is for play until the Long Term Support (LTS) version 3.5 is out;
  • everything is change-able in the Joomla 3 Short Term Support (STS) versions;
  • move from 2.5 to 3.5;
  • new sites in 2.5.

A couple of Joomla docs links:

This STS vs LTS stuff is taken from Linux. Just for fun, here are two Ubuntu wiki pages:

My new understanding of Joomla 3 is:

  • version 3.1+ is kosher for “real” sites;
  • v3.1+ has so many cool standard must-have features that it’s a must-have;
  • v3.1+ is still STS, and therefore change-able, and when things change to our detriment, the official answer will be: “it’s an STS”;
  • migrate 2.5 sites to 3.1+ -> perhaps;
  • new sites in 3.1+ -> perhaps.

Joomla 3 is a moving target. You install it with your eyes open. 3.1+ represents a meld of STS + LTS. It’s “stable”, but it’s change-able. Your template works with 3.10, but breaks with 3.12 — “TBSS” (too bad, so sad, don’t cry for me Argentina).

So, my bottom line straight answer to the question,  ”Should I use Joomla 3.1+”, is: “it depends”.

 

LaSalleMart 2 and Joomla 3:

Let’s cut to the chase here: will LM2 work in J!3? As is, no. But, no does not mean no, you know.

There’s a wonderful trick that I’ve used over the years: multiple websites, one database.

“db_host” is the same, “db_password” is the same, and each site uses its own “db_name”. So we have two Joomla sites: one the v3 site, and the other the v2.5 site. Both use the same database. So, in the code, we can use whatever table we want. Of course, we might have to hard code the db prefix for the second site, but a small price to pay. Perhaps make the second site’s db prefix a new config parameter, eh! Hmmm…

There are three areas of LaSalleMart:

  • front-end;
  • cart;
  • administrator.

Use K2 or similar for the front-end. Bam. There’s your Joomla 3 site for your products and categories. I advocate using Joomla or K2 type extension for your front-end anyways, in order to harness the full power of Joomla.

The cart needs to be in the public facing (non-administrator) part of Joomla. The cart on its own is a great candidate for porting to Joomla 3, as is the address management. But, that’s for later. In the here and now, you need to have the cart in a Joomla 2.5 site. So, you set up your J!2.5 site in a separate child folder /store/.

The admin is Joomla 2.5. Does it matter that this is in J!2.5?

Basically, LaSalleMart is in the Joomla 2.5 site. With some modification, the LM2 “Content” plugin (puts the add-to-cart form on Joomla pages, and any extension that renders content plugins) and the LM2 “Cart” module will work in J!3.

Keep the cart area incredibly clean. Go easy on the modules. Keep the same header and footer. Most templates have J!2.5 and J!3 versions, so the look-and-feel will be similar. It’ll be somewhat easy to set up the J!2.5 site b/c it’s front-end is less intensive.

Any synchronizing between the two websites’ databases will be do-able b/c they share the same database.

So, it’s do-able. The effort is tiny compared to converting LM2 to Joomla 3.1+.