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

Tuzemec

  • Захожу иногда
  • 246
  • 28 / 0
  • Ня!
И так...
Допустим что необходимо сделать так, чтоб артикул товара добавлялся автоматически при создании товара
и шел не как попало, а по порядку, т.е. "товар = арт.: 1, товар = арт.: 2, товар = арт.: 3,.......... товар = арт.: 205987....."
Для того чтоб артикул товара подставлялся автоматически при добавлении товара делаем следующее:

1. В базе данных меняем тип поля "product_sku" c "char"(символьный) на "integer"(числовой).
    Делается это в таблице "#__virtuemart_products". Не забываем выставить длину поля.
    Мне вполне хватает длины поля равным в 9 пунктов.
2. Открываем файл "ваш_сайт/administrator/components/com_virtuemart/views/product/tmpl/product_edit_information.php"
3. Находим строку под номером 48, ну или если у вас файл уже не раз изменялся, строку со следующим куском кода:
Код
<input type="text" class="inputbox" name="product_sku" id="product_sku" value="<?php echo $this->product->product_sku; ?>" size="32" maxlength="64" />

4. Меняем на это:
Код
<?php
    echo '<input type="text" class="inputbox" name="product_sku" id="product_sku" value="';
        if ($this->product->product_sku) $val_sku= $this->product->product_sku;
        else{
            $db_sku = JFactory::getDBO();
            $q_sku = 'SELECT `product_sku` FROM #__virtuemart_products ORDER BY `product_sku` DESC LIMIT 1';
            $db_sku->setQuery($q_sku);
            $data_sku = $db_sku->loadAssoc();
            $val_sku= (int)$data_sku['product_sku'] + 1;
        }
    echo $val_sku.'" size="32" maxlength="64" />';
?>

5. Сохраняем.
6. Проверяем.
7. *DRINK*
« Последнее редактирование: 06.08.2012, 10:58:11 от Tuzemec »
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!
*

Tuzemec

  • Захожу иногда
  • 246
  • 28 / 0
  • Ня!
Для того чтоб артикул товара подставлялся автоматически при добавлении товара делаем следующее:

Этот способ имеет один изъян... Артикул идет по порядку, но имеет вид
(при длине поля =9): "Артикул: 109" вместо требуемого "Артикул: 000000109".

Решение:
При изменении типа поля "product_sku" необходимо указать атрибут "UNSIGNED ZEROFILL"
Запрос для изменения типа поля приведен ниже. Не забудьте изменить суффикс таблицы на свой.
Код
ALTER TABLE `kifnr_virtuemart_products` CHANGE `product_sku` `product_sku` INT( 9 ) UNSIGNED ZEROFILL NULL DEFAULT NULL 
« Последнее редактирование: 08.05.2012, 16:16:24 от Tuzemec »
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!
*

Tuzemec

  • Захожу иногда
  • 246
  • 28 / 0
  • Ня!
У меня есть вопрос касательно проверки артикула, если артикул вводится ручную.
Как реализовать проверку на дубли при сохранении или потере фокуса поля ввода артикула...
Алгоритм такой:
Человек ввел артикул и перешел на другое поле. При этом срабатывает функция,
которая проходит по всем имеющимся записям в БД. Если совпадений не найдено, то
артикул и товар сохраняется, если артикул найден - значит выходит сообщение
"Ошибка! Такой артикул присутствует в БД."
Я понимаю что это может выполнить javascript, но я в нем вообще дуб дубом.
Может кто поможет с решением такой задачи?
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!
*

TULLIVER

  • Осваиваюсь на форуме
  • 26
  • 6 / 0
не работает твой метод, после всех проделанных телодвижений в админке появляются только нули в артикуле. Как это можно исправить?!
*

Tuzemec

  • Захожу иногда
  • 246
  • 28 / 0
  • Ня!
не работает твой метод, после всех проделанных телодвижений в админке появляются только нули в артикуле. Как это можно исправить?!
Первый кто так утверждает. У меня значит и у других работает... Вывод: либо "телодвижения" не в ту сторону, либо... Зачем искать в админке то, что автоматом ставиться будет?
Проверьте еще раз и внимательней с пунктами. Если есть сомнения - гляньте здесь
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!
*

