Ну, если долго мучатся...
Вывод артикула с нулями или "чистого" ID, в зависимости от количества цифр в артикуле
(одним словом: вводная, получилась на единицу с плюсом):
<?php
echo '<input type="text" class="inputbox" name="product_sku" id="product_sku" value="';
if ($this->product->product_sku) {
// Esli artikul ustanovlen, vyvodim ego
$val_sku = $this->product->product_sku;
} else {
$db_sku = JFactory::getDBO();
// Zapros kraynego ID tovara
$q_sku = 'SELECT `virtuemart_product_id` FROM #__virtuemart_products ORDER BY `virtuemart_product_id` DESC LIMIT 1';
// Poluchaem posledniy ispolzovanniy ID tovara, dlya formirovaniya artikula
$db_sku->setQuery($q_sku);
$data = $db_sku->loadAssoc();
// Pribavliaem k poluchennomu ID edinitcu, dlya polucheniya nyneshnego ID tovara
$data = intval($data['virtuemart_product_id'])+1;
// Poluchaem dlinu znacheniya ID tovara
$a = strlen($data);
// Ustanavlivaem kolichestvo cifr v formiruemom artikule
if ($data <= 9999) {
$a = 5 - $a; // 5 cifr
} elseif ($data <= 99999) {
$a = 6 - $a; // 6 cifr
} elseif ($data <= 999999) {
$a = 7 - $a; // 7 cifr
} elseif ($data <= 9999999) {
$a = 8 - $a; // 8 cifr
} elseif ($data <= 99999999) {
$a = 9 - $a; // 9 cifr
} elseif ($data <= 999999999) {
$a = 10 - $a; // 10 cifr
}
// Prefiks artikula
$val_sku= "KF-";
if ($data <= 999999999) {
// Esli ID tovara, menshe ili raven 999999999, to ciklom zapolniaem artikul nedostayushchimi nulyami pered ID tovara
for($i=1; $i<=$a; $i++){
$val_sku .= "0";
}
} else {
// Pribavlyaem k poluchennomu ID tovara
$val_sku .= $data;
}
}
// Esli ID tovara, menshe ili raven 999999999, to v forme, otobrazhaem nol(nuli), pered ID tovara
if ($data <= 999999999) {
echo $val_sku.$data.'" size="32" maxlength="64" />';
} else {
// Esli ID tovara, bolshe 999999999, to v forme, otobrazhaem chistiy ID tovara
echo $val_sku.'" size="32" maxlength="64" />';
}
?>
Со второй частью своего
вопроса - разобрался, но вот как быть с его первой частью... ? Кто-то, что-то может посоветовать? В какую сторону рыть?
На всякий, продублирую вопрос:
- нужно, чтобы в разных категориях, префикс у артикула - был разный...
Как я себе, это думаю (могу очень глубоко ошибаться...):
- при создании нового товара, ни VM ни тем более сама Joomla (а зачастую и сам юзер), не знают к какой категории, причислят этот, вновь создаваемый товар. Поэтому, когда я (юзер), выбираю категорию к которой причисляю этот, новый товар, то:
- при помощи JavaScript(...?) получаю название выбранной в выпадающем списке категории;
- обрезаю это название до (например) 3-х первых букв;
- присваиваю полученное уже PHP переменной;
- "подкручиваю" к вышеописанному коду по формированию артикула
Вот только вся ф...я заключается в том, что сам, я, это, написать - не смогу...