Category: ExpressionEngine
It never ceases to amaze me how many amazing add-ons there are for ExpressionEngine, so many in fact that I often forget about some of the best ‘must haves’ for new projects. In an attempt to remind myself of these gems I thought I would collate the ‘gratis’ must have add-ons in a list here on my humble blog.
This is an evolving list, I’ll update and amend it as I go… and let me know in the comments if you think I’m missing anything obvious. :)
Working day in and day out with ExpressionEngine 2 I’m seeing ‘A LOT’ of things that really peeve me off from a usability perspective. I keep meaning to make note of them so perhaps someone will take notice… this is going to be an evolving blog post which sets about doing just that.
- jQuery crazyness is ruining the ‘Content > Edit’ screen – The number of times I click through to the edit screen and then click on a entry title to edit it ‘before the page has completely loaded’ escapes me, but every time I do I get a ‘different entry’. I can only assume this is because some kind of post page load processing hasn’t completed yet and so what I’m seeing in front of me isn’t actually accurate.
- Publish layouts are completely borked – Yes, sometimes we might want to install a module, extension or field type after having set up a publish layout. If doing so results in a billion PHP errors on the edit entry screen then I’m simply not going to use publish layouts.
- Primary navigation is lethargic – Again, I’m pretty sure this is jQuery related… the primary navigation drop downs are sloooooooooow. They need to be super fast responsive becuase right now I’m tripping up on them left right and center.
- Entry ordering – In EE1 entries in the ‘Content > Edit’ screen had a fixed order (by entry ID). EE2 apparently does away with that approach and gives us sporadic ordering. Everything is just fine until you start editing previously created entries, ordering then apparently takes on a mind of it’s own. Go figure.
- Forgetful Dialogs – The new File dialog is a big improvement over the complete mess that came before it, however all I really want is for it to have some memory. Make life easier for me if I’m uploading 30 images… pre-select that same upload location I used last time… you’re gonna save me 60 clicks!
- Inconsistent Terminology – This one manifests itself in numerous places but here’s an example. In the Admin area a ‘Channel’ has a “Full Channel Name” and a “Channel Name” whilst a custom field has a “Field Label” and a “Field Name”, why not make things uniform… “Channel Name, Channel Reference, Field Name, Field Reference”.
More to come as they hit me.
Sometimes it’s desirable to hide content on your website from users a specified date. With ExpressionEngine we already have built in functionality to do this with weblog/channel entries. If you want to achieve a similar effect for blocks of template code then you can simply combine the conditional and date tags as follows:
{if {current_time format="%Y%m%d"} >= "20110717"}...{/if}
Initially I thought I might need a plug-in to achieve the desired result but it was great to discover I could do just what I wanted out of the box. :)
Update: As pointed out by Philip there are some issues with this approach so tread carefully people, I’ve only tested this concept in a scenario where the current date falls within the same month/year etc.
Update: As suggested by Philip I’ve updated the code sample above to reverse the date format to Ymd, this ‘should’ prevent any issues as Ymd will always increment whereas dmY will not.
I struck upon a wonderful little idea which I’ve implemented in a simple plug-in I’m writing for a project I’m currently working on.., add a ‘variable_prefix’ parameter to your plug-in or module… allow devs using your add on to opt to have variables prefixed with any value.
This is really useful if your add on might have variables which conflict with another add on or native ExpressionEngine variables. This could also allows a dev to nest once instance of your plug-in in another without having to resort to embeds, they simply specify a tag prefix for the outer tag pair.
While working on a project recently with the FoxEE E-commerce module for ExpressionEngine we discovered that it doesn’t integrate at all well with the Solspace User Module. This is understandable because the Solspace User Module circumvents the standard process for user registration and profile updates in ExpressionEngine. The upshot of this is that you simply ‘cannot’ make single sign on with FoxyCart work with FoxEE if your users are registering or updating their profile using the Solspace User Module. Now this is a bit of a problem since pretty much any E-commerce site built on ExpressionEngine will be using the Solspace User Module to allow users to easily manage their account details etc.
After much hacking and messing about I suggested to Ed who was working with us at Nine Four at the time that we could perhaps build an extension that used the User Module Hooks and the FoxyCart API to do the job. Ed went away and came back a very short time thereafter with a working solution. We like to call this little extension ‘Push to FoxyCart’ and we’d love to share it with anyone else that’s come up against the same problem that we did.
To clarify, you only need this extension if you are using the Solspace User Module, FoxEE and FoxyCart and you want to enable SSO for your ExpressionEngine site members. The extension is very simply but it requires some basic configuration.
Download: ext.push_to_foxycart.php.zip
At line 13 you will have to enter your ‘FoxyCart Domain’ (mysite.foxycart.com for example) and at line 14 your FoxyCart API token. Finally you’ll need to change the mapping of the FoxyCart fields to the ExpressionEngine custom member profile fields on lines 100 through to 119. This should be pretty obvious… if not then perhaps you already bit off more than you can chew! :)
Make sure you’re running PHP5 and have access to CURL on your server, upload the extension, enable it and you should be good to go. For support I’ve created a topic on the ExpressionEngine forums, hopefully if I’m not able to help with any problems you encounter then someone else might be able to chime in. :)