Здравствуйте, товарищи!
На форуме, по-моему, еще нигде не описывался способ копирования категорий (если не так, то укажите где есть материал). Для этого я применяю следующую поделку в виде следующего кода:
<?php
define( '_VALID_MOS', 1 );
global $database;
require_once( 'configuration.php' );
require_once( 'includes/joomla.php' );
require_once( 'includes/pageNavigation.php' );
$sourceCat = 501;
$destinationCat = 508;
$queryGetMaxVendors = "SELECT max(id) as max FROM jos_autobb_vendors";
$database->setQuery($queryGetMaxVendors);
$database->loadObject($vendMax);
$maxNumberOfVendors = $vendMax->max;
$queryGetMaxCat = "SELECT max(id) as max FROM jos_autobb_vendors WHERE `category`=$sourceCat";
$database->setQuery($queryGetMaxCat);
$database->loadObject($MaxCat);
$maxVendorsOfCat = $MaxCat->max;
$queryGetMaxModels = "SELECT max(id) as max FROM jos_autobb_models";
$database->setQuery($queryGetMaxModels);
$database->loadObject($modelMax);
$maxNumberOfModels = $modelMax->max;
$queryGetFirstCat = "SELECT min(id) as min FROM jos_autobb_vendors WHERE `category`=$sourceCat";
$database->setQuery($queryGetFirstCat);
$database->loadObject($MinCat);
$iVendor = $MinCat->min;
//---------------------------------------------------------------------------------
// копирование видов комплектации
$qMaxComplect = "SELECT max(id) as max FROM jos_autobb_complectations";
$database->setQuery($qMaxComplect);
$database->loadObject($complectMax);
$maxComplect = $complectMax->max;
$qComplect = "SELECT * FROM jos_autobb_complectations WHERE `category`=$sourceCat";
$database->setQuery($qComplect);
$oComplect = $database->loadObjectList();
foreach( $oComplect as $complect)
{
$maxComplect++;
$queryInsComplect= "INSERT INTO `jos_autobb_complectations` (`id`, `category`, `title`, `options`) VALUES ($maxComplect, $destinationCat, '$complect->title', '$complect->options')";
$database->setQuery($queryInsComplect);
$database->query();
print "----- $maxComplect: $complect->title, $complect->options";
echo "</br>";
}
echo "</br>";
echo "------------------------------------------------------------";
//---------------------------------------------------------------------------------
// копирование типов кузова
$qMaxBody = "SELECT max(id) as max FROM jos_autobb_bodies";
$database->setQuery($qMaxBody);
$database->loadObject($bodyMax);
$maxBody = $bodyMax->max;
$qBody = "SELECT * FROM jos_autobb_bodies WHERE `category`=$sourceCat";
$database->setQuery($qBody);
$oBody = $database->loadObjectList();
foreach( $oBody as $body)
{
$maxBody++;
$queryInsComplect= "INSERT INTO `jos_autobb_bodies` (`id`, `category`, `title`) VALUES ($maxBody, $destinationCat, '$body->title')";
$database->setQuery($queryInsComplect);
$database->query();
print "----- $maxBody: $body->title";
echo "</br>";
}
echo "</br>";
echo "------------------------------------------------------------";
//---------------------------------------------------------------------------------
for(; $iVendor <= $maxVendorsOfCat; $iVendor++)
{
// Добавление в таблицу jos_autobb_vendors легковых автомобилей из категории $sourceCat в категорию $destinationCa
$queryVendor = "SELECT * FROM jos_autobb_vendors WHERE `category` = $sourceCat and `id` = $iVendor ";
$database->setQuery($queryVendor);
$database->loadObject($oVendor);
$numVendor = $maxNumberOfVendors+$iVendor; // номер производителя в таблице -> id
print "$numVendor: $oVendor->title";
echo "</br>";
$queryInsVendors = "INSERT INTO `jos_autobb_vendors` (`id`, `category`, `title`, `itemid`, `description`) VALUES ($numVendor, $destinationCat, '$oVendor->title', 0, '')";
$database->setQuery($queryInsVendors);
$database->query();
// Добавление в таблицу jos_autobb_models марок категории $sourceCat соответствующих категории $destinationCat
$queryModels = "SELECT * FROM jos_autobb_models WHERE `vendor` = $iVendor";
$database->setQuery($queryModels);
$oModels = $database->loadObjectList();
$iMod = 1;
foreach( $oModels as $model )
{
$maxNumberOfModels++;
$queryInsMod= "INSERT INTO `jos_autobb_models` (`id`, `title`, `vendor`, `itemid`, `description`) VALUES ($maxNumberOfModels, '$model->title', $numVendor, 0, '')";
$database->setQuery($queryInsMod);
$database->query();
print "----- $maxNumberOfModels: $model->title";
echo "</br>";
}
} // for(; $iVendor <= $maxVendorsOfCat; $iVendor++)
?>
Для полного копирования содержимого одной категории ТС в другую необходимо:
- в админке создать новую категорию ТС;
- запомнить ID категории источника и ID созданной категории;
- в приведённом коде переменной $sourceCat присвоить значение ID категории источника, а переменной $destinationCat присвоить ID созданной категории;
- сохранить код в файл;
- разместить этот файл в каталоге размещения сайта;
- выполнить файл через командную строку или из окна браузера.
Alex Revo, обращаюсь, как к гуру компонента! Было бы не плохо встроить такую возможность в дорабатываемы компонент. Приведённый код имеется во вложенном файле.
З.Ы. Я не php-программист, т.ч. не судите строго, а лучше напишите как надо было делать. Эта поделка вполне работоспособна. Проверял неоднократно. Думаю, многим будет полезна.
[вложение удалено Администратором]