0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 13723 Просмотров

Здравствуйте, товарищи!
На форуме, по-моему, еще нигде не описывался способ копирования категорий (если не так, то укажите где есть материал). Для этого я применяю следующую поделку в виде следующего кода:

Код
<?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-программист, т.ч. не судите строго, а лучше напишите как надо было делать. Эта поделка вполне работоспособна. Проверял неоднократно. Думаю, многим будет полезна.

[вложение удалено Администратором]
« Последнее редактирование: 15.03.2008, 00:04:16 от Nikodim »
*

Alex Revo

  • Moderator
  • 1995
  • 109 / 0
Спасибо, Nikodim. Обязательно рассмотрю это предложение и попробую реализовать в новой версии.

Сидел разбирался ииии ... обнаружил, что у меня не было копирования типов кузова (таблица _autobb_bodies). Исправил в коде и перезаписал файл в первом посте.

А для дальнейших модернизаций компонента такое предложение:
так как при установке установке компонента, устанавливается полная база всех марок и моделей в стандартные категории (легковые, грузовые), можно сделать кнопку для создания новой категории вроде "создать копированием" с выбором базовой (стандартной) категории в качестве источника.
« Последнее редактирование: 15.03.2008, 11:55:04 от Nikodim »
*

Alex Revo

  • Moderator
  • 1995
  • 109 / 0
Да, я так и планирую сделать.
*

b2z

  • Глобальный модератор
  • 7290
  • 778 / 0
  • Разраблю понемногу
Хотел вопользоватся кодом, но получил:

Warning: Invalid argument supplied for foreach() in E:\xampp\htdocs\auto\set.php on line 40

------------------------------------------------------------
Warning: Invalid argument supplied for foreach() in E:\xampp\htdocs\auto\set.php on line 61

------------------------------------------------------------0:

Warning: Invalid argument supplied for foreach() in E:\xampp\htdocs\auto\set.php on line 90

Посмотрл код, вроде всё правильно...
*

P@shKenDr

  • Осваиваюсь на форуме
  • 28
  • 0 / 0
А для дальнейших модернизаций компонента такое предложение:
так как при установке установке компонента, устанавливается полная база всех марок и моделей в стандартные категории (легковые, грузовые), можно сделать кнопку для создания новой категории вроде "создать копированием" с выбором базовой (стандартной) категории в качестве источника.
Чтото я непонял логики, ведь стандартной базе всех марок и моделей идёт привязка по id к  стандартным категориям (легковые, грузовые 601,'Иномарки легковые' и 603,'Грузовики'), а если я изменил категории на 601,'Иномарки легковые' 602,'Отечественные легковые' 603,'Легкий грузовик' 604,'Грузовик или спец.техника' и т.д. то как импортирование базы марок ТС правильно "ляжет" на изменёные категории???
*

Alex Revo

  • Moderator
  • 1995
  • 109 / 0
правильно не ляжет, нужно так менять значения id на новые
*

Sto-auto

  • Захожу иногда
  • 183
  • 0 / 2
  • не останавливайся...
Раньше все получалось, а сейчас все время "Restricted access". С autobb for Joomla 1.5 этот метод работает?
*

Sto-auto

  • Захожу иногда
  • 183
  • 0 / 2
  • не останавливайся...
Как сделать аналогичное на 1.5? Как скопировать категорию?
« Последнее редактирование: 21.09.2011, 00:15:36 от Sto-auto »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вопрос по модулю Выбор марок/моделей автомобилей

Автор FLYERok

Ответов: 2
Просмотров: 2862
Последний ответ 21.08.2012, 23:33:53
от Alex Revo
Собираю базу моделей и марок

Автор Dimka56ru

Ответов: 9
Просмотров: 4073
Последний ответ 19.08.2012, 20:43:54
от Goldcoding
Красивая навигация с логотипами марок

Автор pilotus

Ответов: 11
Просмотров: 4234
Последний ответ 05.07.2010, 09:16:34
от Alex Revo
Проблема со списком моделей авто

Автор ZeoNic

Ответов: 4
Просмотров: 2314
Последний ответ 28.06.2010, 06:18:12
от Павел Зотов
А как в общем каталоге марок и моделей убрать общее количество авто?

Автор pinkfloyd

Ответов: 1
Просмотров: 1989
Последний ответ 14.06.2010, 20:40:06
от Alex Revo