Новости Joomla

Вышел компонент интернет-магазина HikaShop 6.1.0.Один из известных компонентов магазина для Joomla

Вышел компонент интернет-магазина HikaShop 6.1.0.Один из известных компонентов магазина для Joomla

👩‍💻 Вышел компонент интернет-магазина HikaShop 6.1.0.Один из известных компонентов магазина для Joomla.v.6.1.0 Что нового?Модуль корзины. Отображение корзины в виде offcanvas-элемента.Кнопка выхода в панели управления пользователя. Что тут сказать, просто добавили. Отправка писем только для заказов, оплаченных определёнными способами. Это удобно для рассылки сообщений, привязанных к региону или провайдеру (например, инструкции по банковскому переводу только для заказов, оплаченных банковским переводом).Листинг выплат по партнерской системе. В разделе управления партнёрскими программами появилось новое подменю «Выплаты», в котором перечислены выплаты партнёрам (упрощённое отслеживание и сверка). Добавлены настройки, благодаря которым можно определить категории товаров, на которые начисляется партнёрская комиссия с продаж.Список комплектов товаров. Система комплектов позволяет отслеживать остатки товаров, продаваемых в комплекте.Подробнее в блоге Hikashop.Поскольку мы не сообщали ранее о Hikashop 6.0, то вкратце скажем, что он вышел в июне 2025г. В новой версии было:- 13 исправлений ошибок- 17 улучшений. В частности:- - Hikashop теперь проверяет UserAgent пользователя перед добавлением товара в корзину, чтобы отсечь ботов. Ведь компонент хранит корзины в базе данных.- - улучшен роутинг компонента, позволяющий использовать в названии товара даже слеши.- - улучшения фильтра товаров - ускорение загрузки категорий/брендов/характеристик.- 4 новых функции:- - добавлена поддержка Joomla 6.0.- - Улучшена возможность адаптации форм HikaShop на фронтенде к шаблонам, не использующим стандартные классы Joomla.- - Плагин внутреннего баланса: возможность исключить уцененные товары из начисленных баллов.- - Теперь можно выбирать склады для вариантов товаров.Подробнее в Changelog Hikashop.Также при работе с Hikashop стоит учитывать, что один и тот же код поддерживает версии Joomla от 3.х до 5.х, а в таблице сравнения версий заявлена и Joomla 2.5. Беглый просмотр кода показал, что компонент как был, так и остался старым и для совместимости с Joomla 4+ просто добавлен плагин.@joomlafeed#joomla #расширения #hikashop

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

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Код: php
<?php echo JHtml::_( 'calendar', '10.10.2013', 'field_name', 'field_id' ); ?>
3-й и 4-й параметры непонятны
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
А J что по умолчанию использует? MySQL, с которым я столкнулся только в J, отсюда и вопрос, до этого был тольго ib/fb, где это работает.
Joomla использует то что вы ей скормите, по умолчанию MySQL но тем не менее Joomla все равно что вы пишете в запросе, она это не понимает, она понимает только пошел запрос или нет! И отдаст вам данные или нет! Работает ли та конструкция зависит от вашей СУБД! Но никак ни от Joomla!

Сейчас первоначально вообще отобразить поле для ввода даты.
Нашел это:
Код: php
 <? JHTML::_('behavior.calendar'); ?>
<?php echo JHTML::_('calendar', $var, 'var', 'var', '%Y-%m-%d', array('class'=>'inputbox', 'size'=>'25',  'maxlength'=>'10')); ?>
но тут явно мутулс подключается, уже не есть хорошо.
Если не хотите мутулс то придется брать сторонние плагины для jQuery
http://jqueryui.com/datepicker/ хороший вариан, а русифицировать его можно вот пример как https://code.google.com/p/jquery-ui/source/browse/trunk/ui/i18n/jquery.ui.datepicker-ru.js?r=3982
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
3-й и 4-й параметры непонятны
что не понятного у календаря есть поле ввода в которое пишется дата, третий параметр это аттрибут name четвертый аттрибут id в этом поле..
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
« Последнее редактирование: 07.05.2014, 21:56:26 от AlekVolsk »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Код: php
          $query = 'select min(odate), max(odate) from #__mfo_docums where (client = '.$db->quote($ulogin).') and (loan = '.$db->quote($loan).')';
          $item = $db->setQuery($query)->loadResult();
