Основной курс по Joomla
0 Пользователей и 1 Гость просматривают эту тему.
  • 2 Ответов
  • 526 Просмотров
*

aleks_yug

  • Завсегдатай
  • *****
  • 618
  • 83
Здравствуйте всем! С наступившим новым годом!
Возник, видимо, не совсем тривиальный вопрос (поскольку ответ на него по на форуме пока не нашел).
На странице категории при использовании дочерних товаров (в частности, выбирается цвет товара с использованием плагина stockablecustomfields) нет возможности кинуть товар в корзину напрямую, не заходя на страницу товара.
Выходит сообщение для пользователя: "Выберите вариант", которое формируется в файле: components/com_virtuemart/sublayouts/addtocartbtn.php следующим кодом:

echo '<span name="addtocart" class="addtocart-button-disabled" title="'.vmText::_( 'COM_VIRTUEMART_ADDTOCART_CHOOSE_VARIANT' ).'" >'.vmText::_( 'COM_VIRTUEMART_ADDTOCART_CHOOSE_VARIANT' ).'</span>';

Естественно, оно неактивно и может вогнать слишком задумчивого пользователя в полный ступор - сколько не клацай по этой "предупреждалке", никуда не переходишь... Включив голову, клиент может, конечно, перейти по ссылке, кликнув на картинку товара, или на название. А если она (голова) принципиально не включается, то просто уйдет с сайта, разозлившись на весь белый свет!
Короче, необходимо сделать это "сообщение" активной ссылкой на карточку товара. Но попытки подставить сюда иную конструкцию, например:

echo '<a href="index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $product->virtuemart_product_id . '&virtuemart_category_id=' . $product->virtuemart_category_id.'">'.vmText::_ ( 'COM_VIRTUEMART_ADDTOCART_CHOOSE_VARIANT' ).'</a>'

или иной вариант ни к чему не привели. Отправляет куда угодно, только не на страницу товара. Я недавно начал разбираться в VM3 и пока разобраться с этим моментом не вышло. Думаю, наверняка уже кто-то озадачивался подобным вопросом.
Буду весьма благодарен за подсказку!
*

aleks_yug

  • Завсегдатай
  • *****
  • 618
  • 83
Действительно, просто слабо знаком с vm3...
Все достаточно просто: в данном конкретном случае нужно редактировать не addtocartbtn.php а addtocartbar.php (естественно, не в самом компоненте, а HTML шаблона).
Правда, закомментировать в addtocartbtn
echo '<span name="addtocart" class="addtocart-button-disabled" title="'.vmText::_( 'COM_VIRTUEMART_ADDTOCART_CHOOSE_VARIANT' ).'" >'.vmText::_( 'COM_VIRTUEMART_ADDTOCART_CHOOSE_VARIANT' ).'</span>';
в этом случае придется.
А затем добавить else к коду в addtocartbar.php
Код
if(!empty($addtoCartButton)){ ?>
    <span class="addtocart-button">
    <?php echo $addtoCartButton ?>
    </span> <?php
} ?>
Будет так:
Код
if(!empty($addtoCartButton)){ ?>
    <span class="addtocart-button">
    <?php echo $addtoCartButton ?>
    </span> <?php
} else {
    $link = 'index.php?option=com_virtuemart&view=productdetails&virtuemart_category_id=' . $product->virtuemart_category_id.'&virtuemart_product_id=' . $product->virtuemart_product_id. '';
    echo '<a class="addtocart-button-disabled" href ="' . JRoute::_($link). '">' . vmText::_ ('COM_VIRTUEMART_ADDTOCART_CHOOSE_VARIANT'). '</a>';
}
И все...
Предупреждаю - такой вариант функционален при использовании плагина stockablecustomfields (дочерние товары в данном случае создаются при помощи его, в частности - выбор вариантов цвета). При использовании штатного настраиваемого поля multi variant в этом нет необходимости. (если не ошибаюсь).
Короче, сам спросил - сам ответил...
Всем спасибо!
« Последнее редактирование: 05.01.2016, 17:01:41 от aleks_yug »
*

OutLaw1

  • Захожу иногда
  • **
  • 15
  • 0
Чувак + в репу, спустя год, ты мне серьезно помог, только я немного подправил код под себя и вуаля имеем разные варианты кнопки «купить» («добавить в корзину», «перейти в товар» и просто надпись «выберите вариант»).
Я ещё добавил условие в файле addtocartbtn.php
Код
if($viewData['orderable']) {
echo '<input type="submit" name="addtocart" class="addtocart-button" value="'.vmText::_( 'COM_VIRTUEMART_CART_ADD_TO' ).'" title="'.vmText::_( 'COM_VIRTUEMART_CART_ADD_TO' ).'" />';
} else{
$view = JRequest::getVar('view', null);
if ($view == "category"){} else {
    echo '<span name="addtocart" class="addtocart-button-disabled" title="'.vmText::_( 'COM_VIRTUEMART_ADDTOCART_CHOOSE_VARIANT' ).'" >'.vmText::_( 'COM_VIRTUEMART_ADDTOCART_CHOOSE_VARIANT' ).'</span>';
}}

И тем самым в каталоге одно, а в карточке другое
У меня дочерки как раз с помощью стандартных multivariant, но всё работает