Setting up “Live Look” in ExpressionEngine

live look in ExpressionEngineA few days ago, I wrote about the release of ExpressionEngine 1.6.1.  In it, I highlighted the “live look” feature, as a great new addition.  Live look allows you to preview a post within a template, rather than previewing only isolated content.  So you can see what your content will look like inside your template.  This is great if you have a future entry, or a post that you are leaving “closed” until you have a chance to finish it up.

But there has been a bit of confusion about how live look should work.  Essentially, all it does is load your entry into a template, so if you have a future dated entry, or a closed entry, it won’t be visible by default.  The solution?  Create a “preview” template, and take advantage of the status and show_future_entries parameters.  Essentially, make it look like this

{exp:weblog:entries weblog="default_site" status="open|closed" show_future_entries="yes"

I’d further recommend that you take advantage of Template Access Restriction in your preview template.  Without it, anyone who guesses your preview template will be able to see upcoming or closed content.  Probably a good idea to restrict it to the same member groups as your authors.

Happy ExpressionEngineering!

ExpressionEngine 1.6.1 released

ExpressionEngine 1.6.1 logoLast night, with very little fanfare, EE 1.6.1 was released.

I tested 1.6.1 on this site about a week ago, and I’ve had no glitches, and there are a few very nice enhancements, mostly for me around usability and productivity.  With my clients, I love the Pages module that was introduced in 1.6.  In 1.6.1 it makes allowing them to update their own content and site that much easier!  Specifically, there is a new “live look” feature, so that instead of only previewing content, you can actually preview what the content will look like inside your design.  Brilliant.  Also, the pages table now offers the ability to have nested pages, which in at least 2 of the sites I’ve got, is a tremendous help.

Many of the rest of the 214 (yes you read that right… 214) feature enhancements and bug fixes address stability, speed and usability modifications.  All in all, great additions.

The update process is as easy as ever; just backup your data, upload the new files and run update.php.  Easy-peasy!  Um… you DO backup your data right? ;)

If you notice anything funny in this site, please do let me know!

ExpressionEngine Times, Localization, and Entry Dates

I had originally wrote this as a response to a support request, and then wrote it up in the ExpressionEngine Knowledge Base as Times, Localization, and Entry Dates, but given the transition out of Daylight Savings Time (DST) this weekend, I wanted to repost it here.

One of the hardest areas of web applications to get your head around is the treatment of dates across various timezones, servers, and computers with daylight savings time (DST).  There are so many variables that ExpressionEngine can never be 100% sure of the proper time, and often the only answer is to experiment.  The wiki article Dates Explained may help in this.

Here’s the problem with time.  Imagine you and your buddies are trying to meet up at a set time, and you’ve all given me your watches so I can phone you at exactly 7 to tell you to be there.  When I get your watches, some of them are set 1 hour behind everyone elses (DST).  OK, confusing, but as long as I know that are observing DST I can account for this.  Now imagine that each one is set for a different time zone.  OK, also confusing, but I can figure that out also.  Now suddenly some of the watches stop observing DST (many hosts do), or start observing at different times.  Now I’m scratching my head.  I get a bunch of new watches, and I don’t know if they are observing DST or not.  Now some of the watches are simply set to the wrong time.  There’s also a master watch with the official time used for each day you want to meet your friends, and every day there’s a new way of officially adding and removing that hour.

Here’s how I have my system setup to give me accurate time on EngineHosting.  I’m in Toronto, so Eastern Standard Time.  Both my personal local time (under My Account > Localization) and my system time (Admin > System Preferences> Localization Settings) are set to Eastern time.  My “Daylight Saving Time” and also my “Honor the Daylight Saving Time setting associated with each weblog entry?” are set to “no”.  Partly this is to avoid the DST problem all together, but also I had originally set it this way as I was moving between hosts, and wanted fine control without needing to worry about what setup they had.  Without DST, this puts me an hour “behind”, so I set my “Server Offset (in minutes)” to 60 to make up for it.

When I post, the date and time under “date” is the exact same as my local time, and it posts to screen with that time.

If you wanted the time an entry was posted without any reference to the localization of the author, {gmt_entry_date} is what you want.

The date the entry was submitted in GMT. This variable is not localized for each user’s date settings.

3 great CodeIgniter links, and masking your CP in ExpressionEngine

So tomorrow I’m off to a two day open source conference.  Not sure how much I’ll be around for on the net, but probably a lot… but still, I wanted to mention a few things before I holed myself away to revel in geekery.  First, there are a few well known CodeIgniter community members who are doing some cool stuff, and deserve our attention.  I’m a big fan of this work, and this contribution to the community.  Guys, you don’t hear it enough.  Thanks!

Also, just a quick ExpressionEngine tip (EE doesn’t get enough of my attention on this blog, despite the fact that I spend several hours a day working with it).  If you aren’t masking your control panel... you should be.  It couldn’t be easier, and it will save you from problems like… oh I don’t know… to pull an example totally out of thin air that absolutely didn’t happen to me... your browser histroy showing it while your laptop is hooked up to a projector in a room of 50 people.  OK, I confess… it did happen to me.  Fortunately, with a masked CP, I just FTP’ed in and renamed it at break.  Easy-peasy.  Makes me glad I was masking it!

