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

John_Flores

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Здравствуйте.  Столкнулся с проблемой, что при нажатии добавить в корзину, не всплывает окно что товар был добавлен и вообще визуально не как не реагирует на нажатие, но после обновления страницы показывает что товар был добавлен. Подскажите пожалуйста как включить эту функцию, что при нажатии на кнопку добавить в корзину была какая то видимая реакция, что товар добавлен. В идеале конечно лучше бы чтоб всплывало сообщение что товар добавлен, но если это сложно то хотя бы чтоб перенаправляло сразу в корзину. Заранее благодарю!

Сайт https://valfex.kg/new/index.php/gibkaya-podvodka-i-shlangi - по этой ссылке можете глянуть суть проблемы
*

John_Flores

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Re: Не всплывает корзина K2 store
« Ответ #1 : 18.09.2020, 08:54:33 »
В принципе я так понял что уже в коде это реализовано, но почему то не срабатывает.

<!-- Кнопка добавить в корзину -->

Код
	<?php if($inventoryCheck->can_allow || $inventoryCheck->backorder):?>
<div id='add_to_cart_<?php echo $item->product_id; ?>' class="k2store_add_to_cart" style="display: block;">
        <input type="hidden" id="k2store_product_id" name="product_id" value="<?php echo $item->product_id; ?>" />

        <?php echo JHTML::_( 'form.token' ); ?>
        <input type="hidden" name="return" value="<?php echo base64_encode( JUri::getInstance()->toString() ); ?>" />
        <input value="<?php echo JText::_('K2STORE_ADD_TO_CART'); ?>" type="submit" class="k2store_cart_button btn btn-primary" />
    </div>
   <?php if($inventoryCheck->backorder && $inventoryCheck->can_allow == 0):?>
   <div class="backorder_info alert alert-info">
    <?php echo JText::_('K2STORE_ADDTOCART_BACKORDER_ALERT'); ?>
   </div>
   <?php endif;?>
     <?php else: ?>
     <div class="k2store_no_stock">
      <input value="<?php echo JText::_('K2STORE_OUT_OF_STOCK'); ?>" type="button" class="k2store_cart_button k2store_button_no_stock btn btn-warning" />
     </div>
<?php endif; ?>

Ниже описанный блок я так понял отвечает за всплывающее окно, но оно не всплывает :) Если убрать стиль display: none; то окно всегда расположенно под кнопкой, не зависимо добавлен товар или нет

Код
         <div class="k2store-notification" style="display: none;">
<div class="message"></div>
<div class="cart_link"><a class="btn btn-success" href="<?php echo $action; ?>"><?php echo JText::_('K2STORE_VIEW_CART')?></a></div>
<div class="cart_dialogue_close" onclick="jQuery(this).parent().slideUp().hide();">X</div>
</div>
« Последнее редактирование: 18.09.2020, 08:59:07 от John_Flores »
*

John_Flores

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Re: Не всплывает корзина K2 store
« Ответ #2 : 22.09.2020, 10:43:01 »
Ошибка оказалась в javascript файлах. В файле расположенном в папке media/jui/js/jquery.min.js а так же в файле media/k2store/js/k2store.js

Ошибка заключается в следующем: При вызове всплывающего окна на сайте, появляется новая ошибка "POST 500 (Internal server error)" в консоле браузера (на скрине расположенном внизу видна эта ошибка)


Помогите пожалуйста исправить эти ошибки, чтоб всплывающие окна не блокировались. Просто сам с js кодом плохо знаком, и не могу понять почему выдает там ошибки.  !!!???!!!
*

sivers

  • Завсегдатай
  • 1820
  • 247 / 0
Re: Не всплывает корзина K2 store
« Ответ #3 : 22.09.2020, 21:21:40 »
Там скорее всего проблема не с JS, а с K2store - в методе добавления (add). Потому что ругань идет на использование $this там, где его нет (0 - Using $this when not in object context).
Смотрите логи. Ищите метод add в модели (или контроллере) mycart и смотрите что там не так с использованием $this.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

