Новости Joomla

Вышли релизы Joomla 6.1 и Joomla 5.4.5: новые возможности и стабильность

Релиз Joomla 6.1.0

Проект Joomla! объявил о доступности Joomla 6.1 [Nyota] — новой минорной версии шестой серии, а также о выпуске релиза исправлений ошибок Joomla 5.4.5. Релиз 6.1 приносит ряд долгожданных функций, повышающих удобство управления контентом и защиту от спама.

👩‍💻 Компонент "CS Афиши" для Joomla.

👩‍💻 Компонент "CS Афиши" для Joomla.

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

В состав пакета расширений входят:
- Компонент "CS Афиши"
- Модуль "Календарь событий"
- Модуль "Предстоящие события"
- Библиотека "ImgResize"

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

Модуль "Календарь событий" отображает предстоящие и прошедшие мероприятие на календаре, с отображением мероприятий на конкретную дату во всплывающем окне.

Модуль "Предстоящие события" показывает список предстоящий событий по порядку их наступления.

P.S. Расширение платное, но плата символическая, чисто для отработки приема платежей. Ключи без ограничения по времени, купившие сейчас - смогут обновляться без ограничений.

Разработчик - участник нашего сообщества Дмитрий Денисов (@codersite).

Страница расширения
Демо

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

aldabergenovb

  • Новичок
  • 3
  • 0 / 0
Warning: Invalid argument supplied for foreach() in /home/dentkz/public_html/components/com_joomlakassa/views/cart/tmpl/default_items.php on line 62
Система JoomlaKassa
Ошибка в Корзине.
Код
<?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 ?>">&times;</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  = '&amp;product_id='. $related->id;
  $relatedUrl .= '&amp;product_name='. htmlspecialchars($related->name);
  $relatedUrl .= '&amp;product_cost='.$relCost;
  $relatedUrl .= '&amp;return_url='.base64_encode(JFactory::getURI()->toString());
  $cartUrl = JURI::base().'index.php?option=com_joomlakassa&amp;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>
В некоторых случаях с других мест выходят ошибки (on line 393, on line 45)
На локальном сервере все отлично, на УРА работает, как перевел на хостинг вылезли эти ошибки.
*

aldabergenovb

  • Новичок
  • 3
  • 0 / 0
ну подскажите хотябы кто нибудь?
*

arma

  • Завсегдатай
  • 1752
  • 81 / 3
JoomlaKassa - платный компонент. Почему бы не спросить у продавца, а не в разделе "общие вопросы Joomla"?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка на сайте: Warning: session_start() [function.session-start]: Cannot send session cookie - hea

Автор sapravka

Ответов: 6
Просмотров: 3790
Последний ответ 08.10.2016, 14:53:19
от SeBun
Error:invalid login

Автор abuamr

Ответов: 4
Просмотров: 8103
Последний ответ 02.12.2015, 16:16:58
от stardel
Warning: Failed to move file! Unable to upload file

Автор sonics

Ответов: 2
Просмотров: 1887
Последний ответ 26.10.2015, 17:07:17
от sonics
Ошибка "Warning: Creating default object from empty value in"

Автор leito

Ответов: 13
Просмотров: 26045
Последний ответ 08.06.2015, 19:53:01
от Dipsena
Изменить Зависимые выпадающие списки select

Автор mirbekula

Ответов: 0
Просмотров: 1407
Последний ответ 20.02.2015, 07:23:00
от mirbekula