Warning: Invalid argument supplied for foreach() in /home/dentkz/public_html/components/com_joomlakassa/views/cart/tmpl/default_items.php on line 62
Ошибка в Корзине.
<?php
/**
* @version $Id: views/cart/tmpl/default_items.php
* @package Joomla.Site
* @subpackage com_joomlakassa
* @copyright Copyright (C) 2007 - 2014 Open Source Matters, Inc. All rights reserved.
* @license Commercial Software; see LICENSE.txt
* @author GeneticsPro Eugene Gal'chuk - http://www.geneticspro.net/, admin@geneticspro.net
*/
// no direct access
defined('_JEXEC') or die;
// Если продуктов нет в корзине
if (!$this->cart) {
echo '<h3>'. JText::_('COM_JOOMLAKASSA_CART_NO_PRODUCTS').'</h3>';
return false;
}
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers');
$app = JFactory::getApplication();
$params = $this->params;
$total = 0; // Общая сумма платежа
// добавление javascript и CSS к заголовку документа
JHtml::_('stylesheet', 'components/com_joomlakassa/assets/default.css');
if ($params->get('include_bootstrap', 1) && $params->get('cart_layout', 0)) {
JHtml::_('bootstrap.framework');
JHtml::_('bootstrap.loadcss');
JHtml::_('stylesheet', 'components/com_joomlakassa/assets/bootstrap/css/bootstrap.jk.css');
}
else {
JHtml::_('gswork.jquery');
}
// стиль текста стоимости (Bootstrap)
$classCost = ($params->get('textCostProd', 'text-info'))? $params->get('textCostProd', 'text-info') : 'price';
?>
<div class="jk-cart-items" id="jk">
<!--ajaxBusy-->
<span id="jk_ajaxBusy">
<img src="components/com_joomlakassa/assets/images/loading2.gif">
</span>
<table class="table">
<?php if ($params->get('showCartTbHead', 1)) : ?>
<thead>
<tr>
<th>#</th>
<th colspan="2"><?php echo JText::_('COM_JOOMLAKASSA_GRID_TITLE')?></th>
<?php if ($params->get('calculate', 1)) : ?>
<th style="text-align:center"><?php echo JText::_('COM_JOOMLAKASSA_CART_NUMBER')?></th>
<?php endif; ?>
<th style="text-align:center"><?php echo JText::_('COM_JOOMLAKASSA_GRID_COST')?></th>
</tr>
</thead>
<?php endif; ?>
<tbody id="jkCartProducts">
<?php
foreach ($this->cart as $i => $cart) :
foreach ($this->product as $product) :
if ($product->id == $cart['id']) :
// Ссылка на продукт
$productSlug = $product->alias ? ($product->id.':'.$product->alias) : $product->id;
$linkProduct = JRoute::_(JoomlakassaHelperRoute::getProductRoute($productSlug, $product->catid));
// Сумма платежа
if ($cart['cost']) {
$payment_amount = $cart['cost'];
} else {
if ($product->discount && $product->amount_discount) $payment_amount = $product->amount_discount; // стоимость со скидкой
else $payment_amount = $product->payment_amount; // стоимость
}
// Общая сумма платежа
$total += $payment_amount * $cart['count'];
?>
<tr id="jkItemProd_<?php echo $i ?>">
<!-- Удалить продукт -->
<td class="jk-td_del_button">
<a title="<?php echo JText::_('COM_JOOMLAKASSA_CART_DELETE_TITLE')?>"
href="#" class="jk-del_button text-error lead" id="jkDel-<?php echo $i ?>">×</a>
</td>
<!-- Изображение продукта -->
<td class="jk-prod_image">
<?php // ИЗОБРАЖЕНИЕ
if ($product->image && $params->get('show_cart_image', 1)) :
if ($params->get('imgLinkCartName', 1)) : ?>
<a href="<?php echo $linkProduct ?>" target="_blank">
<?php echo JHtml::_('gswork.imgsize', $product->image, $params->get('cart_image_height', 90), $product->name)?>
</a>
<?php else :
echo JHtml::_('gswork.imgsize', $product->image, $params->get('cart_image_height', 90), $product->name);
endif;
endif; ?>
</td>
<!-- Информация о продукте -->
<td class="title">
<?php // ИМЯ ПРОДУКТА ?>
<<?php echo $this->params->get('titlesProdCart', 'h4')?>>
<?php
// имя как ссылка
if ($params->get('prodLinkCartName', 1)) : ?>
<a href="<?php echo $linkProduct ?>" target="_blank">
<?php echo $product->name ?>
</a>
<?php else :
echo $product->name;
endif;
// если есть варианты продукта
if ($cart['text']) : ?>
<br /><small><?php echo $cart['text'] ?></small>
<?php endif; ?>
</<?php echo $this->params->get('titlesProdCart', 'h4')?>>
<div class="baggage-price jk-unit">
<?php // Стоимость и скидка ?>
<span class="<?php echo $classCost ?>">
<?php echo JHtml::_('gsWork.costDisplay', $payment_amount, false, $this->currency->cours, $this->currency->symbol)?>
</span>
</div>
<div class="baggage-payment_desc jk-unit">
<?php // Описание платежа
if ($params->get('show_prod_cart_desc', 1)) echo $product->payment_desc; ?>
</div>
</td>
<?php if ($params->get('calculate', 1)) :
$jkNumButton = ($params->get('increase'))? ' btn-'.$params->get('increase') : ''; ?>
<!-- Количество -->
<td class="number" style="text-align:center">
<input id="jkNumInput_<?php echo $i ?>" class="input-mini" type="text"
style="text-align:center; width:25px;" value="<?php echo $cart['count'] ?>" /><br />
<input id="hiddenLimit_<?php echo $i ?>" type="hidden" value="<?php echo $product->limit ?>" />
<button class="jk-num btn btn-small<?php echo $jkNumButton ?>"
id="jkNumButton-<?php echo $i ?>" title="<?php echo JText::_('COM_JOOMLAKASSA_CART_RECALCULATE')?>">
<?php echo JText::_('COM_JOOMLAKASSA_CART_PLUS_MINUS')?>
</button>
</td>
<?php endif; ?>
<!-- Стоимость -->
<td class="cost" style="text-align:center">
<span class="jk-cost lead <?php echo $classCost ?>">
<span id="jkAmount_<?php echo $i ?>"><?php echo JHtml::_('gsWork.costDisplay', $payment_amount, $cart['count'], $this->currency->cours)?></span><?php echo $this->currency->symbol ?>
<input id="hiddenAmount_<?php echo $i ?>" type="hidden" value="<?php echo $payment_amount / $this->currency->cours ?>" />
</span>
</td>
</tr>
<?php
endif;
endforeach;
endforeach;
?>
<tr>
<td colspan="3">
<?php
// Оформить заказ
$checkoutClass = ($params->get('buy'))? ' btn-'.$params->get('buy') : '';
$checkoutStyle = '';
if ($total < $params->get('amount_limit', 0)) {
$checkoutStyle = 'display:none;';
$app->enqueueMessage(JText::_('COM_JOOMLAKASSA_AMOUNT_LIMIT_CART').'<br />'.
JText::sprintf('COM_JOOMLAKASSA_AMOUNT_LIMIT',
JHtml::_('gsWork.costDisplay', $params->get('amount_limit', 0), false,
$this->currency->cours, $this->currency->symbol)), 'Notice');
}
?>
<p>
<?php
// onClick URL
$itemId = JRequest::getInt('Itemid');
$onClickUrl = 'index.php?option=com_joomlakassa&view=order&Itemid='.$itemId;
?>
<button id="jkCheckout" class="btn<?php echo $checkoutClass ?>" type="button"
style="<?php echo $checkoutStyle ?>"
onClick="window.open('<?php echo JURI::base().$onClickUrl ?>', '_top')">
<?php echo JText::_('COM_JOOMLAKASSA_CART_BUY_ALL')?>
</button>
</p>
</td>
<?php if ($params->get('calculate', 1)) : ?>
<?php endif; ?>
<td colspan="2" style="text-align:center">
<p class="jk-cost lead <?php echo $classCost ?>">
<span id="jkTotalAmount"><?php echo JHtml::_('gsWork.costDisplay', $total, false, $this->currency->cours)?></span><?php echo $this->currency->symbol ?>
</p>
</td>
</tr>
</tbody>
</table>
<?php
// Связанные продукты
if ($this->related && $params->get('sum_related_line', 28)) : ?>
<h3>
<?php echo JText::_('COM_JOOMLAKASSA_ADD_TO_ORDER')?>
</h3>
<ul class="jk-baggage-related">
<?php foreach ($this->related as $related) :
// Ссылка на продукт
$relatedSlug = $related->alias ? ($related->id.':'.$related->alias) : $related->id;
$linkRelated = JRoute::_(JoomlakassaHelperRoute::getProductRoute($relatedSlug, $related->catid));
// стоимость
$relPayment = JHtml::_('gsWork.costDisplay', $related->payment_amount, false, $this->currency->cours, $this->currency->symbol);
// стоимость со скидкой
$relDiscount = JHtml::_('gsWork.costDisplay', $related->amount_discount, false, $this->currency->cours, $this->currency->symbol);
?>
<li class="well well-small" style="width: <?php echo $params->get('sum_related_line', 28)?>%">
<?php
// изображение
if ($related->image) {
echo JHtml::_('gswork.imgsize', $related->image, 50, $related->name);
}
// имя
$nameOverflow = ($params->get('titlesOverflow', 0))?
' overflow: hidden; text-overflow: ellipsis; white-space: nowrap;' : '';
?>
<p style="font-weight:bold;<?php echo $nameOverflow ?>">
<a href="<?php echo $linkRelated ?>" target="_blank">
<?php echo $related->name ?>
</a>
</p>
<p class="baggage-price">
<?php
// если есть скидка
if ($related->discount) :
// стиль текста стоимости (Bootstrap)
$relClassCost = ($params->get('product_layout') == 'bootstrap' && $params->get('textCostProd','text-info'))? $params->get('textCostProd','text-info') : 'related-new-price';
$relCost = $related->amount_discount;
?>
<span class="related-old-price" style="text-decoration: line-through;"><?php echo $relPayment ?></span>
<span class="<?php echo $relClassCost ?>" style="font-weight:bold;"><?php echo $relDiscount ?></span>
<?php else :
// стиль текста стоимости (Bootstrap)
$relClassCost = ($params->get('product_layout') == 'bootstrap' && $params->get('textCostProd','text-info'))? $params->get('textCostProd','text-info') : 'related-price';
$relCost = $related->payment_amount;
?>
<span class="<?php echo $relClassCost ?>" style="font-weight:bold;"><?php echo $relPayment ?></span>
<?php endif; ?>
</p>
<?php
// url контролера корзины
$relatedUrl = '&product_id='. $related->id;
$relatedUrl .= '&product_name='. htmlspecialchars($related->name);
$relatedUrl .= '&product_cost='.$relCost;
$relatedUrl .= '&return_url='.base64_encode(JFactory::getURI()->toString());
$cartUrl = JURI::base().'index.php?option=com_joomlakassa&task=cart.addtocart'. $relatedUrl; ?>
<a href="<?php echo $cartUrl ?>" class="jk-add_button btn btn-mini"><?php echo JText::_('COM_JOOMLAKASSA_ADD')?></a>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</div>
<script type="text/javascript">
<!--
jQuery(document).ready(function()
{
// Initialise variables
var decimals = '<?php echo $params->get('cost_decimals', 2)?>'; // Знаков после запятой
var dec_point = '<?php echo $params->get('cost_dec_point', '.')?>'; // Разделитель дробной части
var thousands_sep = '<?php echo $params->get('cost_thousands_sep', ' ')?>'; // Разделитель тысяч
if (thousands_sep == '*') var thousands_sep = ''; // Разделитель тысяч без пробела
// Количество продуктов
jQuery("body").on("click", "#jkCartProducts .jk-num", function(e)
{
e.preventDefault();
var num = this.id.split("-");
var numID = num[1];
var numInput = jQuery("#jkNumInput_"+ numID).val(); // Количество
var limit = jQuery("#hiddenLimit_"+ numID).val(); // Мин. кол. для заказа
var hAmount = jQuery("#hiddenAmount_"+ numID).val(); // Стоимость продукта
// Проверить поле кол-во
if(numInput < parseInt(limit)) {
alert("<?php echo JText::_('COM_JOOMLAKASSA_CART_N_LIMIT_X')?> "+ limit);
return false;
}
if(numInput.match(/[^0-9]/g)) {
alert("<?php echo JText::_('COM_JOOMLAKASSA_CART_N_NOT_INCREASE')?>");
return false;
}
// AJAX запрос к cart.amountofproduct
jQuery.ajax({
type: "POST",
url: "<?php echo JURI::base()?>index.php?option=com_joomlakassa&task=cart.amountofproduct",
dataType: "text",
data: { product_n: numID,
product_count: numInput,
cur_cours: <?php echo $this->currency->cours ?>,
cur_symbol: '<?php echo $this->currency->symbol ?>' },
success:function(response)
{
// общая стоимость для одного продукта
amount = hAmount * numInput;
// К функции costFormat
newAmount = costFormat(amount.toString(), decimals, dec_point, thousands_sep);
jQuery("#jkAmount_"+ numID).text(newAmount);
// общая стоимость всех продуктов
var newTotalAmount = jQuery("#jkTotal", response).html();
// К функции costFormat
totalAmount = costFormat(newTotalAmount, decimals, dec_point, thousands_sep);
jQuery("#jkTotalAmount").html(totalAmount).show();
<?php if ($params->get('amount_limit', 0)) : ?>
// Скрыть/Показать кнопку "Оформить заказ" и системное сообщени
// в зависимисти от общей стоимости и лимита платежа
if (newTotalAmount < <?php echo $params->get('amount_limit', 0) / $this->currency->cours ?>) {
jQuery('#jkCheckout').fadeOut("slow");
jQuery('#system-message-container').html(jQuery('#systemMessage', response).html()).show();
} else {
jQuery('#jkCheckout').fadeIn("slow");
jQuery('#system-message-container').fadeOut("slow");
}
<?php endif; ?>
},
error:function (xhr, ajaxOptions, thrownError) {
// выводим ошибку
alert(thrownError);
}
});
});
// Удалить продукт
jQuery("body").on("click", "#jkCartProducts .jk-del_button", function(e)
{
e.preventDefault();
var clickedID = this.id.split("-");
var cartNumber = clickedID[1];
// AJAX запрос к cart.removedfromcart
jQuery.ajax({
type: "POST",
url: "<?php echo JURI::base()?>index.php?option=com_joomlakassa&task=cart.removedfromcart",
dataType: "text",
data: { cartToDelete: cartNumber,
cur_cours: <?php echo $this->currency->cours ?>,
cur_symbol: '<?php echo $this->currency->symbol ?>' },
success:function(response)
{
// скрыть выбранный пользователем для удаления, элемент
jQuery('#jkItemProd_'+cartNumber).fadeOut("slow");
// общая стоимость всех продуктов
var newTotalAmount = jQuery("#jkTotal", response).html();
if (newTotalAmount != '0') {
// К функции costFormat
newAmount = costFormat(newTotalAmount, decimals, dec_point, thousands_sep);
}
else {
newAmount = 0;
}
jQuery("#jkTotalAmount").html(newAmount).show();
<?php if ($params->get('amount_limit', 0)) : ?>
// Скрыть/Показать кнопку "Оформить заказ" и системное сообщени
// в зависимисти от общей стоимости и лимита платежа
if (newTotalAmount < <?php echo $params->get('amount_limit', 0) / $this->currency->cours ?>) {
jQuery('#jkCheckout').fadeOut("slow");
jQuery('#system-message-container').html(jQuery('#systemMessage', response).html()).show();
} else {
jQuery('#jkCheckout').fadeIn("slow");
jQuery('#system-message-container').fadeOut("slow");
}
<?php else : ?>
if (newTotalAmount == '0') {
jQuery('#jkCheckout').fadeOut("slow");
}
<?php endif; ?>
},
error:function (xhr, ajaxOptions, thrownError) {
alert(thrownError); // выводим ошибку
}
});
});
// CSS для ajaxBusy
jQuery('#jk_ajaxBusy').css({
display: "none"
});
// Скрыть/Показать изображение процесса загрузки
jQuery(document).ajaxStart(function(){
jQuery('#jk_ajaxBusy').show();
}).ajaxStop(function(){
jQuery('#jk_ajaxBusy').hide();
});
});
/**
* Разделить стоимость по разрядам
*
* cost Стоимость
* decimals Знаков после запятой
* point Разделитель дробной части
* separator Разделитель тысяч
*/
function costFormat(cost, decimals, point, separator)
{
if(!isNaN(cost))
{
point = point ? point : '.';
cost = cost.split('.');
if(separator)
{
var tmp_cost = new Array();
for(var i = cost[0].length, j = 0; i > 0; i -= 3)
{
var pos = i > 0 ? i - 3 : i;
tmp_cost[j++] = cost[0].substring(i, pos);
}
cost[0] = tmp_cost.reverse().join(separator);
}
if(decimals && cost[1])
cost[1] = Math.round(parseFloat(cost[1].substr(0, decimals) + '.' + cost[1].substr(decimals, cost[1].length), 10));
return(cost.join(point));
}
else return(null);
}
//-->
</script>
На локальном сервере все отлично, на УРА работает, как перевел на хостинг вылезли эти ошибки.