John_Flores

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Re: Не всплывает корзина K2 store
« Ответ #4 : 24.09.2020, 08:40:27 »
Включил отображение ошибок на сайте, и отобразило:
Код
Warning: Declaration of K2StoreControllerMyCart::display() should be compatible with K2StoreController::display($cachable = false, $urlparams = Array) in /var/www/user30440/data/www/valfex.kg/new/components/com_k2store/controllers/mycart.php on line 21
Как раз как вы и говорили что в контроллерах дело, но посмотрев код, так и не понял в чем там проблема, может Вы что увидите? А то уже неделю бьюсь с этой ошибкой и не как не могу запустить сайт  *ОХ-Х-Х*

Код файла ../controllers/mycart.php публикую ниже:
Строка 21 на которую ругается система пишется так: class K2StoreControllerMyCart extends K2StoreController

Код
<?php
/*------------------------------------------------------------------------
# com_k2store - K2 Store
# ------------------------------------------------------------------------
# author    Ramesh Elamathi - Weblogicx India http://www.weblogicxindia.com
# copyright Copyright (C) 2012 Weblogicxindia.com. All Rights Reserved.
# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
# Websites: http://k2store.org
# Technical Support:  Forum - http://k2store.org/forum/index.html
-------------------------------------------------------------------------*/



// no direct access
defined('_JEXEC') or die('Restricted access');