TULLIVER

  • Осваиваюсь на форуме
  • 26
  • 6 / 0
Сделал еще раз все по твоим пунктам, в итоге в артикуле у всех товаров появляются девять нулей и все.
*

Tuzemec

  • Захожу иногда
  • 246
  • 28 / 0
  • Ня!
Сделал еще раз все по твоим пунктам, в итоге в артикуле у всех товаров появляются девять нулей и все.
Мда... случай. Подробности будут? Пути... логи... Версии движка и ВМ... Если не работает, то должно ошибку хотя бы выдать, мол так и так... Не могу установить значение для поля... Код страницы в студию... "не работает" - 99% причин этих слов - это человеческий фактор. изменения по верному адресу?
ваш_сайт/administrator/components/com_virtuemart/views/product/tmpl/product_edit_information.php
В базе изменения какие были сделаны? с какими столбцами?  Каким образом ввод товара происходит? В общем подробности в студию. До этого вводились артикулы какого плана, вида?
Щипцами информацию вытаскивать? Кому это надо? Мне нет. У меня всё работает. =)
« Последнее редактирование: 21.08.2012, 09:11:33 от Tuzemec »
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!
*

TULLIVER

  • Осваиваюсь на форуме
  • 26
  • 6 / 0
Все заработало  ^-^ Правда пришлось удалить весь товар и добавить по новой, только так начал вставляться артикул. Видимо какой то глюк VM

Спасибо за помощь!
*

Garyk01

  • Осваиваюсь на форуме
  • 22
  • 1 / 0
Все заработало  ^-^ Правда пришлось удалить весь товар и добавить по новой, только так начал вставляться артикул. Видимо какой то глюк VM

Спасибо за помощь!

Не надо было так радикально.
Достаточно удалить артикул в карточке и нажать "Сохранить"
*

TULLIVER

  • Осваиваюсь на форуме
  • 26
  • 6 / 0
Пробовал, мне это не помогло. Пришлось удалять товар. По другому не сработало!!
*

Garyk01

  • Осваиваюсь на форуме
  • 22
  • 1 / 0
Я тут набросал свой вариант на основе этого решения и немного из этой темы http://joomlaforum.ru/index.php/topic,113509.0.html

Код получился такой:
Код
<?php
    echo '<input type="text" class="inputbox" name="product_sku" id="product_sku" value="';
        if ($this->product->product_sku) $val_sku= $this->product->product_sku;
        else{
            $db_sku = JFactory::getDBO();
            $q_sku = 'SELECT `product_sku` FROM #__virtuemart_products ORDER BY `product_sku` DESC LIMIT 1';
            $db_sku->setQuery($q_sku);
            $db_sku->next_record();
            $val_sku =intval($this->product->product_id)+rand(intval($this->product->product_id), 9999999);
        }
    echo $val_sku.'" size="32" maxlength="64" />';
?>

код получается уникальный случайный.

Прошу сильно не пинать (так как не силен в программировании), а помочь привязать id производителя, как в приведенной теме по VM1.1.
Мои попытки были такие:
Код
<?php
    echo '<input type="text" class="inputbox" name="product_sku" id="product_sku" value="';
        if ($this->product->product_sku) $val_sku= $this->product->product_sku;
        else{
            $db_sku = JFactory::getDBO();
            $q_sku = 'SELECT `product_sku` FROM #__virtuemart_products ORDER BY `product_sku` DESC LIMIT 1';
            $db_sku->setQuery($q_sku);
            $db_sku->next_record();
            $list_sku = intval($this->product->product_id)+rand(intval($this->product->product_id), 9999999);
            $list_manufacturer = intval($this->product->virtuemart_manufacturer_id);
            $val_sku = $list_manufacturer.'-'.$list_sku;
        }
    echo $val_sku.'" size="32" maxlength="64" />';
?>

