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

Tuzemec

  • Давно я тут
  • 243
  • 27
  • Ня!
И так...
Допустим что необходимо сделать так, чтоб артикул товара добавлялся автоматически при создании товара
и шел не как попало, а по порядку, т.е. "товар = арт.: 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

  • Давно я тут
  • 243
  • 27
  • Ня!
Для того чтоб артикул товара подставлялся автоматически при добавлении товара делаем следующее:

Этот способ имеет один изъян... Артикул идет по порядку, но имеет вид
(при длине поля =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

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

TULLIVER

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

Tuzemec

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

TULLIVER

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

Tuzemec

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

TULLIVER

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

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

Garyk01

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

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

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

TULLIVER

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

Garyk01

  • Захожу иногда
  • 22
  • 1
Я тут набросал свой вариант на основе этого решения и немного из этой темы 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
Пробовал, мне это не помогло. Пришлось удалять товар. По другому не сработало!!

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

TULLIVER

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

Garyk01

  • Захожу иногда
  • 22
  • 1
Да! Ты прав! Я проверял на том, что сам написал.
Сейчас изменил код на родной - а на родном автоматом не присваивается код (((((
Но, все равно, ты радикально поступил - можно было двумя способами прописать код :
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
Согласен, у меня просто напросто было около 40 товаров по этому не сложно было перезабить )))
А так респект тебе, за то что не обламался и решил все перепроверить ))) лови плюс!
*

TULLIVER

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

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

Garyk01

  • Захожу иногда
  • 22
  • 1
Все заново надо наверное.
файлы то переписались.

Только артикулы, после внесения изменения в файл 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

  • Живу я здесь
  • 1087
  • 18
Вот я допустим заменил

с
Код
<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

  • Живу я здесь
  • 1087
  • 18
проблему решил
в pma в virtuemart_products
затем "Структура", product_sku - Изменить,
там заменил char на INT в Numeric

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

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

Dgikar

  • Осваиваюсь на форуме
  • 159
  • 3
Так же не получилось воплотить - в артикул, ставит нули. Что сделал:
Спойлер
[свернуть]
В итоге, получил во такое:
Спойлер
[свернуть]

Попробовал код от 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

  • Давно я тут
  • 243
  • 27
  • Ня!
Еще один вариант автоматического заполнения артикула товара.
В данном варианте артикул получается вида "ВТ-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
Не совсем в тему, но частично касается.
Проблема с выводом артикула (забиваемого ручками) в корзине. Ячейки есть, но пустые.

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

Что не так?
*

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

  • Живу я здесь
  • 847
  • 35
  • Подразделение Virtuemart Украина
Ваша версия? Работает ли на стандартном шаблоне?
Virtuemart 2 работает практически без ошибок. Вы можете поддержать Сообщество, проголосовав за Virtuemart. Присоединяйтесь к нам на Facebook, Google Plus, Linkedin. Подпишитесь на Еженедельник о Virtuemart на Twitter
*

Dgikar

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

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

fsv

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

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

printf

Пример:  8 цифр, впереди дополняет нулями
Код: php
<?php printf("%08d", $my_sku); ?>
« Последнее редактирование: 27.10.2013, 17:53:51 от fsv »
Заказать разработку:    расширения Joomla  |   интерфейсы на javascript(jQuery)  |  мобильные приложения
*

Dgikar

  • Осваиваюсь на форуме
  • 159
  • 3
fsv, сорри, я, с PHP, дружу как с нашим президентом...

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

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

Заранее благодарю
Долог путь поучения, короток и успешен путь примеров (Сенека).
*

fsv

  • Moderator
  • 2525
  • 367
Не сложно, объяснить (именно кодом), как это:
прикрутить к коду от Tuzemec?
особо не вникал, попробуйте как-то так:
Код: php
$val_sku= "BT-".printf("%08d", $data);
$a получать уже не надо
Заказать разработку:    расширения Joomla  |   интерфейсы на javascript(jQuery)  |  мобильные приложения
*

Dgikar

  • Осваиваюсь на форуме
  • 159
  • 3
... попробуйте как-то так:
Код: php
$val_sku= "BT-".printf("%08d", $data);
$a получать уже не надо
:( Получатся вот что:
« Последнее редактирование: 27.10.2013, 18:40:20 от Dgikar »
Долог путь поучения, короток и успешен путь примеров (Сенека).
*

fsv

  • Moderator
  • 2525
  • 367
:( Получатся вот что:
Код: php
<?php 
echo 'BT-';
printf("%08d", $data);
?>
Заказать разработку:    расширения Joomla  |   интерфейсы на javascript(jQuery)  |  мобильные приложения
*

robert

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

количество дополнительных изображений товара на витрине и в категории

Автор kasper9820

Ответов: 2
Просмотров: 102
Последний ответ 23.08.2017, 14:45:17
от Liss
Конструктор товара

Автор tagilnext

Ответов: 0
Просмотров: 61
Последний ответ 13.08.2017, 13:07:24
от tagilnext
Сортировка товара так как мне нужно.

Автор tarkasha

Ответов: 0
Просмотров: 70
Последний ответ 02.08.2017, 11:47:53
от tarkasha
Отображение только оптового товара

Автор КСС

Ответов: 7
Просмотров: 163
Последний ответ 25.06.2017, 18:17:24
от lexxbry
Как сделать сообщение "Выбрать вариант" активной ссылкой на страницу товара VirtueMart 3?

Автор aleks_yug

Ответов: 2
Просмотров: 607
Последний ответ 29.05.2017, 16:58:27
от OutLaw1