Как получить вывод min и max?
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
используйте loadRow() вместо loadResult(); и получите массив значений. Вобще тут почти все методы описаны JDatabase:
http://docs.joomla.org/API17:JDatabase
execute() тут почему то нету, но в конце концов более современные методы можно и в исходниках посмотреть
интернет-блог: http://websiteprog.ru
*

artel-st

  • Захожу иногда
  • 350
  • 37 / 1
А двумя запросами?
SELECT odate FROM .... WHERE .... ORDER BY odate ASC LIMIT 1
SELECT odate FROM .... WHERE .... ORDER BY odate DESC LIMIT 1
"Жираф - это лошадь, выполненная по всем требованиям заказчика" (с) кто-то из дизайнеров
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
зачем двумя если можно одним?
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Код: php
          $query = 'select min(odate), max(odate) from #__mfo_docums where (client = '.$db->quote($ulogin).') and (loan = '.$db->quote($loan).')';
          $item = $db->setQuery($query)->loadRow();
          $dtmin = $item->min;
          $dtmax = $item->max;
          echo $dtmin.'  '.$dtmax;
Не выводит ничего.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
потому что $item это массив
попробуй вывести $item[0] и $item[1]
еще можешь использовать loadObject() только в запросе дай нормальные имена полям 'min(odate) as min'
тогда сможешь обращатся как $item->min
« Последнее редактирование: 07.05.2014, 23:19:27 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Да, помогло, спс, +
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Имеет место быть код:
Код: html4strict
        <script>jQuery(function(){
          jQuery("#datepicker1").datepicker({dateFormat:"dd.mm.yy"});
          jQuery("#datepicker1").datepicker({minDate:"28.03.2013"});
          jQuery("#datepicker1").datepicker({maxDate:"31.10.2013"});
          jQuery("#datepicker1").datepicker("setDate","28.03.2013");
          jQuery("#datepicker2").datepicker({dateFormat:"dd.mm.yy"});
          jQuery("#datepicker2").datepicker({minDate:"28.03.2013"});
          jQuery("#datepicker2").datepicker({maxDate:"31.10.2013"});
          jQuery("#datepicker2").datepicker("setDate","31.10.2013");
        });</script>
        <div class="dt-filter">
          <span><?php echo JText::_('COM_MFO_FILTER_DT_1'); ?></span><input type="text" class="datepicker" name="datepicker1" id="datepicker1">
          <span><?php echo JText::_('COM_MFO_FILTER_DT_2'); ?></span><input type="text" class="datepicker" name="datepicker1" id="datepicker2">
        </div>
minDate и maxDate не работают, календарь позволяет получить даты за пределами указанного диапазона.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Потому что там надо задавать объект date или диапозон от текущей даты в качестве параметров
http://jqueryui.com/datepicker/#min-max
http://javascript.ru/Date
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
т.е. я не могу указать конкретную дату? и как быть?

upd
Разобрался: я указывал параметры по отдельности, а надо было рядом в одних скобках перечислять через запятую
« Последнее редактирование: 08.05.2014, 00:24:33 от AlekVolsk »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
почему нет я же вам скинул ссылку как использовать объект Date
что-то типа этого, не проверял правда:
jQuery("#datepicker1").datepicker({minDate: new Date(2013, 03-1, 28)});

а что он строки тоже понимает?
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Да, понимает:
Код: javascript
jQuery("#datepicker1").datepicker({minDate:"<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>",maxDate:"<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>"});
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Вот теперь думаю, как получить строку с датой и преобразовать ее к формату sql 'Y-m-d'
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
да обычной функцией php-шной date_format($date, 'Y-m-d');
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
а как получить из input'а в $date?


$dtfrom date_format($_GET['datepicker1'],'Y-m-d');
$dtto =   date_format($_GET['datepicker2'],'Y-m-d');
echo 
$dtfrom.' '.$dtto;
ругается, мол Warning: date_format() expects parameter 1 to be DateTime, null given in ...
« Последнее редактирование: 08.05.2014, 01:05:37 от AlekVolsk »
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
1. Почему без фильтрации данные получаете?
2. Написано что полученное значение null, значит какая-то ошибка. Либо форму отправляете в post, а смотрите в get, либо с названием поля путаница, либо вообще форма не отправляется.

