Новости 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 Гость просматривают эту тему.
  • 15 Ответов
  • 1098 Просмотров
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
PHP
« : 09.01.2018, 05:06:06 »
Здравствуйте подскажите вот  есть у меня код
Код
		protected function getTicketsd($id) {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$array = array();

$query->clear()
->select($db->qn('id'))->select($db->qn('seats'))
->from($db->qn('#__rseventspro_tickets'))
->where($db->qn('ide').' = '.(int) $id);

$db->setQuery($query,0,3);
$tickets = $db->loadObjectList();

if (!empty($tickets)) {
foreach ($tickets as $ticket) {
$query->clear()
->select('SUM(ut.quantity)')
->from($db->qn('#__rseventspro_user_tickets','ut'))
->join('left', $db->qn('#__rseventspro_users','u').' ON '.$db->qn('u.id').' = '.$db->qn('ut.ids'))
->where($db->qn('u.state').' IN (0,1)')
->where($db->qn('ut.idt').' = '.(int) $ticket->id);

$db->setQuery($query);
$purchased = $db->loadResult();

if ($ticket->seats == 0) {
$array[] = JText::_('COM_RSEVENTSPRO_GLOBAL_UNLIMITED').' '.'<em>'.$ticket->name.'</em>';
} else {
$available = $ticket->seats - $purchased;
if ($available <= 0) continue;
$array[] = $available;
}
}
}

return !empty($array)? implode($array) : '';
}
Который из базы берет число в строчке seats например 1. У меня seats сейчас например 3 шт. Выводится сейчас 111. Но при бронировании пользователем места он убирает одно число, то есть как я понял идет сравнение и выводит 11 . Подскажите как мне сложить эти цифры чтобы в результате получить например 3 ? Раньше между цифрами были запятые я их убрал а вот как сложить теперь эти цифры не знаю. Пробывал
Код
$array[] = $available;
заменить на
Код
$array[] = $available + $available;
Так выводит  333 заместо просто 3.
« Последнее редактирование: 09.01.2018, 05:29:16 от gm35 »
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: PHP
« Ответ #1 : 09.01.2018, 09:45:05 »
Код
return !empty($array)? array_sum($array) : '';
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: PHP
« Ответ #2 : 09.01.2018, 12:13:54 »
нельзя же просто суммировать, судя по коду в $array может быть текст
Код
$array[] = JText::_('COM_RSEVENTSPRO_GLOBAL_UNLIMITED').' '.'<em>'.$ticket->name.'</em>';

имхо там надо подсчета логику поменять, а то все смешалось, люди, кони...

