OllieMackJames Posted March 9, 2018 Share Posted March 9, 2018 I have a site that exists since 2003, but has been on different platforms, html, modx and then processwire. And then on processwire we also migrated the site to a whole new design, which meant we started from scratch and imported some stuff. As a result my created and published dates are all over the place and not showing the history of the site. OK what is my question? How can I (re-)set the published and created dates for individual pages. Par example the homepage is created in 2003, but since the redesign of the site in 2015 proceswire now says the homewpage was created and published in 2015, but that is not true of course. Hence I want to set the created and published date back to the start of the site and then show the last modification to the page via datemodified. Anybody know how and where to set the published and created dates? Thanks. Link to comment Share on other sites More sharing options...
alxndre Posted March 9, 2018 Share Posted March 9, 2018 Do you mean in the page editor? I'll look if there are modules for this because I'm not sure. But you can also do this via the api: $home = $pages->get('/'); echo date("d M Y", $home->published) . PHP_EOL; // 21 Feb 2017 echo date("d M Y", $home->created) . PHP_EOL; // 21 Feb 2017 $home->published = strtotime("February 21, 2016"); $home->created = strtotime("February 21, 2016"); $home->save(); echo date("d M Y", $home->published) . PHP_EOL; // 21 Feb 2016 echo date("d M Y", $home->created) . PHP_EOL; // 21 Feb 2016 Edit: My bad. The changes doesn't seem to persist. Turns out, published, created, and modified are not "fields" per se, but rather are properties built-in to the page. This might be a good candidate for a quick module for those who need to edit the values. 1 Link to comment Share on other sites More sharing options...
kongondo Posted March 9, 2018 Share Posted March 9, 2018 Its not straightforward and sometimes frowned upon . Have a look at this thread. And this one: And this one for changing published date: OK, if you've decided to carry on, first, some quick by the way technical tips. If unsure whether something is a runtime or DB property, I check the API: http://processwire.com/api/ref/page/ For $page->created, it says: Quote Unix timestamp of when the page was created. That gives me an idea that when setting, I should probably set in the same format (Unix timestamp). If unsure, I can check the code or try to pass it a normal formatted date. You never know, ProcessWire can convert it behind the scenes. I sometimes check the database table of the field. This case, the table is pages. This helps me to check out the schema and if the property is runtime or saved to DB. There they are. They are columns in the pages table. If need to, I also check the table structure, but don't need to in this case. OK, to the code. // CURRENT DATES // timestamps echo 'Created Date: ' . $page->created . '<br>'; echo 'Published Date: ' . $page->published . '<br>'; echo 'Modified Date: ' . $page->modified . '<br><hr>'; // formatted date echo 'Created Date: ' . date('D d M Y H:m', $page->created) . '<br>'; echo 'Published Date: ' . date('D d M Y H:m', $page->published) . '<br>'; echo 'Modified Date: ' . date('D d M Y H:m', $page->modified) . '<br>'; // MODIFY CREATED DATE $page->created = 1425898824;// Monday, 9 March 2015 11:00:24 $page->published = 1426762824;// Thursday, 19 March 2015 11:00:24// will not work; @see links to threads above $page->of(false); #$page->save();// @NOTE: WILL NOT WORK; you need below $page->save(array('quiet' => true));// @NOTE: ONLY WORKS FOR CREATED // MODIFIED CREATED DATE echo '<hr>'; // timestamps echo 'Created Date: ' . $page->created . '<br>'; echo 'Published Date: ' . $page->published . '<br>'; echo 'Modified Date: ' . $page->modified . '<br><hr>'; // formatted dates echo 'Created Date: ' . date('D d M Y H:m', $page->created) . '<br>'; echo 'Published Date: ' . date('D d M Y H:m', $page->published) . '<br>'; echo 'Modified Date: ' . date('D d M Y H:m', $page->modified) . '<br>'; 6 Link to comment Share on other sites More sharing options...
OllieMackJames Posted March 9, 2018 Author Share Posted March 9, 2018 Thanks, that should get me going. Much appreciated! Link to comment Share on other sites More sharing options...
adrian Posted March 12, 2018 Share Posted March 12, 2018 This will take care of changing the published date: $query = $database->prepare("UPDATE pages SET published=:pub_date WHERE id=:page_id"); $query->execute([ ':pub_date' => $pubDate, ':page_id' => $pageId ]); 5 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now