Собственно описывать нечего, в самом скрипте достаточно описания.
Единственное, что подмечу, данный скрипт тестировался на 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>';
}
?>