jimport('joomla.application.component.controller');
//load the cart data
require_once (JPATH_COMPONENT.'/helpers/cart.php');
require_once (JPATH_ADMINISTRATOR.'/components/com_k2store/library/tax.php');
class K2StoreControllerMyCart extends K2StoreController // НА ЭТУ СТРОЧКУ РУГАЕТСЯ ЕСЛИ ОТОБРАЗИТЬ ОШИБКИ
{

private $_data = array();

var $tax = null;

public function __construct($config = array())
{
parent::__construct($config);
$this->tax = new Tax();
}

function display() {

//initialist system objects
$app = JFactory::getApplication();
$session=  JFactory::getSession();
$params = JComponentHelper::getParams('com_k2store');
$view = $this->getView( 'mycart', 'html' );
$view->set( '_view', 'mycart' );
//get post vars
$post = $app->input->getArray($_POST);

$model = $this->getModel('mycart');

        if (K2StoreHelperCart::hasProducts()) {
        $items = $model->getDataNew();
        } else {
        $items = array();
        }

        //coupon
        $post_coupon = $app->input->getString('coupon', '');
        //first time applying? then set coupon to session
        if (isset($post_coupon) && !empty($post_coupon)) {
        try {
        if($this->validateCoupon()) {
        $session->set('coupon', $post_coupon, 'k2store');
        $msg = JText::_('K2STORE_COUPON_APPLIED_SUCCESSFULLY');
        }
        } catch(Exception $e) {
        $msg = $e->getMessage();
        }
        $this->setRedirect( JRoute::_( "index.php?option=com_k2store&view=mycart"), $msg);
        }

        if ($post_coupon) {
        $view->assign( 'coupon', $post_coupon);
        } elseif ($session->has('coupon', 'k2store')) {
        $view->assign( 'coupon', $session->get('coupon', '', 'k2store'));
        } else {
        $view->assign( 'coupon', '');
        }

$cartobject = $this->checkItems($items, $params->get('show_tax_total'));

$totals = $this->getTotals();

$view->assign( 'cartobj', $cartobject);
$view->assign( 'totals', $totals);
$view->assign( 'model', $model);
$view->assign( 'params', $params );
if(isset($post['return'])) {
$view->assign( 'return', $post['return']);
}
$view->set( '_doTask', true);
$view->set( 'hidemenu', true);
$view->setModel( $model, true );
$view->setLayout( 'default');
$view->display();

}


function add() {
$app = JFactory::getApplication();
header('Content-Type: text/html; charset=utf-8');
$params = JComponentHelper::getParams('com_k2store');
$model = $this->getModel('mycart');
require_once(JPATH_COMPONENT.'/helpers/cart.php');
$error = array();
$json = array();
//get the product id
$product_id = $app->input->getInt('product_id', 0);

//no product id?. return an error
if(empty($product_id)) {
$error['error']['product']=JText::_('K2STORE_ADDTOCART_ERROR_MISSING_PRODUCT_ID');
echo json_encode($error);
$app->close();
}


//Ok. we have a product id. so proceed.
//get the quantity
$quantity = $app->input->get('product_qty');
if (isset($quantity )) {
$quantity = $quantity;
} else {
$quantity = 1;
}

//get the product options
$options = $app->input->get('product_option', array(0), 'ARRAY');
if (isset($options )) {
$options =  array_filter($options );
} else {
$options = array();
}
$product_options = $model->getProductOptions($product_id);

//iterate through stored options for this product and validate
foreach($product_options as $product_option) {
if ($product_option['required'] && empty($options[$product_option['product_option_id']])) {
$json['error']['option'][$product_option['product_option_id']] = JText::sprintf('K2STORE_ADDTOCART_PRODUCT_OPTION_REQUIRED', $product_option['option_name']);
}
}

//validation is ok. Now add the product to the cart.
if(!$json) {
K2StoreHelperCart::add($product_id, $quantity, $options);
$product_info = K2StoreHelperCart::getItemInfo($product_id);
$cart_link = JRoute::_('index.php?option=com_k2store&view=mycart');
$json['success'] = true;
$json['successmsg'] = $product_info->product_name.JText::sprintf('K2STORE_ADDTOCART_ADDED_TO_CART');

$total =  K2StoreHelperCart::getTotal();
$product_count = K2StoreHelperCart::countProducts();
//get product total
$json['total'] = JText::sprintf('K2STORE_CART_TOTAL', $product_count, K2StorePrices::number($total));
//get cart info

//do we have to redirect to the cart
if($params->get('popup_style', 1)==3) {
$json['redirect'] = $cart_link;
}


} else {

//do we have to redirect
// $url = 'index.php?option=com_k2&view=item&id='.$product_id;
// $json['redirect'] = JRoute::_($url);
}
echo json_encode($json);
$app->close();
}


function ajaxmini() {
header('Content-Type: text/html; charset=utf-8');
//initialise system objects
$app = JFactory::getApplication();
$params = JComponentHelper::getParams('com_k2store');

$model = $this->getModel('mycart');
if(K2StoreHelperCart::hasProducts()) {
$totals = $this->getTotals();
$product_count = K2StoreHelperCart::countProducts();
$html = JText::sprintf('K2STORE_CART_TOTAL', $product_count, K2StorePrices::number($totals['total']));
} else {
$html = JText::_('K2STORE_NO_ITEMS_IN_CART');
}
echo $html;
$app->close();
}

/**
     *
     * @return unknown_type
     */
    function update()
    {
        $app = JFactory::getApplication();
        $params = JComponentHelper::getParams('com_k2store');
        $model = $this->getModel('mycart');

        $key = $app->input->getString('key');

        $quantities = $app->input->get('quantity', array(0), 'ARRAY');

    $msg = JText::_('K2STORE_CART_UPDATED');

        $remove = $app->input->get('remove');
        if ($remove)
        {
        $model->remove($key);
        }
        else
        {
            foreach ($quantities as $key=>$value)
            {
               $model->update($key, $value);
            }
        }

        $popup = JRequest::getVar('popup');
        if($popup && $remove) {
$items = $model->getDataNew();

$cartobject = $this->checkItems($items, $params->get('show_tax_total'));

$view = $this->getView( 'mycart', 'html' );
$view->set( '_view', 'mycart' );
$view->set( '_doTask', true);
$view->set( 'hidemenu', true);

if($popup==1) {
$view->setLayout( 'ajax');
} else {
$view->setLayout( 'default');
}
$view->setModel( $model, true );
$totals = $this->getTotals();

$view->assign( 'cartobj', $cartobject);
$view->assign( 'totals', $totals);
$view->assign( 'params', $params );
$view->assign( 'popup', $popup );
$view->assign( 'remove', $remove);

ob_start();
$view->display();
$html = ob_get_contents();
ob_end_clean();
echo $html;
$app->close();
}

        $redirect = JRoute::_( "index.php?option=com_k2store&view=mycart");
        $this->setRedirect( $redirect, $msg);
    }

