Page template for custom form I'm trying to create a new page template for a custom form I'm building in my module. My goal is to use create something like a new page.tpl.php for this specific form and it looks like this method is creating the equivalent of a custom node.tpl.php within the content area of my site instead of generating a separate page template.

For example 

/*
 * Implements hook_menu
 */
function mymodule_menu() {
  $items = array();
  $items['foo/my_custom_form'] = array(
    'title' =&gt; 'My custom form',
    'page callback' =&gt; 'mymodule_custom_page',
    'access callback' =&gt; TRUE, // Everyone has access.
  );
  return $items;
}

function mymodule_custom_page(){
  return theme('mymodule_template');
  return drupal_get_form('mymodule_form');
}

/*
 * Implements Hook_theme
 */
function mymodule_theme() {
  return array(
    'mymodule_template' =&gt; array(
      'template' =&gt; 'custompage', // template file called custompage.tpl.php
      'arguments' =&gt; array(),
    ),
  );
}

function mymodule_form($node, &amp;$form_state){
//my form in here
}


I'm having an issue with the form not appearing. 

Maybe I'm going down the wrong path and should be trying to create function in my theme's template.php, and then use a hook_preprocess_page to set some variables to create a page--custom.tpl.php for my form?

I can achieve what I'm trying to do by making some configuration changes to some blocks and redrawing the content area with CSS, but not sure if that's the best practice.
Here is your issue, your can't return twice in a function.

function mymodule_custom_page(){
  return theme('mymodule_template');
  return drupal_get_form('mymodule_form');
}


What you need to do is just the first line,  return theme('mymodule_template'); You also need to change your form function parameters to &amp;$form, &amp;$form_state. 

Then, in your custompage.tpl.php, you do the drupal_get_form('mymodule_form');

Result:

/*
* Implements hook_menu
*/

function mymodule_menu() {
  $items = array();
  $items['foo/my_custom_form'] = array(
    'title' =&gt; 'My custom form',
    'page callback' =&gt; 'mymodule_custom_page',
    'access callback' =&gt; TRUE, // Everyone has access.
  );
  return $items;
}

function mymodule_custom_page(){
  return theme('mymodule_template');
}

/*
* Implements Hook_theme
*/

function mymodule_theme() {
  return array(
    'mymodule_template' =&gt; array(
      'template' =&gt; 'custompage', // template file called custompage.tpl.php
      'arguments' =&gt; array(),
    ),
  );
}

function mymodule_form(&amp;$form, &amp;$form_state){
  //my form in here
}


And in custompage.tpl.php:

print drupal_get_form('mymodule_form');