1

I want to create a .tpl file for each specific product type form. I get that I can create a custom product template and add this code on my theme's template.php:

'commerce_product_ui_product_form' => array(
               'arguments' => array(
                    'form' => NULL,
                    ),
               'template' => 'templates/products form/node--add--product', // set the path here if not in root theme directory
               'render element' => 'form',
            )

The problem is this changes all the product type's form. How can I find the Form ID for each specific product type form?

enter image description here

4
  • you can do it by using "node--add--yourtype" Commented Mar 9, 2016 at 5:19
  • Hi @Adi Thanks for the fast reply. I will try it, but what will be the code for my theme's template.php, because I noticed that the product type form has only the id="commerce_product_ui_product_form", what ID can I use for each specific product type? For example I have a product type Venue package what will be the ID? Commented Mar 9, 2016 at 5:26
  • you dsm in your template then you can find of your product form id Commented Mar 9, 2016 at 5:40
  • @Adi I tried the dsm and like I said, all the product type form has the same ID "commerce_product_ui_product_form", or am I missing something? Commented Mar 9, 2016 at 7:01

1 Answer 1

0

It's the same form ID for every type, but you can find context in the form state, e.g.

function MYMODULE_form_commerce_product_ui_product_form_alter(&$form, &$form_state, $form_id) {
  $product = $form_state['commerce_product'];
  $product_type = commerce_product_type_load($product->type);

  if ($product_type->name == 'foo') {
    // ...
  }
}
4
  • Thanks @Clive. But if I do it this way I won't be able to create a .tpl file since this is for a custom module. I was wondering if I can add it on my theme's template instead so that I can make my own custom .tpl file because I will be moving a lot of stuff around and adding custom views on the .tpl file. Commented Mar 9, 2016 at 9:22
  • Why not just call the theme function something else and if ($product_type->name == 'foo') { $form['#theme'] = 'bar'; }?
    – Clive
    Commented Mar 9, 2016 at 9:25
  • I get this error whenever I try out your code: "Notice: Trying to get property of non-object in custom_module_form_commerce_product_ui_product_form_alter" I use this code if ($product_type->name == 'caterer_package') { $form['#theme'] = 'templates/product/product-node-form'; } Commented Mar 9, 2016 at 10:12
  • Not sure what to tell you I'm afraid, that code is actually copied from the Commerce Product UI module's own code for the same form :/ commerce_product_product_form. If the code is working for them but not you, the problem is likely to be somewhere else
    – Clive
    Commented Mar 9, 2016 at 10:16

Your Answer

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

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