Собственно описывать нечего, в самом скрипте достаточно описания.
Единственное, что подмечу, данный скрипт тестировался на Joomla 1.5 + Virtuemart 1.1
В самом низу вы можете скачать сам скрипт.
<? /* author - GAAlferov site - http://gaalferov.com */ error_reporting(-1); // show all error // Подключем все необходимые файлы if (!defined('_JEXEC')) { /*** Joomla part ***/ define( '_JEXEC', 1 ); define('JPATH_BASE', dirname(__FILE__) ); define( 'DS', DIRECTORY_SEPARATOR ); /* Required Files */ require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' ); require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' ); /* To use Joomla's Database Class */ require_once ( JPATH_BASE .DS.'libraries'.DS.'joomla'.DS.'factory.php' ); require_once ( JPATH_LIBRARIES.DS.'joomla'.DS.'import.php'); /* Create the Application */ $app = JFactory::getApplication('site')->initialise(); /*** Joomla part ***/ /*** VirtueMart part ***/ require_once(JPATH_BASE.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'virtuemart.cfg.php'); require_once( CLASSPATH. 'ps_main.php'); require_once( CLASSPATH. "language.class.php" ); /* Load the VirtueMart database class */ require_once( CLASSPATH. 'ps_database.php' ); /*** END VirtueMart part ***/ } function small_image($sizex,$sizey) { //Функция создание миниатур //Подключаем класс обработки изображения include(JPATH_BASE.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'classes'.DS.'class.img2thumb.php'); //Коннект с БД $db =& JFactory::getDBO(); $sql = "SELECT * FROM `#__vm_product`"; $db->setQuery($sql); $rows = $db->loadAssocList(); //Создание новых мини-изображений foreach ($rows as &$row) { if ($row["product_full_image"]) { $filename = JPATH_BASE.DS."components".DS."com_virtuemart".DS."shop_image".DS."product".DS.$row["product_full_image"]; //если файл существует if (file_exists( $_SERVER['DOCUMENT_ROOT'].DS."components".DS."com_virtuemart".DS."shop_image".DS."product".DS.$row["product_full_image"])) { $fileinfo = pathinfo( $filename ); $file = str_replace(".".$fileinfo['extension'], "", $fileinfo['basename']); $ext = ".jpg"; //Формируем имя выходного файла $fileout_name = "resized".DS.$file."__".$sizex."x".$sizey.$ext; //Формируем путь выходного файла $fileout_small_patch = JPATH_BASE.DS."components".DS."com_virtuemart".DS."shop_image".DS."product".DS.$fileout_name; //Update таблицы $sql_update = "UPDATE `#__vm_product` SET `product_thumb_image` = '{$fileout_name}' WHERE `product_id`='{$row["product_id"]}'"; $db->setQuery($sql_update); $db->query(); //Стандартные настройки функции virtuemart $maxsize = false; $bgred = 255; $bggreen = 255; $bgblue = 255; // создаем экземпляры класса. По сути - передаем все необходимые данные для создания эскизов $new_image_small = new Img2Thumb($filename,$sizex,$sizey,$fileout_small_patch,$maxsize,$bgred,$bggreen,$bgblue); echo 'Create small image - "'.$fileout_name.'" completed.<br />'; } else { //имя файла есть в БД, но физически он отсутствует echo '<b>ERROR!!! File - . '.$row["product_full_image"].' exist on directory.</b><br />'; } } else { //у товара нет большой картинки echo '<b>ERROR!!! Product_id - . '.$row["product_id"].' dont have big image.</b><br />'; } } // end foreach } $sizex = JRequest::getVar('sizex'); //Ширина мини-изображения $sizey = JRequest::getVar('sizey'); //Высота мини-изображения if (isset($sizex)) { $work = small_image($sizex,$sizey); } else { echo ' <form action="" method="post"> Ширина мини-изображения: <br /> <input type="text" name="sizex" placeholder="'.PSHOP_IMG_WIDTH.'" value="'.PSHOP_IMG_WIDTH.'" required><br /><br /> Высота мини-изображения:<br /> <input type="text" name="sizey" placeholder="'.PSHOP_IMG_HEIGHT.'" value="'.PSHOP_IMG_HEIGHT.'" required><br /> <input class="but" type="submit" value="Поехали!"> </form>'; } ?>