Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Template Questions

A way to add a filter to rendered page just before sending to browser


Reply

2 Posts   921 Views

Avatar
micschk

13 October 2012 at 3:01am (Last edited: 13 October 2012 3:32am), Community Member, 19 Posts

Is there a way to add/hook into an [onbeforeOutputToBrowser] kind of filter in Silverstripe, like the onafter filters for writing to the database?

I'm trying to rewrite all references to youtube.com into youtube-nocookie.com to prevent 3rd party cookies from being set. Most of these are oembeds, which are rendered from the SSViewer (I think), at least after the init() or index() functions are called. So I cannot do a str_replace in there. Maybe I could hook into the SSviewer in some way just before output?

Maybe some way to hook into RequestProcessor->setFilters() ?

[Got this filter idea from WP; see for example http://codex.wordpress.org/Plugin_API/Filter_Reference/the_content ]

Avatar
MarcusDalgren

13 October 2012 at 11:39am Community Member, 288 Posts

I'm assuming here that you're trying to filter the "same part" of the page that you would be filtering with WordPress the_content filter.

So one way of doing this is simply writing a custom filter function and calling that in your template instead of $Content.
So

function FilteredContent() {
$content = $this->Content;
//Do your filtering here...
return $content;
}

That goes into your page class or whatever other page type you want to do the filtering in.
Then in your template you simply write $FilteredContent instad of $Content and you should be good to go.