1

Does anyone have any ideas or know of any plugins to allow pages to be scheduled and replaced.

preamble:

currently evaluating different content management systems for a new project, we create new pages and also updating existing pages for example as part of a 'maintenance release'.

We will be using either PHP (preferably) or C#

Problem:

We would like our users to be write and save a new revision of an existing page with a go-live date and time in the future, at this date and time we would like the page to be live replacing the existing page, but all links to the page, url etc to be the same.

Currently:

We have two separate installs and schedule updates to pages using a cron job and a PHP script running some mysql queries - this has failed us at critical times in the past when it has failed to run.

finally:

We could probably write this ourselves, either in our own CMS or as a plugin to an existing CMS - simply:

 SELECT latest_revision from posts_pages_table 
 WHERE publishable='yes' 
 AND max(revision_date);

but does anyone have any experience of this with an existing CMS or from a technical point of view foresee any problems?

How for example in a wordpress backend will a user be sure they are updating the latest version of a page if it hasn't gone 'live' yet.

We have looked at all existing CMSs and searched google but scheduling updates to pages seems to be an uncommon occurrence so relying on some guidance from the trusty SO crowd.

thanks

2 Answers2

2

If you are fine with PHP, you can use SilverStripe. To achieve what you are asking you'd use the CMS Workflow module.

SilverStripe CMS comes with two stages built-in: live and draft. You can keep reworking the draft version, which remain private until you are ready to publish. In the normal scenario you would just push to live.

With the CMS Workflow installed, you can additionally choose the date when the modification should go live ("embargo"). This stores your draft version for "later", and only pushes to live at the date you've chosen (this plugs in via the cron job).

There is also an "expiry" you can set on the page, at which point the page will be unpublished and will no longer be available publicly.

Embargo, expiry and publishing operations do not affect the URL nor ID of the page, so all the relations stay intact while you are reworking the page via the CMS.

References:

1

In Joomla, there is a way to do this out of the box without touching any code. Here's how I would do it -

  1. Create a category for the page that will be getting replaced
  2. Create a menu item pointing to that category. Set it to display 1 item only, ordered by newest date
  3. Create a template override so that the category item displays like an article detail page
  4. Create new articles with a start publish date that determines when it starts displaying

Basically, you'd be displaying a category but it would look like an article. It would always pull the newest article that has reached it's start publish date. It would be easy to keep track of because you would have copies of every version you post, each update you would simply make a copy of the last one to edit.

You could probably write something custom to accomplish the same thing, but why spend the time and effort when it can be done easily with a template override?

Brent Friar
  • 10,588
  • 2
  • 20
  • 31