And finally, just for fun, here are 2 links that made me laugh over the last 2 days. How to survive a zombie attack (pure awesome), and the super-est.

Next up, hoping to write a bit about the conference.  I’m hoping for a chance to steal a conversation with a few Mozilla guys, and Bob Young (founder and CEO of Redhat).

Until next time!  Signed,
Little Bobby Tables

EllisLab Developer Guidelines

ExpressionEngine Developer guidelinesThis came up in the forums today, and not many people knew about them, so I just wanted to draw attention to them.  Some time ago, we (EllisLab) released a series of developer guidelines that might be of interest to anyone reading this.  Included are Performance Guidelines, and security guidelines.  We also have a set of style and syntax guidelines, which are useful - and I’d be remiss if I didn’t also point out the Zend coding standards, which I tend to follow more in my personal coding.

Oh!  And on the topic of developers (developers… developers… developers) I’d like to publicly welcome Jamie Poitra as a new EllisLab Developer.  Welcome!

I personally believe, like, such as, and… Internet Explorer 6 is dead!

Leslie Camacho and Derek Jones deliver what might well be the funniest thing I’ve seen in months.  A funeral for Internet Explorer 6.

Les and Derek Jones from ExpressionEngine

I personally believe that internet ISP users are unable to do so… um… because some people out there in our internet don’t have browsers… and ah… I believe our education such as Firefox… for the children


Go watch it now.

CodeIgniter, Bamboo, ExpresionEngine roundup, August 19

Some interesting items in the past week.

Ed Finkler, the man responsible for the great CodeIgniter podcast PHP Abstract, is at it again.  This time, he’s down in Atlanta offering Intro to CodeIgniter for PHP works ‘07.  Go Ed!  If you’re in Atlanta, find that man and buy him a beer.

I’ve also seen a rise of interest in BambooInvoice recently.  Eric Davis wrote Simple and easy to use invoices - Bamboo Invoice and Customizing BambooInvoice.  Great work thanks.  My favourite quote?

The thing I like most about it is that it provides just what I need to invoice my customers; it does not try to provide accounting, supply chain management, or any other “total business solution”.

And that my friends, is why Bamboo is around.  Thanks Eric.  Nice writeup.  If anyone else has written about Bamboo, please do let me know, I’m always interested in reading those posts.

In ExpressionEngine land, there are a few neat things happening also.  Smashing Magazine, in a writable of the RubyOnRails content management system Mephisto, wrote that ExpressionEngine is the first-class engine for professionals; if you’d like to achieve the highest level of flexibility and have the full control over the outer appearance and structure of your weblogs, EE is the first option you should probably consider.

Also, Les Camacho (our fearless VP, and all around cool guy) started a weekly blog entry called “last week on the forums” where he highlights interesting and notable posts from the ExpressionEngine forums.  One of the ones that really stuck out at me was a plugin by silenz called trunchtml.  Nice work silenz.

ExpressionEngine 1.6 has been released

Nine days ago I announced that I was running the beta of 1.6 to test it out. This morning I’m happy to announce that 1.6 is now publicly available.  Among the many cool new features that I know people will love is a tidied up Control Panel, hidden templates, and a pages module.  Also notice the new theme.  Sexy indeed!

New ExpressionEngine User Interface

Of course, as always, the upgrade is free if you own a license.

Powered by ExpressionEngine 1.6

Exciting things are happening inside EllisLab. We're internally testing ExpressionEngine 1.6 (in fact is running off it right now), and judging by how smoothly everything has gone so far, things should be ready for public use very soon!

If you use EE to handle "client sites" there are a couple of new features that you're going to love. Your job just became easier friends! Rick will cut off my use of the corporate jet if I say any more... so you'll need to trust me on that one. That said, these are significant enough that I'm going to delay 2 projects that I have "in the chutes" right now, just so that I can use 1.6 on them. The long term benefits make the small delay worth it.

And let me also say this: Its a tribute to how we handle beta software that the only bug I've found in the whole application so far is a hyperlink that was missing a dot. Way to go Paul and Derek - rockin the kazbar as usual.

ExpressionEngine 1.6.0

Are you a CodeIgniter using Wordpress?

So the gist of this post boils down to me asking “why”.  Presumably you’re using Wordpress to blog.  If you are using it as a pseudo-cms, then you already feel the pain.  What if there was a blogging platform that was superior to Wordpress in security and functionality, and also would give you expertise in a framework that could double as a full-fledged Content-Management-System that you could use commercially with your clients/customers, and was tightly integrated with CodeIgniter… would you be interested?

Then why aren’t you using ExpressionEngine?

Rick Ellis (The “Ellis” in Ellislab and all around grand pu-ba) recently announced what has been widely speculated in the community for a long time, that ExpressionEngine is getting integrated very tightly with CodeIgniter.  This leaves me with the aching question: As a CodeIgniter programmer, what does Wordpress offer you?  Many of us (CI programmers I mean) keep a personal blog where we discuss CodeIgniter and related developments.  When deciding on a blogging platform, there are several good options, but it seems that there are 2 common choices; (1) roll it yourself (this is how I started) or (2) use Wordpress.  I’d like to argue right now for a third, and better, option - use ExpressionEngine.