и вероятно запятую тоже нельзя убирать, видимо было раньше так
Код
return !empty($array)? implode(',', $array) : '';
и я так думаю это было совсем не зря...
« Последнее редактирование: 09.01.2018, 12:17:06 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #3 : 09.01.2018, 14:14:14 »
Спасибо огромное!
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #4 : 09.01.2018, 14:14:54 »
Код
return !empty($array)? array_sum($array) : '';
Спасибо огромное! Все  получилось))))
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: PHP
« Ответ #5 : 09.01.2018, 15:25:20 »
Все  получилось
я так откровенно говоря не думаю :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Re: PHP
« Ответ #6 : 09.01.2018, 15:35:58 »
Угу. Сообщение о пустом результате выводиться не будет. Надо обработать более корректно.
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #7 : 10.01.2018, 02:02:15 »
Угу. Сообщение о пустом результате выводиться не будет. Надо обработать более корректно.
А я сделал так    
Код
return !empty($array)? array_sum($array) : 'Ни одного';
И теперь если не чего не осталось то пишет "Ни одного"
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #8 : 10.01.2018, 02:13:31 »
Угу. Сообщение о пустом результате выводиться не будет. Надо обработать более корректно.
Еще не подскажите, данное сообщение выводится в админке, хочу вывести его на сайт в админке у меня выводится так
Код
<?php if ($availabletickets11   = $this->getTicketsd($row->id)) { ?>
<p>Осталось билетов: <?php echo $availabletickets11 ?></p>
<?php } ?>
А если я вставляю в php файл этого же компонента но в файл который выводит данные на сайте вставляю данный код указанный выше,  прописываю код в другом файле 
Код
		public function getTicketsd($id) {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$array = array();

$query->clear()
->select($db->qn('id'))->select($db->qn('seats'))
->from($db->qn('#__rseventspro_tickets'))
->where($db->qn('ide').' = '.(int) $id);

$db->setQuery($query,0,3);
$tickets = $db->loadObjectList();

if (!empty($tickets)) {
foreach ($tickets as $ticket) {
$query->clear()
->select('SUM(ut.quantity)')
->from($db->qn('#__rseventspro_user_tickets','ut'))
->join('left', $db->qn('#__rseventspro_users','u').' ON '.$db->qn('u.id').' = '.$db->qn('ut.ids'))
->where($db->qn('u.state').' IN (0,1)')
->where($db->qn('ut.idt').' = '.(int) $ticket->id);

$db->setQuery($query);
$purchased = $db->loadResult();

if ($ticket->seats == 0) {
$array[] = JText::_('COM_RSEVENTSPRO_GLOBAL_UNLIMITED').' '.'<em>'.$ticket->name.'</em>';
} else {
$available = $ticket->seats - $purchased;
if ($available <= 0) continue;
$array[] = $available;
}
}
}

return !empty($array)? array_sum($array) : 'Ни одного';
}
То результат всегда выводит 'Ни одного' то есть не меняются данные.
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #9 : 25.01.2018, 00:10:21 »
Кто нибудь знает? Почему этот же код не работает в компонентах не админ
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: PHP
« Ответ #10 : 25.01.2018, 00:17:14 »
dmitry_stas - а неправильней ли делать SUM(seats) на уровне запроса из базы? Так понимаю что запрос должен отдать количество мест, вот пусть он и считает, зачем ты предлагаешь обрабатывать уже PHP массив на выходе?
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #11 : 25.01.2018, 00:20:28 »
dmitry_stas - а неправильней ли делать SUM(seats) на уровне запроса из базы? Так понимаю что запрос должен отдать количество мест, вот пусть он и считает, зачем ты предлагаешь обрабатывать уже PHP массив на выходе?
Так в админке в этом компоненте все считает, а на сайте при выводе этого же кода не хочет выводить хоть какой результат.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: PHP
« Ответ #12 : 25.01.2018, 00:22:11 »
Ну так видимо в админке в SQL запросе и отрабатывает sum(seats), но вы то предлагаете разбирать ваш кастомный код, потому и спросил - зачем сумму искать в выходящем массиве но не сразу получать из запроса одной строкой
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

gm35

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: PHP
« Ответ #13 : 25.01.2018, 00:33:06 »
Ну так видимо в админке в SQL запросе и отрабатывает sum(seats), но вы то предлагаете разбирать ваш кастомный код, потому и спросил - зачем сумму искать в выходящем массиве но не сразу получать из запроса одной строкой
Понял теперь, значит надо напрямую. Только вот он запрашивает id определенного события потом seats потом tickets и user_tickets,  то есть не из одного места данные берет. Там в этом компоненте есть билет или билеты в этих белетах есть места. Но при бронировании он не вычитает из этих мест. А получается из определенного события со своим id берет билет, берет места складывает их и вычитает из них другой запрос какой пользователь забронировал место. По этому я подумал что тут масло маслено и не стал изменять код основательно а задал вопрос с суммой этих билетов тут. 
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Re: PHP
« Ответ #14 : 25.01.2018, 00:37:30 »
gm35 мне трудно дать готовый ответ не видя и не зная базы, но с подобными вещами хорошо знаком.
Нам нужно сделать SELECT SUM(что-то) FROM и вот тут дальше пошли либо цеплять джойнами нужные таблицы либо в WHERE можно еще подзапросами делать.
В любом случае на мой взгляд подобную вещь (количество свободных мест на событие с учетом уже выкупленных билетов) надо делать именно на уровне MySQL, а не вытягивать кучу данных в запросе и потом на PHP их обрабатывать - вот именно это получается масло масляное.

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

Но хотя костыли тоже вещь, если вопрос решен - это главное, красота кода уже потом. Ну а оптимизация скорости вообще редко важно экономить миллисекунды.
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: PHP
« Ответ #15 : 25.01.2018, 01:33:07 »
dmitry_stas - а неправильней ли делать SUM(seats) на уровне запроса из базы? Так понимаю что запрос должен отдать количество мест, вот пусть он и считает, зачем ты предлагаешь обрабатывать уже PHP массив на выходе?
та я вроде такого не предлагал :) наоборот уточнил что нельзя суммировать, потому что в массиве там не только числа.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться