I have a VF page that overrides the standard pages for New/Edit/View actions on the Case object.
However, I wanted to control when a VF page would display, vs when a standard page would display, based on various criteria (profile of user, record type of case, etc).
I accomplished this using a redirect method I wrote into the VF page controller, and using the page parameter nooverride=1, which new prevents the VF page from overriding the standard page. So if I want a user to see the standard page layout, I include that parameter in the returned PageReference object, otherwise I omit it and they see the VF page.
So far so good… then I enabled the Service Console.
The standard SF UI relies heavily on URL parameters for handling navigation between various pages. The service console, not so much… The URL when first opening the console is
https://na29.salesforce.com/console
And that doesn't change when I open and navigate between various tabs/subtabs. If I close the console with a case record open as a tab, then when I return to the console view the URL is
https://na29.salesforce.com/console?tsid=02u34000000jphf
But again, that doesn't change. My VF page's redirect method returns a pagereference with the nooverride=1 parameter, but that's useless to the console because it doesn't pay attention to parameters!
So my question is, how can I control overriding of VF pages through code, in a way that will work both in the standard SF UI and in the service console!
Best Answer
I incorrectly assumed my issue was caused by using the Service Console. Turns out my issue was with how my code redirected to VF or standard layouts.
Here is my full pageRedirect method code, in case anyone runs into a similar issue. Happy to explain details if anyone has questions: