2

I've been trying for the last couple of hours and failing to use theme_hook_suggestions for custom webform confirmation templates. I want all webforms on a specific content type to use a particular confirmation page template.

So I've got the following in webform_confirmation.preprocess.inc (I'm using Omega4 which puts preprocess functions into include files):

function foeomega_preprocess_webform_confirmation(&$vars) {

  $vars['theme_hook_suggestions'][] = 'webform_confirmation__' . $vars['node']->type;
  ...
}

Then I have 2 template files:

  • webform-confirmation.tpl.php = The generic one I want to override
  • webform-confirmation--myspecialnode.tpl.php = The new one I want to use instead

No matter how many times I 'drush cc all'/'drush cc theme-register' the suggestion template is never picked up :(

However, I did get the suggestion to work if I commented out the following in webform.module file:

function webform_theme() {

...

  'webform_form' => array(
  'render element' => 'form',
  'template' => 'templates/webform-form',
  // I COMMENTED THIS OUT: 'pattern' => 'webform_form_[0-9]+',
),

...

}

Leading me to believe that pattern and suggestions are not compatible - however I can't find any information on this by Googling - can anyone confirm/deny?

Thinking that 'pattern' and 'theme_hook_suggestions' don't mix, I tried implementing the following in my template.php file:

function foeomega_theme_registry_alter(&$theme_registry) {
  if($theme_registry['webform_confirmation']['pattern']) {
    unset($theme_registry['webform_confirmation']['pattern']);
  }
}

This did seem to remove it from the registry, but alas, the generic template file was still being used (after make 'drush cc ...' commands...).

Any ideas? I'd really like to have nice content-type specific confirmation pages?

Many thanks, Chris :)

2 Answers 2

0

Yeah the problem as you pointed out is the "pattern" in the webform_theme() function. It won't allow you to make any theme_hook_suggestions.

There's some talk about it in this issue: https://drupal.org/node/1891220

But they seem to be very stubborn about even changing the pattern to a proper theme_hook_suggestions, let alone running both single and double underscores in the pattern to match the Drupal Way.

Luckily the site I'm working on isn't that big, so I copied the module to a custom modules folder and commented out the pattern line, and then created a THEME_preprocess_webform_... function to give me proper suggestions since I needed to work off a field in the node so that I didn't have to worry about future forms created by the site owner and needing to create one template per webform node.

0

I think your problem is due to the use of $vars['theme_hook_suggestion'] (no trailing s) by webform. This value overrides any that you could put in the $vars['theme_hook_suggestions'] array

I was having the same problem, I just unset this $vars['theme_hook_suggestion'] and my others suggestions in $vars['theme_hook_suggestions'] have been used.

Note: $vars['theme_hook_suggestion'] is a string NOT an array

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.