    /**
     *
     * Method to check config, user group and product state (if recurs).
     * Then get right values accordingly
     * @param array $items - cart items
     * @param boolean - config to show tax or not
     * @return object
     */
    function checkItems( &$items, $show_tax=false)
    {
    if (empty($items)) { return array(); }
$params = JComponentHelper::getParams('com_k2store');

    $this->_data['products'] = array();

    foreach ($items as $product) {
    $product_total = 0;

    foreach ($items as $product_2) {
    if ($product_2['product_id'] == $product['product_id']) {
    $product_total += $product_2['quantity'];
    }
    }

    //options
    $option_data = array();

    foreach ($product['option'] as $option) {

    $value = $option['option_value'];
    $option_data[] = array(
    'name'  => $option['name'],
    'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20). '..' : $value)
    );
    }

    // Display prices
    $price = $this->tax->calculate($product['price'], $product['tax_profile_id'], $params->get('show_tax_total'));

    $total = $this->tax->calculate($product['price'], $product['tax_profile_id'], $params->get('show_tax_total')) * $product['quantity'];

    $tax_amount = '';
    $this->_data['products'][] = array(
    'key'      => $product['key'],
    'product_id'     => $product['product_id'],
    'product_name'     => $product['name'],
    'product_model'    => $product['model'],
    'product_options'   => $option_data,
    'quantity' => $product['quantity'],
    // 'stock'    => $product['stock'] ? true : !(!$this->config->get('config_stock_checkout') || $this->config->get('config_stock_warning')),
    'tax_amount'    => $tax_amount,
    'price'    => $price,
    'total'    => $total
    );

    }
    $cartObj = JArrayHelper::toObject($this->_data['products']);
    return $cartObj;
    }

    function validateCoupon() {

    $app = JFactory::getApplication();
    $coupon_info = K2StoreHelperCart::getCoupon($app->input->getString('coupon', ''));

    if($coupon_info ) {
    return true;
    } else {
throw new Exception(JText::_('K2STORE_COUPON_INVALID'));
    return false;
    }


    }

