Is there any command or method that I can use to insert the contents of a form (e.g. the user registration form) into a block?
In Drupal 7, it looks like this:
function yourmodule_block_view($delta='')
{
switch($delta) {
case 'your_block_name':
$block['subject'] = null; // Most forms don't have a subject
$block['content'] = drupal_get_form('yourmodule_form_function');
break;
}
return $block;
}
The form array returned by drupal_get_form
will be automatically rendered.
yourmodule_form_function
is a function (in your module or an existing Drupal module) that returns the form array;
drupal_get_form($form_id) - put it in a module's hook_block
($op=='view') or even... shudder... inside a block with PHP filter on.
You need to find the form id first - look for a hidden input
with the name form_id
within the form. Its value should be the the form id.
Also, you could simply use the Form Block module.
One other thing is that it puts some of the PHP code into the database, instead of in the filesystem where the rest is. It's easy to forget and waste a lot of time searching for the code, and grep is a lot more convenient that going through every block and seeing if the PHP is there.