Most effective way to create a landing page for content types? I have a "facility" content type which I am creating programmatically, through a module called "facility". I would like to have a landing page, such that when you go to http://www.mysite.com/facilities, you are taken to a heavily styled/scripted page that displays facility information in a specific format. To do this, in my facility module, I implemented hook_menu to point to a callback that will return the necessary markup. Here's my code:

facility.module

&lt;?php

function facility_menu() {
    $items['facilities'] = array(
        'title' =&gt; 'Facilities',
        'page callback' =&gt; 'facility_landing',
        'access callback' =&gt; TRUE,
        'type' =&gt; MENU_CALLBACK
    );

    return $items;
}

function facility_landing() {
    return file_get_contents(drupal_get_path('module', 'facility') . "/facility_landing.php");
}


Due to the length and complexity of the markup, I would like to have it in a separate file. The issue is that this markup is not being evaluated in the Drupal context, since it is being read in with PHP's file_get_contents function. For instance, if my markup contained...

&lt;h1&gt;&lt;?php echo $user-&gt;uid; ?&gt;&lt;/h1&gt;


...nothing would be displayed. Is there a function within Drupal that will parse a PHP file in the bootstrapped environment, and return the generated string? If not, what is the best/easiest way to handle this situation?

EDIT: This just occurred to me - I've already created an API within Drupal that would allow me to access the facility info I need via AJAX. I could just output the page without the facility data, then include a JS file which would get that. I'm still not convinced that's the best way, though. Thoughts?
If you want your code to live outside your module's .module file, hook_menu has a way to tell Drupal where to look for your page callback. A common name for include files containing page callbacks is MODULENAME.pages.inc. Place this file in the same folder as your .module file. Just add one line to your menu item definition:

function facility_menu() {
  $items['facilities'] = array(
    'title' =&gt; 'Facilities',
    'page callback' =&gt; 'facility_landing',
    'access callback' =&gt; TRUE,
    'type' =&gt; MENU_CALLBACK,
    'file' =&gt; 'facility.pages.inc',
  );
  return $items;
}


Now Drupal will load the facility.pages.inc file when example.com/facilities is requested. In facility.pages.inc you place the facility_landing() function. Inside facility_landing() you call other functions to generate the page and finally you return the markup (Drupal 6) or render array (Drupal 7) for your landing page.