В самой карточке код выводиться по типу 3-1251257, но дальше нет((((

P.S. еще была попытка добавить и категорию товара, но...... тоже самое
       код такой хотел добавить
Код
$list_category = intval($this->product->virtuemart_category_id);
$val_sku = $list_manufacturer.'-'.$list_category.'-'.$list_sku;

В самой карточке код выводиться по типу 3-10-1251257, но....
И еще возник один вопрос - как правильно переопределить файлы в папке админа (например этот "ваш_сайт/administrator/components/com_virtuemart/views/product/tmpl/product_edit_information.php")?
 
« Последнее редактирование: 10.10.2012, 00:57:09 от Garyk01 »
*

Garyk01

  • Осваиваюсь на форуме
  • 22
  • 1 / 0
Пробовал, мне это не помогло. Пришлось удалять товар. По другому не сработало!!

Ну если точно, то так - удалить артикул -> кнопка "Сохранить" (формируется новый код) -> кнопка "Сохранить и закрыть".
« Последнее редактирование: 09.10.2012, 22:13:32 от Garyk01 »
*

TULLIVER

  • Осваиваюсь на форуме
  • 26
  • 6 / 0
Мне это не помогло! и это ФАКТ
*

Garyk01

  • Осваиваюсь на форуме
  • 22
  • 1 / 0
Да! Ты прав! Я проверял на том, что сам написал.
Сейчас изменил код на родной - а на родном автоматом не присваивается код (((((
Но, все равно, ты радикально поступил - можно было двумя способами прописать код :
1 - в админке каждому старому товару прописать код - ну например 000000001, следующему 00000002 и т.д и сохранить - сохраняется.
Специально проверил
2- в БД зайти в поле ххххх_virtuemart_products и ручками прописать код в product_sku , указанные выше.

Долго. Согласен, но не заводить же весь товар заново.
Думаю, что можно через запрос SQL все это сделать  - но не знаю как правильно  запрос оформить.  

P.S.   Просьба к уважаемым знатокам помочь с кодом, которые прописал на пару постов выше.
И как все таки правильно переопределить файлы в папке админа (например этот "ваш_сайт/administrator/components/com_virtuemart/views/product/tmpl/product_edit_information.php")?
Как файлы сайта переопределить - разобрался, а вот с частью админки - засада. После обновления - все слетело
*

TULLIVER

  • Осваиваюсь на форуме
  • 26
  • 6 / 0
Согласен, у меня просто напросто было около 40 товаров по этому не сложно было перезабить )))
А так респект тебе, за то что не обламался и решил все перепроверить ))) лови плюс!
*

TULLIVER

  • Осваиваюсь на форуме
  • 26
  • 6 / 0
И снова кризис, обновился сегодня до версии 2.0.12f!
В итоге снова не работает автоматический ввод артикула, снова проставляет одни нули!

Прошу помощи! Не один из выше представленных вариантов не помогает!
*

Garyk01

  • Осваиваюсь на форуме
  • 22
  • 1 / 0
Все заново надо наверное.
файлы то переписались.

Только артикулы, после внесения изменения в файл product_edit_information.php и базу, попробуй ручками или в карточке или в БД - а то заново вносить товар жестковато будет...
Надеюсь бекап у тебя остался..

Я кстати чуть раньше говорил об этой проблеме
...
P.S.   Просьба к уважаемым знатокам помочь с кодом, которые прописал на пару постов выше.
И как все таки правильно переопределить файлы в папке админа (например этот "ваш_сайт/administrator/components/com_virtuemart/views/product/tmpl/product_edit_information.php")?
Как файлы сайта переопределить - разобрался, а вот с частью админки - засада. После обновления - все слетело

и просил помощи, но.....пока тишина...
« Последнее редактирование: 09.11.2012, 00:35:00 от Garyk01 »
*

Stasweb

  • Завсегдатай
  • 1492
  • 24 / 0
Вот я допустим заменил

с
Код
<input type="text" class="inputbox" name="product_sku" id="product_sku" value="<?php echo $this->product->product_sku; ?>" size="32" maxlength="64" />

на

Код
<?php
    echo '<input type="text" class="inputbox" name="product_sku" id="product_sku" value="';
        if ($this->product->product_sku) $val_sku= $this->product->product_sku;
        else{
            $db_sku = JFactory::getDBO();
            $q_sku = 'SELECT `product_sku` FROM #__virtuemart_products ORDER BY `product_sku` DESC LIMIT 1';
            $db_sku->setQuery($q_sku);
            $data_sku = $db_sku->loadAssoc();
            $val_sku= (int)$data_sku['product_sku'] + 1;
        }
    echo $val_sku.'" size="32" maxlength="64" />';
?>

в файле

/administrator/components/com_virtuemart/views/product/tmpl/product_edit_information.php

и он у меня везде ставит артикул 10 автоматически
в чем может быть проблема
*

Stasweb

  • Завсегдатай
  • 1492
  • 24 / 0
проблему решил
в pma в virtuemart_products
затем "Структура", product_sku - Изменить,
там заменил char на INT в Numeric

но теперь перестал работать поиск
тоесть теперь не ищит по артикулу вчем тут может быть проблема

вот к примеру http://lik-material.kz/index.php/ru/
и артикул есть с 10-13 но он не находит
*

Dgikar

  • Захожу иногда
  • 192
  • 3 / 0
  • Я только учусь
Так же не получилось воплотить - в артикул, ставит нули. Что сделал:
Спойлер
[свернуть]
В итоге, получил во такое:
Спойлер
[свернуть]

Попробовал код от Garyk01 - да, заработал (и один и второй - в БД - пишет нормально), но, хотелось бы, чтобы артикул, был точно такой же, как и ID товара, ну и конечно же, чтобы поиск так же работал...

Добавлено немного позжее:

Поковырявшись, получилось сделать запись артикула в таком формате: 000000104 (где 104 - ID продукта)
Вот так изменил код от Tuzemec
Код: php
<?php
    echo '<input type="text" class="inputbox" name="product_sku" id="product_sku" value="';
        if ($this->product->product_sku) $val_sku= $this->product->product_sku;
        else{
            $db_sku = JFactory::getDBO();
            $q_sku = 'SELECT `virtuemart_product_id` FROM #__virtuemart_products ORDER BY `virtuemart_product_id` DESC LIMIT 1';
            $db_sku->setQuery($q_sku);
            $data_sku = $db_sku->loadAssoc();
            $db_sku->next_record();
            $val_sku= (int)$data_sku['virtuemart_product_id'] + 1;
        }
    echo $val_sku.'" size="32" maxlength="64" />';
?>

Правда, при создании товара, в админке, в поле артикул, вбивается только 104, но, в БД, прописывается именно 000000104
« Последнее редактирование: 30.05.2013, 15:40:49 от Dgikar »
*

Tuzemec

  • Захожу иногда
  • 246
  • 28 / 0
  • Ня!
Еще один вариант автоматического заполнения артикула товара.
В данном варианте артикул получается вида "ВТ-0000000123", где:
"ВТ-" - это префикс артикула;
"0000000123" - это число, равное текущему ID товара;

Код: php
<?php
    echo '<input type="text" class="inputbox" name="product_sku" id="product_sku" value="';
    if ($this->product->product_sku) {
         $val_sku = $this->product->product_sku; //Если артикул установлен, выводим его
    }else{
         $db_sku = JFactory::getDBO();
         $q_sku = 'SELECT `virtuemart_product_id` FROM #__virtuemart_products ORDER BY `virtuemart_product_id` DESC LIMIT 1'; //Запрос крайнего ID товара
         $db_sku->setQuery($q_sku); //Получаем последний использованный ID товара, для формирования артикула
         $data = $db_sku->loadAssoc();
         $data = intval($data['virtuemart_product_id'])+1; //Прибавляем к полученному ID единицу, для получения нынешнего ID товара
         $a = strlen($data); //Получаем длину значения ID товара            
         $a = 10 - $a; //10 - это количество цифр в формируемом артикуле
         $val_sku= "BT-"; //Префикс артикула
         for($i=1; $i<=$a; $i++){
             $val_sku .= "0"; //Циклом заполняем артикул недостающими нулями перед ID товара
         }
         $val_sku .= $data; //Прибавляем к полученному ID товара            
    }
    echo $val_sku.'" size="32" maxlength="64" />'; //Выводим значение в форму    
?>
« Последнее редактирование: 13.08.2013, 13:20:16 от Tuzemec »
Каждый ваш клик помогает заработать сыну на конфеты
Не дайте ребенку остаться без сладкого! Сделай ТЫЦ!
*

LeoShe

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Не совсем в тему, но частично касается.
Проблема с выводом артикула (забиваемого ручками) в корзине. Ячейки есть, но пустые.

Вывод заголовка:
Код
<th align="left"><?php echo JText::_ ('COM_VIRTUEMART_CART_SKU')?></th>
Вывод значения:
Код
<td align="left"><?php  echo $row->product_sku; ?></td>

Что не так?
*

Максим Пишняк

  • Давно я тут
  • 837
  • 35 / 0
Ваша версия? Работает ли на стандартном шаблоне?
*

Dgikar

  • Захожу иногда
  • 192
  • 3 / 0
  • Я только учусь
Что мой вариант, что вариант от Tuzemec - оба рабочие на 100%, но вот стал вопрос...:
  • нужно, чтобы в разных категориях, префикс у артикула - был разный...
Кручу, верчу, а придумать - ничего не могу...

И второй вопрос:
  • все то оно, хорошо, но, как бы так модифицировать код, чтобы перед цифрой ID в артикуле, максимально, было:
    • 3-и нуля, если артикул от единицы до девяти;
    • 2-а нуля, если артикул от десяти до девяносто девяти;
    • 1-н ноль, если артикул от ста до "бесконечности"...
Парни, есть идея? Или моя хотелка - из области фантастики*
« Последнее редактирование: 27.10.2013, 06:40:39 от Dgikar »
*

fsv

  • Moderator
  • 2765
  • 402 / 2
...//Циклом заполняем артикул недостающими нулями перед ID товара

И второй вопрос:

printf

Пример:  8 цифр, впереди дополняет нулями
Код: php
<?php printf("%08d", $my_sku); ?>
« Последнее редактирование: 27.10.2013, 17:53:51 от fsv »
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Dgikar

  • Захожу иногда
  • 192
  • 3 / 0
  • Я только учусь
fsv, сорри, я, с PHP, дружу как с нашим президентом...

Не сложно, объяснить (именно кодом), как это:
Код: php
<?php printf("%08d", $my_sku; ?>

прикрутить к коду от Tuzemec?

Заранее благодарю
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Не сложно, объяснить (именно кодом), как это:
прикрутить к коду от Tuzemec?
особо не вникал, попробуйте как-то так:
Код: php
$val_sku= "BT-".printf("%08d", $data);
$a получать уже не надо
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Dgikar

  • Захожу иногда
  • 192
  • 3 / 0
  • Я только учусь
... попробуйте как-то так:
Код: php
$val_sku= "BT-".printf("%08d", $data);
$a получать уже не надо
:( Получатся вот что:
« Последнее редактирование: 27.10.2013, 18:40:20 от Dgikar »
*

fsv

  • Moderator
  • 2765
  • 402 / 2
:( Получатся вот что:
Код: php
<?php 
echo 'BT-';
printf("%08d", $data);
?>
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Думаю, fsv допустил опечатку
Код: php-brief
$val_sku= "BT-".sprintf("%08d", $data);
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Отображение полей CF в карточке товара

Автор farmer66

Ответов: 2
Просмотров: 1099
Последний ответ 17.02.2023, 13:39:18
от farmer66
Вывод изображений настраиваемого поля в карточке товара

Автор wasssup

Ответов: 0
Просмотров: 1233
Последний ответ 05.07.2022, 08:51:19
от wasssup
Умножение свойств товара в настраиваемом поле атрибут корзины

Автор cvoboda

Ответов: 22
Просмотров: 3505
Последний ответ 20.10.2020, 11:54:13
от NIKOLY
Как удалить дочерние товары в карточке товара VM 2?

Автор zeus07

Ответов: 0
Просмотров: 825
Последний ответ 12.05.2020, 14:51:39
от zeus07
[Решено] Вывод других товаров тойже категории в карточке товара

Автор x-render

Ответов: 30
Просмотров: 7850
Последний ответ 06.01.2020, 07:39:31
от Igoritaly