Новости 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

На сколько актуально делать сайт в 2025 году? Битва с нейросетями и выбор CMSНовый выпуск подкаста...

На сколько актуально делать сайт в 2025 году? Битва с нейросетями и выбор CMSНовый выпуск подкаста...

На сколько актуально делать сайт в 2025 году? Битва с нейросетями и выбор CMSНовый выпуск подкаста "Просто о Digital"Гость:🎙 Владимир Сергеенко ( https://t.me/aixman ) • Интернет-маркетолог с 14-летним опытом• Соавтор книги «Нетворкинг»• Спикер конференции Ассоциации директоров по развитиюВедущий:💻 Игорь Филипенко ( https://t.me/igorleee )• Программист и предприниматель с 16-летним опытом в digital• Основатель подкаста "Просто о Digital"• Специалист по автоматизации бизнес-процессовВ этом выпуске вы узнаете:🔥 Актуальность сайтов в эпоху нейросетей• Актуален ли сайт сейчас и будет ли актуален в будущем?• Зачем нужен сайт? Есть ли иные инструменты привлечения клиентов?🤖 Нейросети vs Поисковики vs Сайты• Почему нейросети не заменят сайты в B2B-сегменте• Как Google и Яндекс меняют алгоритмы из-за AI-конкуренции📊 Сайт как центр вселенной вашего трафика• Почему без сайта вы сливаете 40% маркетингового бюджета впустую?🛡 Безопасность и Joomla 6.0• Как отфильтровать 99% ботов и сэкономить на трафике• Почему Joomla теперь обходит WordPress в безопасности и скорости⚖️ Выбор платформы: битва CMS• WordPress: 50% рынка но 80% уязвимостей• Joomla: профессиональная CMS для сложных проектов• Drupal: почему его похоронили в 2023 году• Tilda: когда конструктор выгоднее CMSПриятного просмотра/прослушивания!RSS: https://cloud.mave.digital/61930Mave: https://igorfilipenko.mave.digitalЯндекс Музыка: https://music.yandex.ru/album/35840190Telegram Mave: https://t.me/mavestreambot/app?startapp=igorfilipenkoApple Podcasts: https://podcasts.apple.com/us/podcast/просто-о-digital-и-бизнесе/id1801903450ВКонтакте: https://vk.com/podcasts-12488584Youtube: https://www.youtube.com/playlist?list=PLfR6jTpnkohDDco32xZ-KyMyWi_S5Xdy2=========================Видео-формат подкаста:Rutube: https://rutube.ru/video/b5762754f9d3e0dc382f32f3034be0a2/Youtube: https://youtu.be/nu1XF2jNbxY#подкаст #podcast

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

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Проверить и вызвать - не вопрос, вопрос - как отловить момент загрузки представления?
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Хотя вариант плагина также наверное актуален, при авторизации возможен редирект и не на компонент. И как из компонента вызвать work() - вопрос открыт.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Проверить и вызвать - не вопрос, вопрос - как отловить момент загрузки представления?
Вы написали, что после логина пользователь попадает на нужную вьюху. В таком случае ничего отслеживать не  надо. Если это неверно, тогда только плагин.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Тогда куда код вставлять, не понял. Во вьюхе несколько кнопок, все они вызывают это work(), предварительно указав worktype (посредством js). Как отследить момент, когда вьюха загружается?
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Принял решение писать плагин, создам для отдельный топик.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Следующий вопрос по компоненту.
Авторизируюсь во фронте как superuser - вьюхи открываются нормально, авторизируюсь как special - 404, требуется acl?
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Авторизируюсь во фронте как superuser - вьюхи открываются нормально, авторизируюсь как special - 404, требуется acl?
А код компонента нам угадывать?)
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
В общем, если пользователь входит в группу Administrator или  Super Users - все ок, иначе 404. Вызов вьюхи из меню, как внешняя ссылка (не реализовал еще поддержку меню в компоненте), доступ - special.

А код компонента нам угадывать?)
Какую его часть Вам показать?
« Последнее редактирование: 23.04.2014, 21:22:17 от AlekVolsk »
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Контроллер, модель..
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Контроллер:
Код: php-brief
<?php
defined('_JEXEC') or die;

jimport('joomla.application.component.controllerlegacy');

class MfoControllerLoans extends JControllerLegacy
{
  public function work()
  {
    $uri = JFactory::getURI();
    JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
    $model = $this->getModel('loans');
    $model->work();
    $this->setRedirect(JRoute::_($uri));
  }
}

