[themes] how to theme [class/id] a nord_form?

sebastian inforazor at gmail.com
Wed Nov 11 19:52:08 UTC 2009


Hi Thanks Lee, others,

My ideal solution would be if the form elements had id or class names, 
that were unique, so that I could simply hide [display:none] the form 
elements that I don't feel like the less-tech savvy content admins need 
to see.

My back-up solution was turning them off as a function, as part of the 
drupal_render function.

This is for the node creation, of several node types; but right now I am 
just trying the basic: node->create->page type.

Couple of questions:

1. is there a way to inject class and/or node ID's to the basic 
node_edit form? I would want the title to always have something like 
"id="node_title" on ALL of my node edit forms; whether it is for adding 
a 'page' type, or a new type not yet imagined but latter added. [that 
way if I am always hiding the 'publishing options' section, for a 
particular user, it would be hidden site-wide on all forms]

2. if it is NOT possible to do the above, then my backup is to use 
drupal_render(), as described below. Am I correct that I would just use:

unset($form['name_of_element']);
drupal_render($form);

?

3. If there is anyway I could take my work [above] and make it into a 
module for others to benefit from this change, I would love to 
contribute this to the drupal community. As I think I must not be the 
only person who wants to style specific elements on the node-creation 
page, and right now there is simply no way to target these fields in CSS...

I've never contributed before though, and still learning, so not sure if 
whatever changes I make will be compatible as a "module"

Thank you so much for your help!!

Sebastian.

Lee Rowlands wrote:
>> When I have a nord_form, either for creation or editing, I get a lot of 
>> id's like: #thmr_81, thmr_86, #thmr_91, #thmr_98
> These are inserted by the devel_themer module and should not be relied upon
> 
>> But if I replace $output .= drupal_render($form); with
>>
>> $output .= drupal_render($form['title']);
>> $output .= drupal_render($form['body_field']);
>> $output .= drupal_render($form['custom_select_field']);
>>
>> Which are the only three I actually need to have displayed for a 
>> non-admin, then the page will NOT save, [no errors, it just reloads the 
>> page and erases all my changes]
> The call to drupal_render($form) actually renders the hidden elements such
> as form id and build id which are needed to determine if the form was
> submitted by the Form API. If these aren't found, the Form API thinks it
> wasn't submitted and hence no submit function is called and no data is
> saved.
> You need to examine the $form variable and unset (using the unset function)
> any array members (form elements) you don't want then add a final
> drupal_render($form) to the end of your output and thiss will add all the
> hidden stuff (and anything else that still yet to be rendered).
> I'm assuming you don't have a module here? Otherwise you could do the
> unsetting in hook_form_alter.
> 
> _______________________________________________
> themes mailing list
> themes at drupal.org
> http://lists.drupal.org/mailman/listinfo/themes
> 


More information about the themes mailing list