    function getTotals() {
$app = JFactory::getApplication();
    $session = JFactory::getSession();
$model = $this->getModel('mycart');
$products =$model->getDataNew();
    $total_data = array();
    $total = 0;
    //sub total
    $total_data['subtotal'] = K2StoreHelperCart::getSubtotal();
    $total +=$total_data['subtotal'];
    //taxes
    $tax_data = array();
    $taxes = K2StoreHelperCart::getTaxes();

    //coupon
if($session->has('coupon', 'k2store')) {
    $coupon_info = K2StoreHelperCart::getCoupon($session->get('coupon', '', 'k2store'));

    if ($coupon_info) {
    $discount_total = 0;

    if (!$coupon_info->product) {
    $sub_total =K2StoreHelperCart::getSubTotal();
    } else {
    $sub_total = 0;
    foreach ($products as $product) {
    if (in_array($product['product_id'], $coupon_info->product)) {
    $sub_total += $product['total'];
    }
    }
    }

    if ($coupon_info->value_type == 'F') {
    $coupon_info->value = min($coupon_info->value, $sub_total);
    }

    foreach ($products as $product) {
    $discount = 0;

    if (!$coupon_info->product) {
    $status = true;
    } else {
    if (in_array($product['product_id'], $coupon_info->product)) {
    $status = true;
    } else {
    $status = false;
    }
    }

    if ($status) {
    if ($coupon_info->value_type == 'F') {
    $discount = $coupon_info->value * ($product['total'] / $sub_total);
    } elseif ($coupon_info->value_type == 'P') {
    $discount = $product['total'] / 100 * $coupon_info->value;
    }

    if ($product['tax_profile_id']) {

    $tax_rates = $this->tax->getRates($product['total'] - ($product['total'] - $discount), $product['tax_profile_id']);
    foreach ($tax_rates as $tax_rate) {
    // if ($tax_rate['value_type'] == 'P') {
    $taxes[$tax_rate['taxrate_id']] -= $tax_rate['amount'];
    // }
    }
    }
    }

    $discount_total += $discount;
    }

    $total_data['coupon'] = array(
    'title'      => JText::sprintf('K2STORE_COUPON_TITLE', $session->get('coupon', '', 'k2store')),
    'value'      => -$discount_total
    );

    //$total_data['coupon'] = $coupon_data;
    //less the coupon discount in the total
    $total -= $discount_total;
    }

}

    //taxes
    foreach ($taxes as $key => $value) {
    if ($value > 0) {
    $tax_data[]= array(
    'title'      => $this->tax->getRateName($key),
    'value'      => $value
    );
    $total += $value;
    }
    }
    $total_data['taxes'] = $tax_data;

    $total_data['total'] = $total;

    return $total_data;

    }
}
« Последнее редактирование: 24.09.2020, 08:44:14 от John_Flores »
*

sivers

  • Завсегдатай
  • 1820
  • 247 / 0
Re: Не всплывает корзина K2 store
« Ответ #5 : 24.09.2020, 08:50:33 »
может Вы что увидите?
Он говорит, что ваш метод display по составу аргументов не совпадает с родительским. А должен. добавьте в объявление своего display требуемые аргументы, чтоб получилось:
вместо
Код
function display() {
вот это:
Код
function display($cachable = false, $urlparams = array()) {
и больше ничего не меняйте.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

John_Flores

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Re: Не всплывает корзина K2 store
« Ответ #6 : 24.09.2020, 10:40:09 »
Спасибо пользователю Sivers, помог через личку) :D
Проблема ошибки 500 оказалось в файле com_k2store/helpers/cart.php, там нужно строку $this->data = array(); заменить на if(isset($this)) $this->data = array();
и ошибка 500 исчезает, и при нажатии на кнопку "В корзину" добавляется товар и идет переотправка в корзину.
*

John_Flores

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Re: Не всплывает корзина K2 store
« Ответ #7 : 24.09.2020, 11:04:04 »
А чтобы при добавлении товара было всплывающее окно, достаточно в админке, в настройках K2Store в блоке Cart Settings - сменить в пункте Cart popup style - настройку с "Redirect to default Cart viev" на "Small".

До того как поправили выше описанные ошибки, эти махинации в настройках не как не помогали. А теперь все робит, благодаря пользователю Sivers!)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

J2 Store + K2 интеграция

Автор lgmax

Ответов: 0
Просмотров: 543
Последний ответ 09.03.2020, 14:46:16
от lgmax
k2 store не активны кнопки

Автор rwgusev

Ответов: 5
Просмотров: 1160
Последний ответ 22.01.2018, 15:03:28
от Andrey Spiridonov
Как добавить слово "Цена:" к отображению цены в K2 Store?

Автор Emiltito

Ответов: 2
Просмотров: 1097
Последний ответ 14.12.2017, 18:42:25
от bybus
K2 Store уведомления по почте

Автор kapustin

Ответов: 1
Просмотров: 974
Последний ответ 03.10.2017, 15:00:14
от Parahot
K2 Store - не получается сохранить материал K2

Автор Parahot

Ответов: 1
Просмотров: 558
Последний ответ 28.09.2017, 15:59:16
от Parahot