Модель:
Код: php
<?php
defined('_JEXEC') or die;

jimport('joomla.application.component.modellist');
jimport('joomla.utilities.date');
jimport('joomla.filesystem.file');

class MfoModelLoans extends JModelList
{

  public function getForm($data = array(), $loadData = true)
  {
    $form = $this->loadForm($this->option.'.loans', 'loans', array('control'=>'jform', 'load_data'=>$loadData));
    if (empty($form)) {return false;}
    return $form;
  }

  protected function getListQuery()
  {
    $db = JFactory::getDBO();
    $query = $db->getQuery(true);
    $query->select('num, bdate, edate, term, prc, sm, rest, arest, prest, crest, srest');
    $query->from('#__mfo_loans');
    $query->where('client = '.$db->quote(JFactory::getUser()->username));
    return $query;
  }

  public function work()
  {
    $app = JFactory::getApplication();
    $worktype = $app->input->getWord('worktype');
    $workend = null;
    if ($workend === null)
    {
      switch ($worktype)
      {
        case 'ftpxml':
          $workend = $this->_FtpXML();
          break;
      }
    }
    return $workend;
  }
 
  protected function _FtpXML()
  {
    return true;
  }
}
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Общий контроллер компонента:
Код: php
<?php
defined('_JEXEC') or die;

jimport('joomla.application.component.controller');

class MfoController extends JControllerLegacy
{
  protected $default_view = 'loans';
  public function display($cachable = false, $urlparams = false)
  {
    parent::display();
    return $this;
  }
}
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Создал поддержку меню из компонента. Не помогло.
Обнаружил другое: меню имеет псевдоним loans, url=site.ru/loans.html, вызывает вьюху loans, из вьюхи вызывается другая вьюха docums, в которой имеется кнопка "Возрват к списку договоров", href="/index.php?option=com_mfo&view=loans", по нажатии на которой идет переход именно на href, а не на /loans.html. Роутер писать?
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Если в одном представлении мне нужно вывести два НД из одной таблицы, в которые отличаются только одним условием в запросе, как быть?

Т.е.: во вьюшке две <table>...</table>, а в модели имеется getListQuery(), где по определению может быть только один запрос (или я ошибаюсь).
Убрать getListQuery() из модели и выводить формировать оба запроса непосредственно во вьюшке? Или можно как-то по другому извернуться.

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

upd
Хотя вот сейчас прикинул, можно же во вьюшке при foreach ($this->items as $i => $item) : делать проверку на соответствие значения поля и выводить сог-но результату да/нет, но, быть может, имеется и другое какое-либо решение?

upd
В общем-то, так и сделал.
Вопрос с доступом остается открытым.
« Последнее редактирование: 24.04.2014, 01:31:54 от AlekVolsk »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Есть sql-запрос:
Код: sql
INSERT INTO `mfo_mfo_loans` (`id`, `client`, `num`, `tp`, `bdate`, `edate`, `term`, `prc`, `sm`, `rest`, `arest`, `prest`, `crest`, `srest`) VALUES
(2, 'shmatinalv', 'ЗВ/31/28.03.2013', 1, '2013-03-28', '2015-03-28', 24, '22.0000', '25000.00', '18639.93', '0.00', '320.54', '240.00', '0.00');

Как видно, ряд полей имеют тип int. Если, за исключением поля id, я int-значения в кавычки возьму, как строки, это будет считаться ошибкой?

Если строку для запрса insert/update готовлю так:
$str $db->quote($str);
как правильно подготовить строку с числовым значением: int, numeric?
« Последнее редактирование: 24.04.2014, 22:17:47 от AlekVolsk »
*

Arkadiy

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

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
допускается кавычки не ставить.
а как это с точки зрения безопасности? значение берется из xml-файла, куда может  быть впихнуто все, что угодно. (int)$str; пойдет или что-то понадежнее имеется?
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Пойдет.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Спасибо.
Поля типа numeric phpMyAdmin в sql кидает в кавычках. Могу я прописывать их в запрос без кавычек? Разделителем дробной части чисел в php является точка?

upd
Опытным путем подтвердил оба своих предположения.
« Последнее редактирование: 24.04.2014, 23:32:03 от AlekVolsk »
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
В конфиге компонента пытаюсь реализовать следующее:
Код: xml
    <field name="mfo_decimal_separator" type="radio" class="btn-group" default="." label="COM_MFO_BAS_PRM_DECIMAL_SEPARATOR">
      <option value=".">.</option>
      <option value=",">,</option>
      <option value="-">-</option>
    </field>
