title: Using variable_set, hook block and hook menu to save config values then print out in custom template
body: <p>I am trying to 
  1) implement the hook menu and variable_set in the block hook and to solicit and store configuration values from user,
  2) then use retrieve configuration values and 
  3) pass them out into a template using theme hook when page is shown.</p>
  
  <p>However I need a bit of a push on step two and three!</p>
  
  <pre><code>// =====================  file: my_module.php
  
  function my_module_block($op = 'list', $delta = 0, $edit = array())
  {
   switch($op)
   {
    case 'list':
     $blocks[0] = array(
     'info' =&gt; t('Find Something'), // required value - this shows up in your list of blocks
     'region' =&gt; 'left',             // default region on the page
     'weight' =&gt; 0,                  // position the block vertically within its column. 
     'visibility' =&gt; 1,              // permit the block to be displayed for a given user.   
     'status'   =&gt; TRUE,    // enabled
     );
     return $blocks;
     break;
  
    // case configure
    case 'configure':
      // not used ?
  
    // case save (save configuration values)
    case 'save':
     variable_set('my_module_text_bottom', $edit['my_module_text_bottom']);
     variable_set('my_module_text_top', $edit['my_module_text_top']);
     break;
   } 
  }
  
  function my_module_menu(){
    $items = array();
  
    // add menu items
   $items['my_module'] = array(
   // add a menu item here...
    );
  
    // administration setting - callback my_module_admin
    $items['admin/settings/my_module'] = array(
      'title' =&gt; 'Lookup on Something',
      'description' =&gt; 'Description of my module settings page',
      'page callback' =&gt; 'drupal_get_form',
      'page arguments' =&gt; array('my_module_admin'),
      'access arguments' =&gt; array('access administration pages'),
      'type' =&gt; MENU_NORMAL_ITEM,
     );
  
    return $items;
  }
  
  // setup administrative default values (see: site configiration)
  function my_module_admin() {
    $form = array();
  
    $form['my_module_text_top'] = array(
      '#type' =&gt; 'textarea',
      '#title' =&gt; t('Text of top of page'),
      '#default_value' =&gt; variable_get('my_module_text_top', 'my_module_text_top: This is configurable text found in the module configuration.'),
      '#size' =&gt; 1024,
      '#maxlength' =&gt; 1024,
      '#description' =&gt; t("text above the Find a Retailer block."),
      '#required' =&gt; TRUE,
    );
  
  
    $form['my_module_text_bottom'] = array(
      '#type' =&gt; 'textarea',
      '#title' =&gt; t('Text at bottom of page'),
      '#default_value' =&gt; variable_get('my_module_text_bottom', 'my_module_text_bottom: This is configurable text found in the module configuration.'),
      '#size' =&gt; 1024,
      '#maxlength' =&gt; 1024,
      '#description' =&gt; t("text below the Find a Retailer block."),
      '#required' =&gt; TRUE,
    );
    return system_settings_form($form);
  }
  
  
  // registering a theme
  function my_module_theme(){
   return array(
    'my_module_show' =&gt; array(
    'arguments' =&gt; array('content' =&gt; "hello"),      
    'template' =&gt; 'my_module_show'
    ),
   );
  }
  
  // implementing a theme
  function theme_my_module_show($content){
   $output = '&lt;ul&gt;$content&lt;/ul&gt;';
   return $output;
  }
  
  function my_module(){
   $output = ''; 
   $variables = "";
  
   $output .= theme('my_module_show', $variables); 
   return $output; 
  }
  
  // =====================  file: my_module_show.tpl.php
  print $text1;
  print $text2;
  </code></pre>