ポップアップ先でのロールオーバー

ポップアップ後のウィンドウでメイン拡大画像+追加縮小画像を表示し、縮小画像クリックでメイン画像が切り替わる。
まず、/includes/templates/template_default/templates/tpl_display_large_image.phpを作成。
ベースは/includes/modules/additional_image.phpで、変数名を変える&ついでにテンプレートもくっつけるとこうなる。

if (!defined('IS_ADMIN_FLAG')) {
  die('Illegal Access');
}
if (!defined('IMAGE_ADDITIONAL_DISPLAY_LINK_EVEN_WHEN_NO_LARGE')) define('IMAGE_ADDITIONAL_DISPLAY_LINK_EVEN_WHEN_NO_LARGE','Yes');
if ($products_image_large != '') {
  // prepare image name
  $products_image_large_extension = substr($products_image_large, strrpos($products_image_large, '.'));
  $products_image_large_base = ereg_replace(IMAGE_SUFFIX_LARGE . $products_image_large_extension, '', $products_image_large);

  // if in a subdirectory
  if (strrpos($products_image_large, '/')) {
    $products_image_large_match = substr($products_image_large, strrpos($products_image_large, '/')+1);
    //echo 'TEST 1: I match ' . $products_image_match . ' - ' . $file . ' -  base ' . $products_image_base . '<br>';
    $products_image_large_match = ereg_replace(IMAGE_SUFFIX_LARGE . $products_image_large_extension, '', $products_image_large_match) . '_';
    $products_image_large_base = $products_image_large_match;
  }

  $products_image_large_directory = ereg_replace($products_image_large, '', substr($products_image_large, strrpos($products_image_large, '/')));
  if ($products_image_large_directory != '') {
    $products_image_large_directory = ereg_replace($products_image_large_directory, '', $products_image_large) . "/";
  } else {
    $products_image_large_directory = DIR_WS_IMAGES;
  }

  // Check for additional matching images
  $file_extension = $products_image_large_extension;
  $products_image_large_match_array = array();
  if ($dir = @dir($products_image_large_directory)) {
    while ($file = $dir->read()) {
      if (!is_dir($products_image_large_directory . $file)) {
        if (substr($file, strrpos($file, '.')) == $file_extension) {
          if(preg_match("/" . $products_image_large_base . "/i", $file) == '1') {
            if ($file != $products_image_large) {
              if ($products_image_large_base . ereg_replace($products_image_large_base, '', $file) == $file) {
                $images_large_array[] = $file;
              } else {
              }
            }
          }
        }
      }
    }
    if (sizeof($images_large_array)) {
      sort($images_large_array);
    }
    $dir->close();
  }
}

// Build output based on images found
$num_images_large = sizeof($images_large_array);
$list_box_contents = '';
$title = '';

if ($num_images_large) {
  $row = 0;
  $col = 0;
  if ($num_images_large < IMAGES_AUTO_ADDED || IMAGES_AUTO_ADDED == 0 ) {
    $col_width = floor(100/$num_images_large);
  } else {
    $col_width = floor(100/IMAGES_AUTO_ADDED);
  }

  for ($i=0, $n=$num_images_large - 1; $i<$n; $i++) {
    $file = $images_large_array[$i];
($products_image_extension, '', $file) . IMAGE_SUFFIX_LARGE . $products_image_extension;
    $flag_has_large = file_exists($products_image_large);
    $base_image_large = $products_image_large_directory . $file;
    $thumb_slashes = zen_image($base_image_large, addslashes($products_name), SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT);
    $thumb_regular = zen_image($base_image_large, $products_name, SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT);
    $large_link = zen_href_link(FILENAME_POPUP_IMAGE_ADDITIONAL, 'pID=' . $_GET['products_id'] . '&pic=' . $i . '&products_image_large_additional=' . $products_image_large);

    // Link Preparation:
    $script_link = '<script language="javascript" type="text/javascript"><!--' . "\n" . 'document.write(\'' . '<a href="JavaScript:MainImageChange(\\\'' . $base_image_large . '\\\')">' . $thumb_slashes . '</a>' . '\');' . "\n" . '//--></script>';

    $noscript_link = '<noscript><a href="' . HTTP_SERVER . '/' . $base_image_large . '">' . $thumb_regular . '</a></noscript>';
    $link = $script_link . "\n      " . $noscript_link;

    // List Box array generation:
    $list_box_contents[$row][$col] = array('params' => 'class="additionalImages centeredContent back"' . ' ',
    'text' => "\n      " . $link);
    $col ++;
    if ($col > (IMAGES_AUTO_ADDED -1)) {
      $col = 0;
      $row ++;
    }
  } // end for loop
} // endif
?>

<div id="productAdditionalImages">
<SCRIPT LANGUAGE="JavaScript">
<!--
  function MainImageChange(subImageName)
    {
      document.images['MainImage'].src = subImageName;
    }
// -->
</SCRIPT>
<?php
    if (is_array($list_box_contents) > 0 ) {
      for($row=0;$row<sizeof($list_box_contents);$row++) {
        $params = "";
?>

<?php
        for($col=0;$col<sizeof($list_box_contents[$row]);$col++) {
          $r_params = "";
          if (isset($list_box_contents[$row][$col]['params'])) $r_params .= ' ' . (string)$list_box_contents[$row][$col]['params'];
          if (isset($list_box_contents[$row][$col]['text'])) {
?>
    <?php echo $list_box_contents[$row][$col]['text'] . "\n"; ?>
<?php
          }
        }
?>
<br class="clearBoth" />
<?php
      }
    }
?> 

</div>

次に、/includes/templates/template_default/popup_image/tpl_main_page.phpの、追加縮小画像を表示させたいところに、

<?php
  require($template->get_template_dir('/tpl_display_large_image.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_display_large_image.php');
?>

を追記する。
 
商品詳細ページで、追加縮小画像をクリックしたときも同じように動作させる場合は、
/includes/templates/template_default/popup_image_additional/tpl_main_page.phpの表示させたいところに

<?php
  $products_image_large = 'images/large/' . $products_image_large;
?>

<?php
  require($template->get_template_dir('/tpl_display_large_image.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_display_large_image.php');
?>

を追記する。
この際、表示部分もtpl_display_large_image.phpに記述してあるので、最初からあるスクリプト表示部分は削除する。
tpl_display_large_image.phpは使い回し。