GKM490 Posted February 7, 2023 Share Posted February 7, 2023 Hi there, I am trying to integrate Algolia into our website, and I'm wanting to hook into the saving of an inline CKEditor Content field on a page, so that when you double click, edit the content, and hit save, it updates the Search Index. Currently, I have this hook in ready.php: $this->addHookAfter('Pages::savedPageOrField', function(HookEvent $event) { $page = $event->arguments(0); wire('log')->save('debug', 'Saving Field'); }); Just to try and confirm that the event is executing, but when I save the content inline on a page, nothing gets added to my log. I have also tried with the Pages::savedField event and it also doesn't work. Is there a different hook I should be using? Thanks! Link to comment Share on other sites More sharing options...
GKM490 Posted February 27, 2023 Author Share Posted February 27, 2023 Bump, still haven't been able to figure out what event (if any) is triggered upon saving an inline CKEditor field named "content" using $page->edit('content') on the front end. Any help would be greatly appreciated. ? Link to comment Share on other sites More sharing options...
bernhard Posted February 27, 2023 Share Posted February 27, 2023 I've had a look and found the issue: ready.php is never triggered on frontend editing. You can attach your hook in /site/init.php for example and then it should work. The hooks are the same as for regular page saves: You can hook into Pages::saveReady or Pages::saved for example. 2 1 Link to comment Share on other sites More sharing options...
GKM490 Posted February 27, 2023 Author Share Posted February 27, 2023 2 hours ago, bernhard said: I've had a look and found the issue: ready.php is never triggered on frontend editing. You can attach your hook in /site/init.php for example and then it should work. This worked perfectly! I would never have guessed to put it in init.php. The commented line at the top: When this file is called, the current $page has not yet been determined. Made me think that I wouldn't be able to use $page = $event->arguments(0); to grab the necessary data about the page to save in the search index. Thank you so much for the response. Much appreciated! Link to comment Share on other sites More sharing options...
bernhard Posted February 27, 2023 Share Posted February 27, 2023 Glad it helped. $page is not available OUTSIDE of your hook in init.php, but INSIDE the hook it is available since the inner part of the hook is executed at a different time (after/before Pages::saveReady or Pages::saved). In your hook you get the saved page from the first argument of your HookEvent. That's why you do $page = $event->arguments(0) See also https://processwire.com/talk/topic/18037-2-date-fields-how-to-ensure-the-second-date-is-higher/?do=findComment&comment=158164 Link to comment Share on other sites More sharing options...
GKM490 Posted February 27, 2023 Author Share Posted February 27, 2023 Ohh I had been treating ready.php as init.php then. I only have hooks in ready.php and didn't realize that $page existed in that file outside the context of a hook. So that's what the comments at the top were referring to, haha. Thanks for the clarification! That helps me understand the distinction. ? 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