Посмотрите в jinput возможно там есть подходящий фильтр для даты, чтобы не преобразовывать дополнительно.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Как в модели в protected function getListQuery() можно узнать, какие даты введены в поля пользователем?
При построении повторного/последующего представления как узнать, какие даты стоят в фильтре, по которым строился запрос?
Сейчас в модели:
Код: php
  protected function getListQuery()
  {
    $loan = JFactory::getApplication()->input->getString('loan', '');
    $db = JFactory::getDBO();

    $query = 'select min(odate), max(odate) from #__mfo_docums where (client = '.$db->quote($ulogin).') and (loan = '.$db->quote($loan).')';
    $item = $db->setQuery($query)->loadRow();
    $dtmin = $item[0];
    $dtmax = $item[1];

    $query = $db->getQuery(true);
    $query->select('odate, docname, adebet, acredit, pdebet, pcredit, cdebet, ccredit, sdebet, scredit');
    $query->from('#__mfo_docums');
    $query->where('client = '.$db->quote(JFactory::getUser()->username));
    $query->where('loan = '.$db->quote($loan));
    $query->where('odate >= '.$db->quote($dtmin));
    $query->where('odate <= '.$db->quote($dtmin));
    $query->order('odate, id');
    return $query;
  }

во вьюхе:
Код: php
    <div class="control-group">
      <div class="controls">
        <?php
          $query = 'select min(odate), max(odate) from #__mfo_docums where (client = '.$db->quote($ulogin).') and (loan = '.$db->quote($loan).')';
          $item = $db->setQuery($query)->loadRow();
          $dtmin = $item[0];
          $dtmax = $item[1];
        ?>
        <script>jQuery(function(){
          jQuery("#datepicker1").datepicker({dateFormat:"dd.mm.yy",changeMonth:true,changeYear:true,showButtonPanel:true,minDate:"<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>",maxDate:"<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>"});
          jQuery("#datepicker1").datepicker(jQuery.datepicker.regional["ru"]);
          jQuery("#datepicker1").datepicker("setDate","<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>");
          jQuery("#datepicker2").datepicker({dateFormat:"dd.mm.yy",changeMonth:true,changeYear:true,showButtonPanel:true,minDate:"<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>",maxDate:"<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>"});
          jQuery("#datepicker2").datepicker(jQuery.datepicker.regional["ru"]);
          jQuery("#datepicker2").datepicker("setDate","<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>");
        });</script>
        <div class="dt-filter">
          <span><?php echo JText::_('COM_MFO_FILTER_DT_1'); ?></span><input type="text" name="datepicker1" id="datepicker1" readonly>
          <span><?php echo JText::_('COM_MFO_FILTER_DT_2'); ?></span><input type="text" name="datepicker2" id="datepicker2" readonly>
        </div>
      </div>
    </div>
Далее ниже вывод табличных данных по запросу из getListQuery()

Но так фильтр всегда получается сброшенным, т.е. в диапазон дат всегда максимально возможный. Не понимаю, как передать и получить параметры туда-обратно, чтобы применить фильтр по дате и отобразить его значения в полях.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Фильтров в модели я не увидел.
Если нужно одноразово отфильтровать, без запоминания состояния фильтра, то в самой функции надо взять эти переменные из реквеста (поста, гета). Если с сохранением состояния, то populate_state функцию смотрите в какой-нибудь другой модели и делайте по аналогии.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Фильтров в модели я не увидел.
Так в том-то и дело, что я не знаю, как его туда добавить, а для этого нужно в модели получить значения полей из вьюхи. Но передать значения я могу только в public-функцию, а getListQuery() - protected, и как в ней получить значения...
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
во-первых в интернете у нас действуют правила запросов - отправил запрос - получил ответ, запросы отправляются с перезагрузкой страницы или без, с помощью AJAX. Данные, отправленные в запросе методами post или get, видны в любом месте сценария, их можно вытаскивать из реквеста где угодно. Ну а чтобы передать данные из вида в модель, надо форму, отрисованную этим видом, отправить на сервер любым из указанных способов.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Не нашел у себя ни одного php-файла с использованием populate_state
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Во вьюхе (в сокращении):
Код: php
<script type="text/javascript">
  UpdateFilter = function()
  {
    var form = document.getElementById('adminForm');
    form.dtfrom.value = form.datepicker1.value;
    form.dtto.value = form.datepicker2.value;
    form.submit();
  };
