The problem here is really important, regardless of the documentation.<br><br>In Drupal 7, the problem has been resolved (and the doc may well be wrong). In D7, hook_form_alter() and hook_form_FORMID_alter() no longer compete in the inappropriate way they did in D6 - they fire in order by weight. So a given module weight will execute the form_alter and the formid_alter at about the same time.<br>
<br>In Drupal 6, you *very* often can&#39;t achieve what you want to with hook_form_FORMID_alter() because *all* of the hook_form_alters run after all of the hook_form_FORMID_alters. That means that you *can&#39;t* alter a prepared node form successfully with hook_form_FORMID_alter() because all of the things that have built up the form (using hook_form_alter()) haven&#39;t run yet. So the form doesn&#39;t even look right yet. hook_form_alter() is often the only way around this.<br>
<br>As a general statement, hook_form_FORM_ID_alter() in Drupal 6 is often not useful because of this and you *always* have to be aware of this problem. And in general, this problem is fixed very nicely in Drupal 7. Thanks effulgentsia and sun!<br>
<br>-Randy<br><br><div class="gmail_quote">On Tue, Jan 18, 2011 at 5:37 PM, Jennifer Hodgdon <span dir="ltr">&lt;<a href="mailto:yahgrp@poplarware.com">yahgrp@poplarware.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
I just filed an issue:<br>
<a href="http://drupal.org/node/1031458" target="_blank">http://drupal.org/node/1031458</a><br>
<br>
The doc is only incorrect in D6. In D7 the order has changed.<br>
<br>
   --Jennifer<div><div></div><div class="h5"><br>
<br>
<br>
On 1/18/2011 7:37 AM, Justin Ellison wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Code speaks truth, you&#39;re correct.  However, there&#39;s some<br>
contradicting documentation.<br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
>From <a href="http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_form_alter/7" target="_blank">http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_form_alter/7</a>:<br>

</blockquote>
&quot;For each module (in system weight order) the general form alter hook<br>
implementation is invoked first, then the form ID specific alter<br>
implementation is called.&quot;<br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
>From <a href="http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_form_FORM_ID_alter/6" target="_blank">http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hook_form_FORM_ID_alter/6</a>:<br>

</blockquote>
&quot;Note that this hook fires before hook_form_alter(). Therefore all<br>
implementations of hook_form_FORM_ID_alter() will run before all<br>
implementations of hook_form_alter(), regardless of the module order.&quot;<br>
<br>
Unfortunately, Google returns the former link first, which must&#39;ve<br>
been what I learned from.<br>
<br>
Sorry for any confusion,<br>
<br>
Justin<br>
<br>
On Tue, Jan 18, 2011 at 9:26 AM, Steve Ringwood&lt;<a href="mailto:nevets@tds.net" target="_blank">nevets@tds.net</a>&gt;  wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Justin<br>
<br>
    Not sure what you are referring to in the docs for hook_form_alter but<br>
here is the relavent code<br>
    from form.inc, function drupal_prepare_form().<br>
<br>
  $data =&amp;$form;<br>
  $data[&#39;__drupal_alter_by_ref&#39;] = array(&amp;$form_state);<br>
  drupal_alter(&#39;form_&#39;. $form_id, $data);&lt;&lt;  Form ID specific call<br>
<br>
  // __drupal_alter_by_ref is unset in the drupal_alter() function, we need<br>
  // to repopulate it to ensure both calls get the data.<br>
  $data[&#39;__drupal_alter_by_ref&#39;] = array(&amp;$form_state);<br>
  drupal_alter(&#39;form&#39;, $data, $form_id);&lt;&lt;  General call (hook_form_alter)<br>
<br>
Nevets<br>
<br>
<br>
</blockquote>
<br>
</blockquote>
<br>
<br></div></div><font color="#888888">
-- <br>
Jennifer Hodgdon * Poplar ProductivityWare<br>
<a href="http://www.poplarware.com" target="_blank">www.poplarware.com</a><br>
Drupal web sites and custom Drupal modules<br>
<br>
</font></blockquote></div><br><br clear="all"><br>-- <br>Randy Fay<br>Drupal Module and Site Development<br><a href="mailto:randy@randyfay.com">randy@randyfay.com</a><br>+1  970.462.7450<br><br>