VM 2.x Плагин пакетной продажи Catproduct

Ну вот у самого мысли уже закончились... Поэтому и обращаюсь к всемирному разуму, может кто и подскажет. Суть проблемы в следующем:
Имеем ИМ на базе J2.5.28 +VM2.6.16. В настройках установлено, что можно заказывать все, без контроля и прочего. Для вывода дочерних товаров используется плагин catproduct. С недавнего времени возникла проблема - сильно возрос процент заказа товаров, отсутствующих на складе. Посему сделал в категориях и в карточке товара блокировку кнопки "Купить" посредством нехитрой конструкции:
Код:
<?php }
if($product->product_in_stock<=0) {?>
<div>
Нет на складе
</div>
<?php }?>
Работает просто превосходно. Но одна незадача - если товары выводятся дочерними, то доступны все. Долго бился, чтобы обернуть таким же условием и в плагине, но пока ничего не получилось. Может кто может подсказать?
Есть еще два варианта включаемых в конфиге ВМ, но они не подходят, к сожалению:
1. "Не показывать товар, если дочерние товары отсутствуют на складе." (Отсутствующие товары просто скрываются, что не очень хорошо в плане индексации).
2. "Показывать 'Известить меня' вместо кнопки 'Добавить в корзину'" (возникают проблемы с заказами, если осталась 1 штука товара и его заказывают двое, то у того, кто нажал кнопку "заказать" чуть позже, заказ просто не отправляется...)

Вот как-то так... Получилось многаБукафф, но как смог...

Буду рад любой помощи)))
 
напишите, как Вы именно хотели бы сделать?
в шаблоне(plugins/vmcustom/catproduct/catproduct/tmpl/default.php) наличие проверяется след. условием
$check_stock == 1 && $product['child']['product_in_stock'] > 0 || $check_stock == 0
может быть Вам просто сделать $product['child']['product_in_stock'] > 0
В моем случае если товара не было на складе, то цены не было, соотвественно я вместо цены выводила Под заказ.
 
Так вот это условие и проверяется, если в конфиге ВМ выбран один из двух вариантов, о которых я говорил. Но мне они не подходят к сожалению((((.
В указанном файле есть вывод:
Код:
            if ($stockhandle == 'disableadd') {// if notify button
                echo '<td align="middle" colspan="3">';
                echo '<a href="'.JURI::base().'/index.php?option=com_virtuemart&view=productdetails&layout=notify&virtuemart_product_id='.$product['child']['virtuemart_product_id'].'" class="notify" iswrapped="1">'.JText::_('CATPRODUCT_NOTIFYME').'</a>';
                echo '</td>';
            }
            else {// if no stock
                echo '<td align="middle" colspan="3"><span style="color:red;">'.JText::_('CATPRODUCT_OUTOFSTOCK').'</span></td>';
            }
первая строка - вывод "уведомит меня", вторая - "нет на складе". Но это не принципиально. Мне бы заменить условие if ($stockhandle == 'disableadd') своим и все было бы в шоколаде. Но перебрал кучу вариантов и ни один не работает((((
 
Попробуйте так
1.заменить
if ($check_stock == 1 && $product['child']['product_in_stock'] > 0 || $check_stock == 0){ (у меня это 380 строка) на
if ($product['child']['product_in_stock'] > 0){
2. заменить
if ($stockhandle == 'disableadd') {// if notify button
echo '<td align="middle" colspan="3">';
echo '<a href="'.JURI::base().'/index.php?option=com_virtuemart&view=productdetails&layout=notify&virtuemart_product_id='.$product['child']['virtuemart_product_id'].'" class="notify" iswrapped="1">'.JText::_('CATPRODUCT_NOTIFYME').'</a>';
echo '</td>';
}
else {// if no stock
echo '<td align="middle" colspan="3"><span style="color:red;">'.JText::_('CATPRODUCT_OUTOFSTOCK').'</span></td>';
}


на
echo '<td align="middle" colspan="3">Нет на складе</td>';
 
Во, именно эту строку я и просмотрел))) Это условие встречается в нескольких местах, вот я нужного и не заметил))))
Так что достаточно в 380-й строе прописать if ($product['child']['product_in_stock'] > 0){ и все начинает работать, как надо))) Огромное спасибо за подсказку!!!!
 
Во, именно эту строку я и просмотрел))) Это условие встречается в нескольких местах, вот я нужного и не заметил))))
Так что достаточно в 380-й строе прописать if ($product['child']['product_in_stock'] > 0){ и все начинает работать, как надо))) Огромное спасибо за подсказку!!!!
пожалуйста, я еще в первом сообщении написала, что просто замените на свое условие))))
 
Вот блинн.... Проблема неожиданно проявилась... Имеем три дочерних товара, первый отсутствует на складе. При выборе второго для покупки в корзину попадает первый, при выборе третьего - второй, а третий получается выбрать никак нельзя(((( Рано я обрадовался((((

Update:
Сам же нашел решение проблемы... Строка
Код:
if ($check_stock == 1 && $product['child']['product_in_stock'] > 0 || $check_stock == 0){
встречается два раза - 175 и 380, я заменил только в строке 380, а надо и в 175. После замены все работает корректно.

Может кому пригодится))))
 
Последнее редактирование:
На вкладке "Настраиваемые поля" в верху есть чекбокс "Перезаписывать родительские значения плагина", включите его, тогда настр. поля в дочених будут сохраняться.
Посмотреть вложение 58316
Здравствуйте ! Не подскажите, как сделать , чтоб при импорте через CSVI у дочерних товаров в настраиваемых полях VM2 автоматом включалась галка - Перезаписывать родительские значения плагина ? Нигде не могу найти..
 
Здравствуйте ! Не подскажите, как сделать , чтоб при импорте через CSVI у дочерних товаров в настраиваемых полях VM2 автоматом включалась галка - Перезаписывать родительские значения плагина ? Нигде не могу найти..
Настраиваете плагин на сайте для одного товара, затем делаете экспорт поля custom_param и если для всех товаров настройки плагина одинаковые, то переносите данные из этого поля в файл импорта. По крайней мере у меня таким макаром из 1С товары подтягиваются дочерними под родительские и руками ничего менять или вбивать не надо.
 
Настраиваете плагин на сайте для одного товара, затем делаете экспорт поля custom_param и если для всех товаров настройки плагина одинаковые, то переносите данные из этого поля в файл импорта. По крайней мере у меня таким макаром из 1С товары подтягиваются дочерними под родительские и руками ничего менять или вбивать не надо.
Спасибо ! Помогло ! Как ни странно, но руками прописать без присвоения имени не получалось,
а если присваивать имя, то товар как бы перестаёт быть дочерним что ли ( он появляется в новинках , а это вааще не нужно )
Сделал так - присвоил дочернему имя, настроил поля как надо , экспортировал ... А при импорте - просто удалил названия и всё вышло ! Спс ещё раз !
 
Назад
Сверху