</script>
  <form action="<?php echo JRoute::_('index.php?option=com_mfo&view=documc&loan='.$loan.'&list='.$list); ?>" method="post" name="adminForm" id="adminForm" class="form-horizontal">
    <div class="control-group">
      <div class="controls">
        <?php
          $query = 'select min(odate), max(odate) from #__mfo_docums where (client = '.$db->quote($ulogin).') and (loan = '.$db->quote($loan).')';
          $item = $db->setQuery($query)->loadRow();
          $dtmin = $item[0];
          $dtmax = $item[1];
        ?>
        <script>jQuery(function(){
          jQuery("#datepicker1").datepicker({dateFormat:"dd.mm.yy",changeMonth:true,changeYear:true,showButtonPanel:true,minDate:"<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>",maxDate:"<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>"});
          jQuery("#datepicker1").datepicker(jQuery.datepicker.regional["ru"]);
          jQuery("#datepicker1").datepicker("setDate","<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>");
          jQuery("#datepicker2").datepicker({dateFormat:"dd.mm.yy",changeMonth:true,changeYear:true,showButtonPanel:true,minDate:"<?php echo JHtml::_('date', $dtmin, 'd.m.Y'); ?>",maxDate:"<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>"});
          jQuery("#datepicker2").datepicker(jQuery.datepicker.regional["ru"]);
          jQuery("#datepicker2").datepicker("setDate","<?php echo JHtml::_('date', $dtmax, 'd.m.Y'); ?>");
        });</script>
        <div class="dt-filter">
          <span><?php echo JText::_('COM_MFO_FILTER_DT_1'); ?></span><input type="text" class="datepicker" name="datepicker1" id="datepicker1" readonly>
          <span><?php echo JText::_('COM_MFO_FILTER_DT_2'); ?></span><input type="text" class="datepicker" name="datepicker2" id="datepicker2" readonly>
          <span><a href="javascript:UpdateFilter()"> Применить фильтр </a></span>
        </div>
      </div>
    </div>

    <div>
      <input type="hidden" name="type" value="" />
      <input type="hidden" name="dtfrom" value="" />
      <input type="hidden" name="dtto" value="" />
      <input type="hidden" name="task" value="documc.work" />
      <?php echo JHtml::_('form.token'); ?>
    </div>
   
  </form>
Если в js добавить alert(form.dtfrom.value); то он отобразит дату. значит она передается.


В модели:
Код: php
  protected function getListQuery()
  {
    $ulogin = JFactory::getUser()->username;
    $loan = JFactory::getApplication()->input->getString('loan', '');
    $dtmin = $_POST["dtfrom"];
    $dtmax = $_POST["dtto"];
    print_r('1:'.$dtmin.'<br />2:'.$dtmax.'<br />');

    $db = JFactory::getDBO();
   
    if (!$dtmin or !$dtmax) {
      $query = 'select min(odate), max(odate) from #__mfo_docums where (client = '.$db->quote($ulogin).') and (loan = '.$db->quote($loan).')';
      $item = $db->setQuery($query)->loadRow();
      $dtmin = $item[0];
      $dtmax = $item[1];
    }

    $query = $db->getQuery(true);
    $query->select('odate, docname, adebet, acredit, pdebet, pcredit, cdebet, ccredit, sdebet, scredit');
    $query->from('#__mfo_docums');
    $query->where('client = '.$db->quote($ulogin));
    $query->where('loan = '.$db->quote($loan));
    $query->where('odate >= '.$db->quote($dtmin));
    $query->where('odate <= '.$db->quote($dtmax));
    $query->order('odate, id');
    return $query;
  }
 
  public function work()
  {
    $dtmin = $_POST["dtfrom"];
    $dtmax = $_POST["dtto"];
    print_r('1:'.$dtmin.'<br />2:'.$dtmax.'<br />');
    return true;
  }

$dtmin и $dtmax - пустые строки.
Хотя аналогичным способом в модели в админке все получается. Что я делаю не так?
« Последнее редактирование: 08.05.2014, 13:06:35 от AlekVolsk »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Если пишу:
    $dtmin = $_POST["dtfrom"];
    $dtmax = $_POST["dtto"];

то в public function work() я эти даты получаю, а в protected function getListQuery() - нет!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
ап
Как получить данные формы в getListQuery()?
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
ап
Как получить данные формы в getListQuery()?
Никак, этот метод для этого не предназначен. Он предназначен для создания SQL-запроса для получения списка записей.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться