[support] how to Form Render-Alter in D7?

sebastian inforazor at gmail.com
Thu Oct 13 01:49:12 UTC 2011


Hello Carl and Others,

Thanks for your code sample. I must say however I couldn't get it to 
work as the theme function: node_page_edit is never called...? And I'm 
at a loss how this is supposed to work? Maybe it's just me...

Instead I got Eclipse+XDebug installed, something I've been wanting to 
do for a while and watched some more videos on Drupal 7's changes on 
Form/Array rendering API.

My approach was to go back to the array variable itself, with 
HOOK_form_FORM_ID_alter() and to add, move and change the values there, 
combined with HOOK_page_alter() and I've gotten it all working correctly 
now.

Thank you all for your time and assistance!

Sincerely,

Sebastian.

On 2011-10-11 9:18 PM, Carl Wiedemann wrote:
> I've never heard of THEME_form_hook_alter().
>
> template.php is generally for theme override functions. That is, the
> functions in this file will be overriding the output of existing theme
> functions which are defined by hook_theme.
>
> Drupal themes only serve to rewrite existing output. All original output
> in Drupal is defined by theme functions, which appear modules. The stark
> theme is a nice working example of this -- notice that there are no
> included templates. Markup starts with modules.
>
> In your case, you have only defined the override, not the originating
> theme function. So, in your module, you need to so something like the
> following: http://pastebin.com/vkXbxeX7
>
> This will require a cache clear such that the theme registry will now
> know about hook_theme().
>
> Carl Wiedemann
> Website design and development consulting
> carl.wiedemann at gmail.com <mailto:carl.wiedemann at gmail.com> | skype: c4rlww
>
>
>
> On Mon, Oct 10, 2011 at 11:34 PM, sebastian <inforazor at gmail.com
> <mailto:inforazor at gmail.com>> wrote:
>
>     Hello,
>
>     Very sorry to ask this, but I am going in a loop with the documentation,
>     and the IRC chat isn't helping much either... so I hope this won't take
>     much of your time.
>
>     I understand in D7 that we can write in a custom module for form
>     alterations such as:
>
>     file: webadmin_ui.module
>     //this is a custom module I made
>
>     function webadmin_ui_form_page_node_form_alter(&$form, &$form_state,
>     $form_id) {
>             dpm ($form);//see values
>             //change values as you please here...
>     }
>
>     And I also understand that in D7 we REMOVED the feature/function to
>     alter the form values in the THEME layer, so this function was killed:
>
>     THEME_form_hook_alter($form) {}
>
>     Because supposedly I can theme it via different methods.
>
>     In the $form variable, when I DPM it [see above] I note the theme-chain:
>
>     dpm($form) outputs: [among other things]
>
>     $form['#theme']['page_node_form']
>     $form['#theme']['node_form']
>
>     If I try and be "smart" and write in my template.php:
>
>     mytheme_page_node_form($form) {
>       dpm("it works!");
>     }
>
>     I clearly get nothing as this function is never called.
>
>     Can I add my own function call to this list? If so, how?
>
>     Is there documentation on this anywhere?
>
>     The documentation in D6 was a mess, and for this in D7 its really no
>     better [maybe even worse cause I keep hitting D6 pages mixed into D7
>     ones with no warning].
>
>     The whole point of all this is I want to understand how I can not only
>     modify the form BEFORE it gets rendered, but also alter HOW the form is
>     rendered... wrap some parts in a DIV, maybe add a missing CLASS or
>     ID etc.
>
>     Ideas?
>
>     Thank you kindly,
>
>     Sebastian.
>     --
>     [ Drupal support list | http://lists.drupal.org/ ]
>
>
>
>


More information about the support mailing list