Во втором параметре запятая не отображается на кнопке. Если меняю на "&#44;" все равно не отображается. Это как-либо решается?
*

artel-st

  • Захожу иногда
  • 350
  • 37 / 1
Код
    <field name="mfo_decimal_separator" type="radio" class="btn-group" default="." label="COM_MFO_BAS_PRM_DECIMAL_SEPARATOR">
      <option value="0">COM_MFO_BAS_PRM_DECIMAL_SEPARATOR_TO4KA</option>
      <option value="1">COM_MFO_BAS_PRM_DECIMAL_SEPARATOR_ZPT</option>
      <option value="2">COM_MFO_BAS_PRM_DECIMAL_SEPARATOR_TIRE</option>
    </field>
"Жираф - это лошадь, выполненная по всем требованиям заказчика" (с) кто-то из дизайнеров
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Через константу работает, но это же сколько ради одного символа букаф писать приходиться...
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Вопрос с доступом до сих пор актуален.
Авторизируюсь во фронте как юзер из группы super user или administrator - вьюхи во фронте открываются нормально, любая другая группа - выдает 404.
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
выложите архив со всем фронтендом
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Во вложении, без бд и языковых ини

upd
вложение удалено в связи с решением проблемы
« Последнее редактирование: 30.04.2014, 14:05:59 от AlekVolsk »
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Подозреваю что у вас проблема из-за этой строки:
Код: php
if (!JFactory::getUser()->authorise('core.manage', 'com_mfo')) {throw new Exception(JText::_('JERROR_ALERTNOAUTHOR'), 401);}
в файле mfo.php (точка входа ваша)!
'core.manage' - это и есть доступ к компоненту! Такую строку прописывают в админке, но не в фронте...
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Закомментировал, помогло. Спасибо. +!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
В представлении во фронте необходимо добавить возможность фильтрации табличных данных по диапазону дат, от и до, по полю 'odate'.

1. Как во вьюхе отобразить поле ввода даты с раскрывающимся календарем (знаю, что есть такое в J, встречал примеры применения в сети для J1.5)?

2.
Запрос в модели:
  protected function getListQuery()
  {
    
$loan JFactory::getApplication()->input->getString('loan''');
    
$db JFactory::getDBO();
    
$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->order('odate, id');
    return 
$query;
  }


Как из формы во вьюхе сюда можно передать параметры?

И вообще, поддерживается ли в J конструкция вида
$query->where('odate between ('.$firstdate,', '.$lastdate')');?
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
Сабмит формы во вьюхе в, в getListQuery
$input = JFactory::getApplication()->input;
if($input->get('переменная')!== ''){
$query->where('поле=' . $db->quote( $input->get('переменная') ) );
}

И вообще, поддерживается ли в J конструкция вида
$query->where('odate between ('.$firstdate,', '.$lastdate')');?
Конструкцию $query->where поддерживает!
odate between ('.$firstdate,', '.$lastdate')' - каким макаром относится к Joomla? Это вопрос к вашей СУБД
« Последнее редактирование: 07.05.2014, 17:17:56 от Istaan »
*

Aleks.Denezh

  • Живу я здесь
  • 3404
  • 428 / 4
1. Как во вьюхе отобразить поле ввода даты с раскрывающимся календарем (знаю, что есть такое в J, встречал примеры применения в сети для J1.5)?
Код: php
<?php echo JHtml::_( 'calendar', '10.10.2013', 'field_name', 'field_id' ); ?>
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
odate between ('.$firstdate,', '.$lastdate')' - каким макаром относится к Joomla? Это вопрос к вашей СУБД
А J что по умолчанию использует? MySQL, с которым я столкнулся только в J, отсюда и вопрос, до этого был тольго ib/fb, где это работает.

Сейчас первоначально вообще отобразить поле для ввода даты.
Нашел это:
Код: php
 <? JHTML::_('behavior.calendar'); ?>
<?php echo JHTML::_('calendar', $var, 'var', 'var', '%Y-%m-%d', array('class'=>'inputbox', 'size'=>'25',  'maxlength'=>'10')); ?>
но тут явно мутулс подключается, уже не есть хорошо.

Еще нашел это, но не русифицировано, и непонятно, как передавать даты.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться