Jump to content

Recommended Posts

Posted

Hi All,

We have a client with a requirement to change the content of one of their pages at midnight on a given day.

I understand there is a module for scheduling the publishing and unpublishing of entire pages, but his would require two separate pages and urls, not good for SEO.

Is there a way/module to schedule changes to a given field on a page?

Posted

I would do it like this:

  1. Duplicate field "field_name_new" and assign to template.
  2. Let client place content in "field_name_new".
  3. Create a PHP script (i.e. /public_html/update_field.php)
    1. Bootstrap ProcessWire
    2. Get the page
    3. Copy the value of "field_name_new" to "field_name" (setAndSave method)
    4. Remove the "field_name_new" field from template and delete field
  4. Schedule a cron job which triggers http://yourdomain.com/update_field.php
  • Like 3
Posted

A bit similar to @arjen's approach:

  1. Duplicate the field as yourfield_replacement labelled "Your Field Label Replacement" and add it to the page's template
  2. Add a new datetime field replace_after labelled "Replace field at" to the template
  3. In site/ready.php, check if $page->replace_after <= current timestamp and $page->yourfield_replacement has content
  4. If yes: replace $page->yourfield with the content of $page->yourfield_replacement, empty $page->yourfield_replacement and save page

This way, editors can edit new content in the added field and schedule replacement whenever they want. The replacement will happen the first time the page in question is accessed at or after the date+time in $page->replace_after.

You can make it a little more elaborate and safe by adding a checkbox to activate the replacement logic and reset it after successful replacement to avoid accidential replacements, which are likely to happen when editors hit "save" after changing the replacement content without having adapted the replace date first.

  • Like 4
Posted

I don't use ProCache (yet, since all the PW sites were highly dynamic ones and speed wasn't an issue so far), so I can't speak from experience, but with ProCache I'd likely set up a script in a (system) cron job instead of a ready.php snippet and interate through all pages with a selector like "replacement_active=1, replacement_date<=$now", then perform the replace as above and save. I believe ProCache should update the cache on its own after page save (correct me if I'm wrong).

  • Like 3
Posted
59 minutes ago, BitPoet said:

I believe ProCache should update the cache on its own after page save (correct me if I'm wrong)

Depends on the settings, but by default: yes, a page save under a Pro Cache handled template updates the entire site.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...